|
@@ -11,12 +11,18 @@ import com.management.platform.mapper.ContractBonusSummaryMapper;
|
|
|
import com.management.platform.mapper.UserMapper;
|
|
|
import com.management.platform.service.ContractBonusSummaryService;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
+import com.management.platform.util.ListUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Service
|
|
@@ -65,7 +71,77 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg generateNegativeContractBonus(String ids, HttpServletRequest request) {
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+ if(StringUtils.isBlank(ids)){
|
|
|
+ httpRespMsg.setError("id不能为空");
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+ List<Integer> idList = ListUtil.convertIntegerIdsArrayToList(ids);
|
|
|
+ List<ContractBonusSummary> list = contractBonusSummaryMapper.selectBatchIds(idList);
|
|
|
+ for (ContractBonusSummary contractBonusSummary : list) {
|
|
|
+ //查找是否已经存在生成的负数核销数据
|
|
|
+ ContractBonusSummary existSummary = contractBonusSummaryMapper.selectOne(new LambdaQueryWrapper<ContractBonusSummary>()
|
|
|
+ .eq(ContractBonusSummary::getYear,contractBonusSummary.getYear())
|
|
|
+ .eq(ContractBonusSummary::getBonusType,contractBonusSummary.getBonusType())
|
|
|
+ .eq(ContractBonusSummary::getIsNegative,true)
|
|
|
+ .eq(ContractBonusSummary::getCompanyId,contractBonusSummary.getCompanyId())
|
|
|
+ );
|
|
|
+ if(null != existSummary){
|
|
|
+ BigDecimal negativeValue = contractBonusSummary.getTotalBonusValue().multiply(new BigDecimal(-1));
|
|
|
+ if (negativeValue.compareTo(existSummary.getTotalBonusValue()) != 0) {
|
|
|
+ //金额发生变动,需要更新
|
|
|
+ existSummary.setTotalBonusValue(contractBonusSummary.getTotalBonusValue().multiply(new BigDecimal(-1)));
|
|
|
+ existSummary.setCreateTime(new Date());
|
|
|
+ contractBonusSummaryMapper.updateById(existSummary);
|
|
|
+ //更新核销明细,删除后重新生成
|
|
|
+ contractBonusDetailMapper.delete(new LambdaQueryWrapper<ContractBonusDetail>().eq(ContractBonusDetail::getYear,contractBonusSummary.getYear())
|
|
|
+ .eq(ContractBonusDetail::getBonusType,contractBonusSummary.getBonusType())
|
|
|
+ .between(ContractBonusDetail::getYm,contractBonusSummary.getStartYM(),contractBonusSummary.getEndYM())
|
|
|
+ .eq(ContractBonusDetail::getIsNagative,true)
|
|
|
+ .eq(ContractBonusDetail::getCompanyId,contractBonusSummary.getCompanyId()));
|
|
|
+ insertContractNegativeDetail(contractBonusSummary);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ contractBonusSummary.setId(null);
|
|
|
+ contractBonusSummary.setIsNegative(true);
|
|
|
+ contractBonusSummary.setTotalBonusValue(contractBonusSummary.getTotalBonusValue().multiply(new BigDecimal(-1)));
|
|
|
+ contractBonusSummary.setCreateTime(null);
|
|
|
+ contractBonusSummaryMapper.insert(contractBonusSummary);
|
|
|
+ insertContractNegativeDetail(contractBonusSummary);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+
|
|
|
+ //生成负数核销详情
|
|
|
+ private void insertContractNegativeDetail(ContractBonusSummary contractBonusSummary) {
|
|
|
+ //查询出正数的奖金记录
|
|
|
+ List<ContractBonusDetail> contractBonusDetailList = contractBonusDetailMapper.selectList(new LambdaQueryWrapper<ContractBonusDetail>()
|
|
|
+ .eq(ContractBonusDetail::getYear,contractBonusSummary.getYear())
|
|
|
+ .eq(ContractBonusDetail::getBonusType,contractBonusSummary.getBonusType())
|
|
|
+ .between(ContractBonusDetail::getYm,contractBonusSummary.getStartYM(),contractBonusSummary.getEndYM())
|
|
|
+ .eq(ContractBonusDetail::getIsNagative,false)
|
|
|
+ .eq(ContractBonusDetail::getCompanyId,contractBonusSummary.getCompanyId()));
|
|
|
+ for (ContractBonusDetail contractBonusDetail : contractBonusDetailList) {
|
|
|
+ contractBonusDetail.setId(null);
|
|
|
+ contractBonusDetail.setIsNagative(true);
|
|
|
+ contractBonusDetailMapper.insert(contractBonusDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getBonusSummaryByYear(String year, String bonusType, HttpServletRequest request) {
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+ User user = userMapper.selectById(request.getHeader("TOKEN"));
|
|
|
+ List<ContractBonusSummary> resList = contractBonusSummaryMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<ContractBonusSummary>().eq(ContractBonusSummary::getYear,year).eq(ContractBonusSummary::getBonusType,bonusType)
|
|
|
+ .eq(ContractBonusSummary::getCompanyId,user.getCompanyId()).eq(ContractBonusSummary::getIsNegative,false));
|
|
|
+ httpRespMsg.setData(resList);
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
}
|