Browse Source

大中型在撰写节点添加估价对象以及取号合并号

wucl 10 months ago
parent
commit
c3f2a9d9c3

+ 12 - 0
biz-base/src/main/java/com/dayou/controller/MajorTargetController.java

@@ -1,5 +1,6 @@
 package com.dayou.controller;
 
+import com.dayou.dto.MajorTargetMergeNumberDTO;
 import com.dayou.dto.TakeNumberDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.service.IMajorTargetService;
@@ -98,5 +99,16 @@ public class MajorTargetController extends BaseController {
         String ret = majorTargetService.takeNumber(takeNumberDTO);
         return RestResponse.data(ret);
     }
+
+    /**
+     * 估价对象合并到已取的号中
+     * @param mergeDTO
+     * @return
+     */
+    @PostMapping("/merge")
+    public RestResponse<Boolean> mergeNumber(@RequestBody @Valid MajorTargetMergeNumberDTO mergeDTO){
+        Boolean ret =majorTargetService.mergeNumber(mergeDTO);
+        return RestResponse.data(ret);
+    }
 }
 

+ 4 - 2
dao/src/main/java/com/dayou/mapper/MajorTargetMapper.java

@@ -18,11 +18,11 @@ import java.util.Set;
  */
 public interface MajorTargetMapper extends CustomBaseMapper<MajorTarget> {
 
-    void updateSubReportNo(@Param("list") List<IdNameVO> list);
+    void updateSubReportNo(@Param("list") List<IdNameVO> list,@Param("exist") String statementNo);
 
     void updateSubStatementNo(@Param("list") List<IdNameVO> list);
 
-    void updateSubLetterNo(@Param("list") List<IdNameVO> list);
+    void updateSubLetterNo(@Param("list") List<IdNameVO> list,@Param("exist") String statementNo);
 
     void updateMainReportNo(@Param("mainNumber") String mainNumber, @Param("businessId")Long businessId,@Param("statementNo")String statementNo);
 
@@ -37,4 +37,6 @@ public interface MajorTargetMapper extends CustomBaseMapper<MajorTarget> {
     void cleanSubReportNo(@Param("set") Set<String> reportNos);
 
     void cleanSubLetterNo(@Param("set") Set<String> letterNos);
+
+    List<MajorTarget> getList(@Param("vo") MajorTarget majorTarget);
 }

+ 18 - 2
dao/src/main/resources/mapper/MajorTargetMapper.xml

@@ -4,7 +4,7 @@
 
     <update id="updateSubReportNo" parameterType="com.dayou.vo.IdNameVO">
         <foreach collection="list" index="index" item="item" separator=";">
-            update major_target set report_no = #{item.name} where id = #{item.id} and deleted = 0
+            update major_target set report_no = #{item.name},statement_no= #{exist} where id = #{item.id} and deleted = 0
         </foreach>
     </update>
 
@@ -16,7 +16,7 @@
 
     <update id="updateSubLetterNo" parameterType="com.dayou.vo.IdNameVO">
         <foreach collection="list" index="index" item="item" separator=";">
-            update major_target set letter_no = #{item.name} where id = #{item.id} and deleted = 0
+            update major_target set letter_no = #{item.name},statement_no = #{exist} where id = #{item.id} and deleted = 0
         </foreach>
     </update>
 
@@ -75,4 +75,20 @@
         </foreach>
         )
     </update>
+
+    <select id="getList" parameterType="com.dayou.entity.MajorTarget" resultType="com.dayou.entity.MajorTarget">
+        select * from major_target where deleted = 0 and major_id = #{vo.majorId}
+        <if test="vo!=null and vo.statementNo!=null and vo.statementNo!=''">
+            and statement_no = #{vo.statementNo}
+        </if>
+        <if test="vo!=null and vo.reportNo!=null and vo.reportNo!=''">
+            and report_no = #{vo.reportNo}
+        </if>
+        <if test="vo!=null and vo.letterNo!=null and vo.letterNo!=''">
+            and letter_no = #{vo.letterNo}
+        </if>
+        or (
+        major_id = #{vo.majorId} and statement_no is null and report_no is null and letter_no is null
+        )
+    </select>
 </mapper>

+ 22 - 0
domain/src/main/java/com/dayou/dto/MajorTargetMergeNumberDTO.java

@@ -0,0 +1,22 @@
+package com.dayou.dto;
+
+import com.github.liangbaika.validate.annations.AbcValidate;
+import com.github.liangbaika.validate.enums.Check;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MajorTargetMergeNumberDTO {
+
+    @AbcValidate(required = true,message = "合并号码类型为空",fun= Check.NotEmpty)
+    private String mergeType;
+
+    @AbcValidate(required = true,message = "合并号码为空",fun= Check.NotEmpty)
+    private String toMergeNumber;
+
+    @AbcValidate(required = true,message = "估价对象为空",fun= Check.NotNull)
+    private List<Long> targetIds;
+
+
+}

