QuYueTing 2 週間 前
コミット
e2dbf4ad38

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractBonusDetail.java

@@ -33,8 +33,8 @@ public class ContractBonusDetail extends Model<ContractBonusDetail> {
     /**
      * 主键id
      */
-    @TableId("id")
-    private Long id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      * 公司表外键
@@ -117,8 +117,8 @@ public class ContractBonusDetail extends Model<ContractBonusDetail> {
     /**
      * 是否为冲销数据
      */
-    @TableField("is_nagative")
-    private Boolean isNagative;
+    @TableField("is_negative")
+    private Boolean isNegative;
 
 
     @Override

+ 25 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ContractBonusSummary.java

@@ -1,29 +1,40 @@
 package com.management.platform.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
+/**
+ * <p>
+ * 分摊奖金汇总
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-06-16
+ */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 public class ContractBonusSummary extends Model<ContractBonusSummary> {
+
     private static final long serialVersionUID=1L;
 
     /**
      * 主键id
      */
-    @TableId("id")
-    private Long id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      * 公司表外键
@@ -90,13 +101,18 @@ public class ContractBonusSummary extends Model<ContractBonusSummary> {
     @TableField("is_negative")
     private Boolean isNegative;
 
+    /**
+     * 是否已核销
+     */
+    @TableField("is_write_off")
+    private Boolean isWriteOff;
+
     @TableField(exist = false)
     private String jobNumber;
 
     @TableField(exist = false)
     private String userName;
 
-
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/ContractBonusSummaryVO.java

@@ -75,4 +75,9 @@ public class ContractBonusSummaryVO {
      * 是否为负数
      */
     private String isNegative;
+
+    /**
+     * 是否已核销
+     */
+    private Boolean isWriteOff;
 }

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

@@ -12,6 +12,7 @@ import com.management.platform.entity.excel.ProjectContractBonusExcelHead;
 import com.management.platform.entity.vo.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.ContractBonusDetailService;
+import com.management.platform.service.ContractBonusSummaryService;
 import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
@@ -21,6 +22,7 @@ import com.management.platform.util.converter.ExcelTemplateTransUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -60,6 +62,9 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
     @Resource
     private ContractBonusSummaryMapper contractBonusSummaryMapper;
 
+    @Resource
+    private ContractBonusSummaryService contractBonusSummaryService;
+
     @Resource
     private BonusExcludeProjectMapper bonusExcludeProjectMapper;
 
@@ -77,6 +82,9 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
         bonusTypeMap.put(7,"全年奖");
     }
 
+    @Autowired
+    private ContractBonusDetailService contractBonusDetailService;
+
     @Override
     @Transactional
     public HttpRespMsg transTemplateData(String startYM, String endYM, String bonusType
@@ -431,10 +439,10 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
                     toAddSummaryList.add(contractBonusSummary);
                 });
                 if(CollectionUtils.isNotEmpty(toAddSummaryList)){
-                    contractBonusSummaryMapper.batchInsertByImportData(toAddSummaryList);
+                    contractBonusSummaryService.saveBatch(toAddSummaryList);
                 }
                 if(CollectionUtils.isNotEmpty(toAddBonusDetailList)){
-                    contractBonusDetailMapper.batchInsert(toAddBonusDetailList);
+                    contractBonusDetailService.saveBatch(toAddBonusDetailList);
                 }
 
             }
@@ -522,6 +530,7 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
                 rowData.add(detailVO.getUserName());
                 rowData.add(detailVO.getBonusType());
                 rowData.add(detailVO.getProjectName());
+                System.out.println("金额==="+detailVO.getBonusValue());
                 rowData.add(detailVO.getBonusValue().setScale(4, BigDecimal.ROUND_HALF_UP).toString());
                 rowData.add(detailVO.getYm());
                 allDatas.add(rowData);

+ 17 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractBonusSummaryServiceImpl.java

@@ -22,10 +22,7 @@ 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;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -70,6 +67,7 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
                         .eq(ContractBonusDetail::getBonusType,toDelSummary.getBonusType())
                         .eq(ContractBonusDetail::getYear,toDelSummary.getYear())
                         .in(ContractBonusDetail::getUserId,toDelSummary.getUserId())
+                        .eq(ContractBonusDetail::getIsNegative,toDelSummary.getIsNegative())
                 );
             }
         }
@@ -92,6 +90,7 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
                     .eq(ContractBonusSummary::getYear,contractBonusSummary.getYear())
                     .eq(ContractBonusSummary::getBonusType,contractBonusSummary.getBonusType())
                     .eq(ContractBonusSummary::getIsNegative,true)
