QuYueTing vor 3 Wochen
Ursprung
Commit
b627ef9c6b

+ 5 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractBonusDetailController.java

@@ -3,6 +3,7 @@ package com.management.platform.controller;
 import com.management.platform.service.ContractBonusDetailService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -38,10 +39,10 @@ public class ContractBonusDetailController {
     /**获取合同主体奖金*/
     @PostMapping("/getContractBonus")
     public HttpRespMsg getContractBonus(@RequestParam(value = "year")Integer year
-            , HttpServletRequest request) {
+            , Boolean isNegative,String bonusType, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
-            httpRespMsg = contractBonusDetailService.getContractBonus(year,request);
+            httpRespMsg = contractBonusDetailService.getContractBonus(year,isNegative, bonusType,request);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -49,10 +50,9 @@ public class ContractBonusDetailController {
     }
 
     @PostMapping("/exportContractBonus")
-    public void exportContractBonus(@RequestParam(value = "year")Integer year
-            , HttpServletRequest request, HttpServletResponse response) {
+    public void exportContractBonus(@RequestParam(value = "year")Integer year, Boolean isNegative,String bonusType, HttpServletRequest request, HttpServletResponse response) {
         try {
-           contractBonusDetailService.exportContractBonus(year,request,response);
+           contractBonusDetailService.exportContractBonus(year,isNegative, bonusType,request,response);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 32 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractBonusSummaryController.java

@@ -30,6 +30,26 @@ public class ContractBonusSummaryController {
         return httpRespMsg;
     }
 
+
+    /**
+     * 获取上传的正数奖金分摊列表,按年份和奖金类型查询
+     * @param year
+     * @param bonusType
+     * @param request
+     * @return
+     */
+    @PostMapping("/getBonusSummaryByYear")
+    public HttpRespMsg getBonusSummaryByYear(@RequestParam(value = "year")String year, String bonusType, HttpServletRequest request){
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            httpRespMsg = contractBonusSummaryService.getBonusSummaryByYear(year,bonusType, request);
+        } catch (Exception e) {
+            e.printStackTrace();
+            httpRespMsg.setError(MessageUtils.message("other.error"));
+        }
+        return httpRespMsg;
+    }
+
     /**删除奖金概要数据【级联】*/
     @PostMapping("/deleteBonusSummary")
     public HttpRespMsg deleteBonusSummary(String ids, HttpServletRequest request){
@@ -43,4 +63,16 @@ public class ContractBonusSummaryController {
         return httpRespMsg;
     }
 
+    @PostMapping("/generateNegativeContractBonus")
+    public HttpRespMsg generateNegativeContractBonus(String ids, HttpServletRequest request){
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            httpRespMsg = contractBonusSummaryService.generateNegativeContractBonus(ids,request);
+        } catch (Exception e) {
+            e.printStackTrace();
+            httpRespMsg.setError(MessageUtils.message("other.error"));
+        }
+        return httpRespMsg;
+    }
+
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ContractBonusDetailMapper.java

@@ -11,7 +11,7 @@ import java.util.List;
 public interface ContractBonusDetailMapper extends BaseMapper<ContractBonusDetail> {
     void batchInsert(@Param("toAddList") List<ContractBonusDetail> toAddBonusDetailList);
 
-    List<ProjectContractBonusExcelHead> getExportContractProjectBonusForSpecial(Integer year, Integer companyId);
+    List<ProjectContractBonusExcelHead> getExportContractProjectBonusForSpecial(Integer year, Integer companyId, Boolean isNegative, String bonusType);
 
-    List<ContractBonusDetailVO> getExportContractProjectBonusForCommon(@Param("companyId") Integer companyId, @Param("year") Integer year);
+    List<ContractBonusDetailVO> getExportContractProjectBonusForCommon(@Param("companyId") Integer companyId, @Param("year") Integer year, Boolean isNegative, String bonusType);
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractBonusDetailService.java

@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
 public interface ContractBonusDetailService extends IService<ContractBonusDetail> {
     HttpRespMsg transTemplateData(String startYM, String endYM, String bonusType, MultipartFile file, HttpServletRequest request);
 
-    HttpRespMsg getContractBonus(Integer year, HttpServletRequest request);
+    HttpRespMsg getContractBonus(Integer year, Boolean isNegative,String bonusType, HttpServletRequest request);
 
-    void exportContractBonus(Integer year, HttpServletRequest request, HttpServletResponse response);
+    void exportContractBonus(Integer year, Boolean isNegative,String bonusType, HttpServletRequest request, HttpServletResponse response);
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractBonusSummaryService.java

@@ -10,4 +10,8 @@ public interface ContractBonusSummaryService extends IService<ContractBonusSumma
     HttpRespMsg getBonusSummary(String ym, HttpServletRequest request);
 
     HttpRespMsg deleteBonusSummary(String ids, HttpServletRequest request);
+
+    HttpRespMsg generateNegativeContractBonus(String ids, HttpServletRequest request);
+
+    HttpRespMsg getBonusSummaryByYear(String year, String bonusType, HttpServletRequest request);
 }

+ 5 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractBonusDetailServiceImpl.java

@@ -445,19 +445,19 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
     }
 
     @Override
-    public HttpRespMsg getContractBonus(Integer year, HttpServletRequest request) {
+    public HttpRespMsg getContractBonus(Integer year, Boolean isNegative,String bonusType, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("TOKEN"));
         if(null ==user){
             httpRespMsg.setError("登录凭证有误,请联系管理员");
         }
-        List<ProjectContractBonusExcelHead> contractProjectBonusList=contractBonusDetailMapper.getExportContractProjectBonusForSpecial(year,user.getCompanyId());
+        List<ProjectContractBonusExcelHead> contractProjectBonusList=contractBonusDetailMapper.getExportContractProjectBonusForSpecial(year,user.getCompanyId(),null, null);
         httpRespMsg.setData(contractProjectBonusList);
         return httpRespMsg;
     }
 
     @Override
-    public void exportContractBonus(Integer year, HttpServletRequest request, HttpServletResponse response) {
+    public void exportContractBonus(Integer year, Boolean isNegative,String bonusType,HttpServletRequest request, HttpServletResponse response) {
         User user = userMapper.selectById(request.getHeader("TOKEN"));
         if(null ==user){
             response.setContentType("application/json;charset=UTF-8");
@@ -477,7 +477,7 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
         response.setContentType("application/vnd.ms-excel;chartset=utf-8");
         response.setHeader("Content-Disposition", "attachment;filename=" + null==fileName?"file":fileName);
         if(7737 == user.getCompanyId()){
-            List<ProjectContractBonusExcelHead> dataList=contractBonusDetailMapper.getExportContractProjectBonusForSpecial(year,user.getCompanyId());
+            List<ProjectContractBonusExcelHead> dataList=contractBonusDetailMapper.getExportContractProjectBonusForSpecial(year,user.getCompanyId(), isNegative,bonusType);
             try (ServletOutputStream outputStream = response.getOutputStream()){
                 EasyExcel.write(outputStream, ProjectContractBonusExcelHead.class)
                         .excelType(ExcelTypeEnum.XLSX)
@@ -513,7 +513,7 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
             headList.add("年月");
             allDatas.add(headList);
 
-            List<ContractBonusDetailVO> contractBonusDetails = contractBonusDetailMapper.getExportContractProjectBonusForCommon(user.getCompanyId(),year);
+            List<ContractBonusDetailVO> contractBonusDetails = contractBonusDetailMapper.getExportContractProjectBonusForCommon(user.getCompanyId(),year, isNegative,bonusType);
             for (ContractBonusDetailVO detailVO : contractBonusDetails) {
                 List<String> rowData = new ArrayList<>();
                 if(checkExt1Exist){

+ 76 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractBonusSummaryServiceImpl.java

@@ -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;
     }
 }

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractBonusDetailMapper.xml

@@ -64,6 +64,12 @@
                          select contract,bonus_type,project_id,sum(bonus_value) as bonus
                          from contract_bonus_detail
                          where year = #{year} and company_id = #{companyId}
+                         <if test="isNegative != null">
+                             and is_negative = #{isNegative}
+                         </if>
+                         <if test="bonusType != null">
+                             and bonus_type = #{bonusType}
+                         </if>
                          group by contract,bonus_type,project_id
                      )tmp2 group by contract, project_id
             )tmp1
@@ -79,6 +85,12 @@
                  left join user u on cbd.user_id = u.id
                  left join project p on cbd.project_id = p.id
         where cbd.company_id = #{companyId} and cbd.year = #{year}
+        <if test="isNegative != null">
+            and is_negative = #{isNegative}
+        </if>
+        <if test="bonusType != null">
+            and bonus_type = #{bonusType}
+        </if>
     </select>
 
 </mapper>