+ 5 - 0
domain/src/main/java/com/dayou/dto/TakeNumberDTO.java

@@ -52,4 +52,9 @@ public class TakeNumberDTO {
      * 订单号(流水号)
      */
     private String orderId;
+
+    /**
+     * 已取的价值意见书号
+     */
+    private String statementNo;
 }

+ 3 - 0
service/src/main/java/com/dayou/service/IMajorTargetService.java

@@ -1,4 +1,5 @@
 package com.dayou.service;
+import com.dayou.dto.MajorTargetMergeNumberDTO;
 import com.dayou.dto.TakeNumberDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.MajorTarget;
@@ -34,4 +35,6 @@ public interface IMajorTargetService extends IService<MajorTarget> {
         String majorTakeStatementNo(TakeNumberDTO takeNumberDTO);
 
         String majorTakeLetterNo(TakeNumberDTO takeNumberDTO);
+
+    Boolean mergeNumber(MajorTargetMergeNumberDTO mergeDTO);
 }

+ 44 - 12
service/src/main/java/com/dayou/service/impl/MajorTargetServiceImpl.java

@@ -3,8 +3,10 @@ package com.dayou.service.impl;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.MajorTargetMergeNumberDTO;
 import com.dayou.dto.TakeNumberDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.MajorTarget;