+                    .eq(ContractBonusSummary::getUserId, contractBonusSummary.getUserId())
                     .eq(ContractBonusSummary::getCompanyId,contractBonusSummary.getCompanyId())
             );
             if(null != existSummary){
@@ -105,7 +104,8 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
                     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::getIsNegative,true)
+                            .eq(ContractBonusDetail::getUserId, contractBonusSummary.getUserId())
                             .eq(ContractBonusDetail::getCompanyId,contractBonusSummary.getCompanyId()));
                     insertContractNegativeDetail(contractBonusSummary);
                 }
@@ -118,6 +118,10 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
                 insertContractNegativeDetail(contractBonusSummary);
             }
         }
+        //更新核销状态
+        ContractBonusSummary updateSummary = new ContractBonusSummary();
+        updateSummary.setIsWriteOff(true);
+        contractBonusSummaryMapper.update(updateSummary,new LambdaQueryWrapper<ContractBonusSummary>().in(ContractBonusSummary::getId,idList));
         return httpRespMsg;
     }
 
@@ -128,11 +132,16 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
                 .eq(ContractBonusDetail::getYear,contractBonusSummary.getYear())
                 .eq(ContractBonusDetail::getBonusType,contractBonusSummary.getBonusType())
                 .between(ContractBonusDetail::getYm,contractBonusSummary.getStartYM(),contractBonusSummary.getEndYM())
-                .eq(ContractBonusDetail::getIsNagative,false)
+                .eq(ContractBonusDetail::getIsNegative,false)
+                .eq(ContractBonusDetail::getUserId, contractBonusSummary.getUserId())
                 .eq(ContractBonusDetail::getCompanyId,contractBonusSummary.getCompanyId()));
+        System.out.println("contractBonusDetailList.size()======="+contractBonusDetailList.size());
         for (ContractBonusDetail contractBonusDetail : contractBonusDetailList) {
             contractBonusDetail.setId(null);
-            contractBonusDetail.setIsNagative(true);
+            contractBonusDetail.setIsNegative(true);
+            //金额变成负数
+            contractBonusDetail.setBonusValue(contractBonusDetail.getBonusValue().multiply(new BigDecimal(-1)));
+            contractBonusDetail.setTotalBonusValue(contractBonusDetail.getTotalBonusValue().multiply(new BigDecimal(-1)));
             contractBonusDetailMapper.insert(contractBonusDetail);
         }
     }
@@ -142,7 +151,7 @@ public class ContractBonusSummaryServiceImpl extends ServiceImpl<ContractBonusSu
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("TOKEN"));
         LambdaQueryWrapper<ContractBonusSummary> queryWrapper = new LambdaQueryWrapper<ContractBonusSummary>().eq(ContractBonusSummary::getYear,year)