@@ -26,6 +28,8 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import static com.dayou.enums.ProductionEnum.*;
+
 /**
  * <p>
  * 大中型项目评估对象 服务实现类
@@ -49,12 +53,14 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
 
     @Override
     public List<MajorTarget> getList(MajorTarget majorTarget){
-        return this.list(new LambdaQueryWrapper<MajorTarget>().eq(MajorTarget::getMajorId,majorTarget.getMajorId())
-                        .eq(StrUtil.isNotEmpty(majorTarget.getStatementNo()), MajorTarget::getStatementNo,majorTarget.getStatementNo())
-                        .eq(StrUtil.isNotEmpty(majorTarget.getReportNo()), MajorTarget::getReportNo,majorTarget.getReportNo())
-                        .eq(StrUtil.isNotEmpty(majorTarget.getLetterNo()), MajorTarget::getLetterNo,majorTarget.getLetterNo())
-                        .eq(BaseEntity::getDeleted,Boolean.FALSE)
-                .orderByAsc(BaseEntity::getCreated));
+//        return this.list(new LambdaQueryWrapper<MajorTarget>().eq(MajorTarget::getMajorId,majorTarget.getMajorId())
+//                        .eq(StrUtil.isNotEmpty(majorTarget.getStatementNo()), MajorTarget::getStatementNo,majorTarget.getStatementNo())
+//                        .eq(StrUtil.isNotEmpty(majorTarget.getReportNo()), MajorTarget::getReportNo,majorTarget.getReportNo())
+//                        .eq(StrUtil.isNotEmpty(majorTarget.getLetterNo()), MajorTarget::getLetterNo,majorTarget.getLetterNo())
+//                        .eq(BaseEntity::getDeleted,Boolean.FALSE)
+//                .orderByAsc(BaseEntity::getCreated));
+        List<MajorTarget> list = majorTargetMapper.getList(majorTarget);
+        return list;
     }
 
 
@@ -93,13 +99,13 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
     @Override
     public synchronized String takeNumber(TakeNumberDTO takeNumberDTO) {
         ProductionEnum productionType = takeNumberDTO.getProductionType();
-        if (productionType.equals(ProductionEnum.STATEMENT)){
+        if (productionType.equals(STATEMENT)){
             return majorTargetService.majorTakeStatementNo(takeNumberDTO);
         }
         if (productionType.equals(ProductionEnum.REPORT)){
             return majorTargetService.majorTakeReportNo(takeNumberDTO);
         }
-        if (productionType.equals(ProductionEnum.LETTER)){
+        if (productionType.equals(LETTER)){
             return  majorTargetService.majorTakeLetterNo(takeNumberDTO);
         }
         return null;
@@ -150,6 +156,7 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
     public String majorTakeReportNo(TakeNumberDTO takeNumberDTO){
         Long businessId = takeNumberDTO.getBusinessId();
         List<IdNameVO> takeNumberTargets = takeNumberDTO.getTargets();
+        String existStatementNo = takeNumberDTO.getStatementNo();
         //如果选择不同的价值意见书号,来取同一个报告号。则不允许,此处selectedTargetStatementNos的size只能是1
         List<String> selectedTargetStatementNos = takeNumberTargets.stream()
                 .filter(x->StrUtil.isNotBlank(x.getName())).map(IdNameVO::getName).distinct().collect(Collectors.toList());
@@ -176,12 +183,12 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
                 List<MajorTarget> sorted = taken.stream().sorted((t1, t2) -> t2.getReportNo().compareTo(t1.getReportNo())).collect(Collectors.toList());
                 if (CollectionUtils.isEmpty(taken)){
                     List<IdNameVO> subNumbers = businessNumberService.takeSubNumber(takeNumberDTO,null);
-                    majorTargetMapper.updateSubReportNo(subNumbers);
+                    majorTargetMapper.updateSubReportNo(subNumbers,existStatementNo);
                     return subNumbers.get(0).getName();
                 }else {
                     //已取过主号,后续取子号主号都一致。
                     List<IdNameVO> subNumbers = businessNumberService.takeSubNumber(takeNumberDTO,sorted.get(0).getReportNo());
-                    majorTargetMapper.updateSubReportNo(subNumbers);
+                    majorTargetMapper.updateSubReportNo(subNumbers,existStatementNo);
                     return subNumbers.get(0).getName();
                 }
             }else {
@@ -199,6 +206,7 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
     public String majorTakeLetterNo(TakeNumberDTO takeNumberDTO){
         Long businessId = takeNumberDTO.getBusinessId();
         List<IdNameVO> takeNumberTargets = takeNumberDTO.getTargets();
+        String existStatementNo = takeNumberDTO.getStatementNo();
         String orderId = takeNumberDTO.getOrderId();
         TakeNumberEnum takeType = takeNumberDTO.getTakeType();
         //如果选择不同的价值意见书号,来取同一个复评函号。则不允许,此处selectedTargetStatementNos的size只能是1
@@ -227,12 +235,12 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
                 List<MajorTarget> sorted = taken.stream().sorted((t1, t2) -> t2.getLetterNo().compareTo(t1.getLetterNo())).collect(Collectors.toList());
                 if (CollectionUtils.isEmpty(taken)){
                     List<IdNameVO> subNumbers = businessNumberService.takeLetterSubNumber(orderId,takeType,null,takeNumberDTO.getTargets());
-                    majorTargetMapper.updateSubLetterNo(subNumbers);
+                    majorTargetMapper.updateSubLetterNo(subNumbers,existStatementNo);
                     return subNumbers.get(0).getName();
                 }else {
                     //已取过主号,后续取子号主号都一致。
                     List<IdNameVO> subNumbers = businessNumberService.takeLetterSubNumber(orderId,takeType,sorted.get(0).getLetterNo(),takeNumberDTO.getTargets());
-                    majorTargetMapper.updateSubLetterNo(subNumbers);
+                    majorTargetMapper.updateSubLetterNo(subNumbers,existStatementNo);
                     return subNumbers.get(0).getName();
                 }
             }else {
@@ -245,4 +253,28 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
         return null;
     }
 
+    @Override
+    public Boolean mergeNumber(MajorTargetMergeNumberDTO mergeDTO) {
+        String mergeType = mergeDTO.getMergeType();
+        String toMergeNumber = mergeDTO.getToMergeNumber();
+        List<Long> targetIds = mergeDTO.getTargetIds();
+        if (mergeType.equals(STATEMENT.name())){
+            return this.update(new LambdaUpdateWrapper<MajorTarget>().set(MajorTarget::getStatementNo,toMergeNumber)
+                    .in(BaseEntity::getId,targetIds));
+        }
+        if (mergeType.equals(REPORT.name())){
+            MajorTarget one = this.list(new LambdaQueryWrapper<MajorTarget>().eq(MajorTarget::getReportNo, toMergeNumber)).get(0);
+            return this.update(new LambdaUpdateWrapper<MajorTarget>().set(MajorTarget::getStatementNo,one.getStatementNo())
+                            .set(MajorTarget::getReportNo,toMergeNumber)
+                    .in(BaseEntity::getId,targetIds));
+        }
+        if (mergeType.equals(LETTER.name())){
+            MajorTarget one = this.list(new LambdaQueryWrapper<MajorTarget>().eq(MajorTarget::getLetterNo, toMergeNumber)).get(0);
+            return this.update(new LambdaUpdateWrapper<MajorTarget>().set(MajorTarget::getStatementNo,one.getStatementNo())
+                    .set(MajorTarget::getLetterNo,toMergeNumber)
+                    .in(BaseEntity::getId,targetIds));
+        }
+        return Boolean.FALSE;
+    }
+
 }