-                .eq(ContractBonusSummary::getCompanyId,user.getCompanyId()).eq(ContractBonusSummary::getIsNegative,false);
+                .eq(ContractBonusSummary::getCompanyId,user.getCompanyId()).eq(ContractBonusSummary::getIsNegative,false).eq(ContractBonusSummary::getIsWriteOff,false);
 
         if (StringUtils.isNotBlank(bonusType)) {
             queryWrapper.eq(ContractBonusSummary::getBonusType,bonusType);

+ 3 - 26
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractBonusDetailMapper.xml

@@ -18,36 +18,13 @@
         <result column="month" property="month" />
         <result column="create_by" property="createBy" />
         <result column="create_time" property="createTime" />
-        <result column="is_nagative" property="isNagative" />
+        <result column="is_negative" property="isNegative" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, user_id, contract, project_id, project_working_time, bonus_type, bonus_value, total_bonus_value, ym, year, month, create_by, create_time, is_nagative
+        id, company_id, user_id, contract, project_id, project_working_time, bonus_type, bonus_value, total_bonus_value, ym, year, month, create_by, create_time, is_negative
     </sql>
-
-    <insert id="batchInsert">
-        insert into contract_bonus_detail(company_id, user_id, contract, project_id,project_working_time, bonus_type, bonus_value
-        , total_bonus_value, ym, year, month, create_by, create_time)
-        VALUES
-        <foreach collection="toAddList" item="detail" separator=",">
-            (#{detail.companyId},#{detail.userId},#{detail.contract},#{detail.projectId},#{detail.projectWorkingTime},#{detail.bonusType}
-            ,#{detail.bonusValue},#{detail.totalBonusValue},#{detail.ym},#{detail.year},null,#{detail.createBy},now())
-        </foreach>
-
-    </insert>
-
-
-    <!--    <resultMap id="contractProjectBonus" type="com.management.platform.entity.vo.ContractProjectBonusVO">-->
-    <!--        <result property="contract" column="contract"></result>-->
-    <!--        <collection property="projectBonusList" ofType="com.management.platform.entity.vo.ProjectBonusVO">-->
-    <!--            <result property="projectId" column="projectId"></result>-->
-    <!--            <result property="projectName" column="projectName"></result>-->
-    <!--            <result property="bonus" column="bonus"></result>-->
-    <!--            <result property="bonusType" column="bonusType"></result>-->
-    <!--        </collection>-->
-    <!--    </resultMap>-->
-
     <select id="getExportContractProjectBonusForSpecial" resultType="com.management.platform.entity.excel.ProjectContractBonusExcelHead">
         select tmp1.*,p.project_name as projectName
         from
@@ -80,7 +57,7 @@
             resultType="com.management.platform.entity.vo.ContractBonusDetailVO">
         select cbd.id, cbd.company_id, cbd.user_id, cbd.contract, cbd.project_id, cbd.project_working_time, cbd.bonus_type
              , cbd.bonus_value, cbd.total_bonus_value, cbd.ym, cbd.year, cbd.month, cbd.create_by, cbd.create_time
-             ,u.name as userName,p.project_name, cbd.is_nagative
+             ,u.name as userName,p.project_name, cbd.is_negative
         from contract_bonus_detail cbd
                  left join user u on cbd.user_id = u.id
                  left join project p on cbd.project_id = p.id

+ 14 - 22
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractBonusSummaryMapper.xml

@@ -16,37 +16,29 @@
         <result column="create_by" property="createBy" />
         <result column="create_time" property="createTime" />
         <result column="is_negative" property="isNegative" />
+        <result column="is_write_off" property="isWriteOff" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, contract, user_id, bonus_type, total_bonus_value, year, start_ym, end_ym, create_by, create_time, is_negative
+        id, company_id, contract, user_id, bonus_type, total_bonus_value, year, start_ym, end_ym, create_by, create_time, is_negative, is_write_off
     </sql>
-    <insert id="batchInsertByImportData">
-        insert into contract_bonus_summary(company_id,  user_id,contract, bonus_type, total_bonus_value
-        , start_ym, end_ym, create_by, create_time,year) VALUES
-        <foreach collection="toAddList" item="toAddItem" separator=",">
-            (#{toAddItem.companyId},#{toAddItem.userId},#{toAddItem.contract},#{toAddItem.bonusType},#{toAddItem.totalBonusValue},
-            #{toAddItem.startYM},#{toAddItem.endYM},#{toAddItem.createBy},now(),#{toAddItem.year})
-        </foreach>
-    </insert>
-
     <select id="getBonusSummary" resultType="com.management.platform.entity.vo.ContractBonusSummaryVO">
         select cbs.id, cbs.company_id, cbs.contract, cbs.user_id, cbs.bonus_type, cbs.total_bonus_value
-             , cbs.year, cbs.start_ym, cbs.end_ym, cbs.create_by, cbs.create_time
-             , u.job_number,u.name as userName,cbs.is_negative
+        , cbs.year, cbs.start_ym, cbs.end_ym, cbs.create_by, cbs.create_time
+        , u.job_number,u.name as userName,cbs.is_negative,cbs.is_write_off
         from contract_bonus_summary cbs
-                 left join user u on cbs.user_id = u.id
+        left join user u on cbs.user_id = u.id
         where
-            cbs.year = substr(#{ym},1,4)  and cbs.company_id = #{companyId}
-          and substr(cbs.start_ym,6,7) &lt;= substr(#{ym},6,7)
-          and substr(cbs.end_ym,6,7) &gt;= substr(#{ym},6,7)
-            <if test="isNegative != null">
-                and is_negative = #{isNegative}
-            </if>
-            <if test="bonusType != null">
-                and bonus_type = #{bonusType}
-            </if>
+        cbs.year = substr(#{ym},1,4)  and cbs.company_id = #{companyId}
+        and substr(cbs.start_ym,6,7) &lt;= substr(#{ym},6,7)
+        and substr(cbs.end_ym,6,7) &gt;= substr(#{ym},6,7)
+        <if test="isNegative != null">
+            and is_negative = #{isNegative}
+        </if>
+        <if test="bonusType != null">
+            and bonus_type = #{bonusType}
+        </if>
         order by cbs.user_id
     </select>
 </mapper>