Procházet zdrojové kódy

Merge branch 'master' of http://47.108.172.52:3000/dayou/item-management-1phase

GouGengquan před 5 měsíci
rodič
revize
eb229d455d

+ 44 - 0
biz-base/src/test/java/TakeNumberTest.java

@@ -0,0 +1,44 @@
+//import com.dayou.BaseApplication;
+//import com.dayou.dto.TakeNumberDTO;
+//import com.dayou.enums.MainBusinessEnum;
+//import com.dayou.enums.ProductionEnum;
+//import com.dayou.enums.TakeNumberEnum;
+//import com.dayou.service.IMajorTargetService;
+//import com.dayou.vo.IdNameVO;
+//import lombok.extern.slf4j.Slf4j;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+//import org.junit.Test;
+//
+//import java.util.Arrays;
+//import java.util.List;
+//
+//@Slf4j
+//@SpringBootTest(classes = BaseApplication.class)
+//@RunWith(value = SpringJUnit4ClassRunner.class)
+//public class TakeNumberTest {
+//
+//    @Autowired
+//    private IMajorTargetService majorTargetService;
+//
+//    @Test
+//    public void majorProductionTakeNumberTest(){
+//        TakeNumberDTO takeNumberDTO = new TakeNumberDTO();
+//        takeNumberDTO.setBusinessId(10722L);
+//        takeNumberDTO.setBusinessType(MainBusinessEnum.MAJOR_BUSINESS);
+//        takeNumberDTO.setTakeType(TakeNumberEnum.REALTY_NUMBER);
+//        takeNumberDTO.setProductionType(ProductionEnum.LETTER);
+//        takeNumberDTO.setOrderId("2025010998");
+//        IdNameVO idNameVO = new IdNameVO();
+//        idNameVO.setId(76L);
+////        IdNameVO idNameVO1 = new IdNameVO();
+////        idNameVO1.setId(87L);
+////        idNameVO1.setName("川友房预2025010998-1号");
+//        List<IdNameVO> targets = Arrays.asList(idNameVO);
+//        takeNumberDTO.setTargets(targets);
+//        String takeNo = majorTargetService.majorTakeLetterNo(takeNumberDTO);
+//        log.info(takeNo);
+//    }
+//}

+ 2 - 0
dao/src/main/java/com/dayou/mapper/MajorProductionMapper.java

@@ -61,4 +61,6 @@ public interface MajorProductionMapper extends CustomBaseMapper<MajorProduction>
     Long getSecondCheckId( @Param("businessId")Long businessId, @Param("businessMinId")String businessMinId);
 
     MajorProduction getEvaluateAmountByProductionNo(@Param("toMergeNumber") String toMergeNumber);
+
+    String findMaxLetterNoByBusinessId(@Param("businessId") Long businessId);
 }

+ 2 - 1
dao/src/main/resources/mapper/FinanceRealFundMapper.xml

@@ -1996,7 +1996,8 @@
         claimd.claimAmount,
         claimd.claimDate,
         u.NAME AS creator,
-        u1.NAME AS claimUser
+        u1.NAME AS claimUser,
+        (fr.amount-claimd.claimAmount) as notClaimAmount
         FROM
         (
         SELECT

+ 10 - 0
dao/src/main/resources/mapper/MajorProductionMapper.xml

@@ -818,4 +818,14 @@
             mp.report_no =  #{toMergeNumber} and mp.deleted = 0
 
     </select>
+
+    <select id="findMaxLetterNoByBusinessId" parameterType="java.lang.Long" resultType="java.lang.String">
+        SELECT
+            max( letter_no )
+        FROM
+            major_target
+        WHERE
+            major_id = #{businessId}
+          AND deleted = 0
+    </select>
 </mapper>

+ 1 - 1
dao/src/main/resources/mapper/MajorTargetMapper.xml

@@ -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},statement_no = #{exist} where id = #{item.id} and deleted = 0
+            update major_target set letter_no = #{item.name} where id = #{item.id} and deleted = 0
         </foreach>
     </update>
 

+ 2 - 2
dao/src/main/resources/mapper/PersonalMapper.xml

@@ -132,8 +132,8 @@
         <if test="personal!=null and personal.endDate!=null and personal.endDate!=''">
             and p.created &lt;= #{personal.endDate}
         </if>
-        <if test="personal!=null and personal.nodeCode!=null and personal.nodeCode!=''">
-            and wn.code = #{personal.nodeCode}
+        <if test="personal!=null and personal.nodeId!=null">
+            and wn.id = #{personal.nodeId}
         </if>
         <if test="personal!=null and personal.clientName!=null and personal.clientName!=''">
             and cc1.NAME like concat('%',#{personal.clientName},'%')

+ 1 - 1
dao/src/main/resources/mapper/WorkNodeMapper.xml

@@ -53,7 +53,7 @@
     </select>
 
     <select id="getNodesByMainBusiness" parameterType="java.lang.String" resultType="com.dayou.entity.WorkNode">
-        select name ,code  from work_node where flow_id = (select id from work_flow where code=#{businessType} AND deleted = 0 and state = 0) and deleted = 0
+        select id,name ,code  from work_node where flow_id = (select id from work_flow where code=#{businessType} AND deleted = 0 and state = 0) and deleted = 0
     </select>
 
     <select id="getUniqueNodeByFlowNameAndNodeName" resultMap="flowNodeMap">

+ 9 - 7
dao/src/main/resources/mapper/WorkTaskRecordMapper.xml

@@ -137,7 +137,8 @@
         wfni.business_id ,
         wfni.business_sub_id,
         wfni.business_min_id,
-        wfni.state
+        wfni.state,
+        wfni.node_id
         FROM
         work_flow_node_instance wfni
         LEFT JOIN work_node wn ON wn.id = wfni.node_id
@@ -173,8 +174,8 @@
                 or wfni.name like concat('%',#{keyword},'%')
             )
         </if>
-        <if test="todoVO!=null and todoVO.nodeName!=null and todoVO.nodeName!='' ">
-            and wfni.name = #{todoVO.nodeName}
+        <if test="todoVO!=null and todoVO.nodeId!=null ">
+            and wfni.node_id = #{todoVO.nodeId}
         </if>
         <if test="todoVO!=null and todoVO.startDate!=null and todoVO.startDate!=''">
             and m.created &gt;= #{todoVO.startDate}
@@ -256,7 +257,7 @@
             )
     </update>
 
-    <select id="personalTodoPage" parameterType="com.dayou.vo.TaskTodoVO" resultType="com.dayou.vo.PersonalTodoVO">
+    <select id="personalTodoPage" parameterType="com.dayou.vo.PersonalTodoVO" resultType="com.dayou.vo.PersonalTodoVO">
         SELECT
         wfni.id,
         wtr.id AS taskId,
@@ -300,7 +301,8 @@
         wfni.business_id,
         wfni.state,
         wfni.created,
-        wfni.modified
+        wfni.modified,
+        wfni.node_id
         FROM
         work_flow_node_instance wfni
         LEFT JOIN work_node wn ON wn.id = wfni.node_id
@@ -350,8 +352,8 @@
         <if test="personal!=null and personal.endDate!=null and personal.endDate!=''">
             and p.created &lt;= #{personal.endDate}
         </if>
-        <if test="personal!=null and personal.nodeCode!=null and personal.nodeCode!=''">
-            and wfni.code = #{personal.nodeCode}
+        <if test="personal!=null and personal.nodeId!=null">
+            and wfni.node_id = #{personal.nodeId}
         </if>
         <if test="personal!=null and personal.clientName!=null and personal.clientName!=''">
             and cc.name like concat('%',#{personal.clientName},'%')

+ 4 - 0
domain/src/main/java/com/dayou/common/Constants.java

@@ -124,6 +124,10 @@ public interface Constants {
 
     String LETTER_REALTY_FORMAT= "川友房函number号";
 
+    String LETTER_LAND_FORMAT_X = "川友土函number";
+
+    String LETTER_REALTY_FORMAT_X= "川友房函number";
+
     String BRI = "-";
 
     String HAO = "号";

+ 2 - 0
domain/src/main/java/com/dayou/vo/PersonalTodoVO.java

@@ -28,6 +28,8 @@ public class PersonalTodoVO {
 
     private String nodeCode;
 
+    private Long  nodeId;
+
     private Long handlerId;
 
     private String location;

+ 2 - 0
domain/src/main/java/com/dayou/vo/TaskTodoVO.java

@@ -48,6 +48,8 @@ public class TaskTodoVO {
 
     private String nodeCode;
 
+    private Long nodeId;
+
     private String handler;
 
     private Long handlerId;

+ 10 - 1
service/src/main/java/com/dayou/service/IBusinessNumberService.java

@@ -79,7 +79,7 @@ public interface IBusinessNumberService extends IService<BusinessNumber> {
      * @param targets
      * @return
      */
-    List<IdNameVO> takeLetterSubNumber(String orderId, TakeNumberEnum takeNumberEnum,String mainNumber,List<IdNameVO> targets );
+    List<IdNameVO> takeLetterSubNumber(String orderId, TakeNumberEnum takeNumberEnum,String mainNumber,List<IdNameVO> targets,Long businessId );
 
     /**
      * 取项目编号
@@ -88,4 +88,13 @@ public interface IBusinessNumberService extends IService<BusinessNumber> {
      * @return String
      */
     String takeAssetsOrderNumber();
+
+    /**
+     * 在一个订单中按顺序取复评函号
+     * @param businessId
+     * @param orderId
+     * @param takeNumberEnum
+     * @return
+     */
+    String takeLetterByOrder(Long businessId,String orderId,TakeNumberEnum takeNumberEnum);
 }

+ 34 - 1
service/src/main/java/com/dayou/service/impl/BusinessNumberServiceImpl.java

@@ -8,6 +8,7 @@ import com.dayou.enums.MainBusinessEnum;
 import com.dayou.enums.TakeNumberEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.BusinessNumberMapper;
+import com.dayou.mapper.MajorProductionMapper;
 import com.dayou.service.IBusinessNumberService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.DateUtils;
@@ -41,6 +42,12 @@ public class BusinessNumberServiceImpl extends ServiceImpl<BusinessNumberMapper,
     private static DecimalFormat zero3 = new DecimalFormat("000");
 
     private static DecimalFormat zero2 = new DecimalFormat("00");
+    private final MajorProductionMapper majorProductionMapper;
+
+
+    public BusinessNumberServiceImpl(MajorProductionMapper majorProductionMapper) {
+        this.majorProductionMapper = majorProductionMapper;
+    }
 
     @Override
     public synchronized String takeMainNumber(TakeNumberDTO taskRecordDTO) {
@@ -149,13 +156,14 @@ public class BusinessNumberServiceImpl extends ServiceImpl<BusinessNumberMapper,
     }
 
     @Override
-    public synchronized List<IdNameVO> takeLetterSubNumber(String orderId, TakeNumberEnum takeNumberEnum, String mainNumber,List<IdNameVO> targets) {
+    public synchronized List<IdNameVO> takeLetterSubNumber(String orderId, TakeNumberEnum takeNumberEnum, String mainNumber,List<IdNameVO> targets,Long businessId) {
         if (StrUtil.isEmpty(mainNumber)){
             mainNumber = takeLetterMainNumber(orderId, takeNumberEnum);
         }
         return generateSubNumber(mainNumber,targets);
     }
 
+
     /**
      * 取项目编号
      * 资产项目订单号取号:年份4位 + 月份2位 + 序号3位(当月下单量)
@@ -189,6 +197,31 @@ public class BusinessNumberServiceImpl extends ServiceImpl<BusinessNumberMapper,
     }
 
     /**
+     * 在一个订单中按顺序取复评函号
+     * @param businessId
+     * @return
+     */
+    @Override
+    public synchronized String takeLetterByOrder(Long businessId,String orderId,TakeNumberEnum takeNumberEnum) {
+        String maxLetterNo = majorProductionMapper.findMaxLetterNoByBusinessId(businessId);
+        if (StrUtil.isEmpty(maxLetterNo)){
+            if (takeNumberEnum.equals(TakeNumberEnum.LAND_NUMBER)){
+                return new StringBuffer(LETTER_LAND_FORMAT_X.replace(NUMBER, orderId)).append(BRI).append("1").append(HAO).toString();
+            }else{
+                return new StringBuffer(LETTER_REALTY_FORMAT_X.replace(NUMBER, orderId)).append(BRI).append("1").append(HAO).toString();
+            }
+
+        }else {
+            String[] split = maxLetterNo.split(BRI);
+            String mainNumber = split[0];
+            Integer index = Integer.valueOf(split[1].replace(HAO,""));
+            StringBuilder subNumber = new StringBuilder(mainNumber);
+            return subNumber.append(BRI + (index + 1) + HAO).toString();
+        }
+
+    }
+
+    /**
      * 根据主号生成字号
      * @param mainNumber
      * @param targets

+ 25 - 2
service/src/main/java/com/dayou/service/impl/BusinessProductionServiceImpl.java

@@ -39,8 +39,7 @@ import java.util.Map;
 
 import static com.dayou.common.Constants.PNG;
 import static com.dayou.common.Constants.PROD_VALIDATE_URI;
-import static com.dayou.enums.MainBusinessEnum.ASSET_BUSINESS;
-import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
+import static com.dayou.enums.MainBusinessEnum.*;
 import static com.dayou.enums.ProductionEnum.*;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
 import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
@@ -153,6 +152,30 @@ public class BusinessProductionServiceImpl implements IBusinessProductionService
         }
     }
 
+
+//    public static void main(String[] args) throws IOException, WriterException {
+//        String validateUrl = new StringBuffer("http://mbs.scdayou.com/admin").append(PROD_VALIDATE_URI).append("?").append("businessType=")
+//                .append(MAJOR_BUSINESS.name()).append("&").append("targetId=").append(9888).toString();
+//        String baseDir = "/Users/wuwei/opt/dfs/code";
+//        String dateIndexFileName = FileUploadUtils.createDateIndexFileName("川友房函2025010487-2号_validate" + PNG);
+//        File absoluteFile = FileUploadUtils.getAbsoluteFile(baseDir, dateIndexFileName);
+//        QRCodeUtil.write(validateUrl,200,absoluteFile);
+//
+//    }
+
+//    public static void main(String[] args) {
+//        try {
+//            String baseDir = "/Users/wuwei/opt/dfs/code";
+//            String dateIndexFileName = FileUploadUtils.createDateIndexFileName("川友房函2025010487-2号" + PNG);
+//            File absoluteFile = FileUploadUtils.getAbsoluteFile(baseDir, dateIndexFileName);
+//            QRCodeUtil.write("川友房函2025010487-2号",200,absoluteFile);
+//        } catch (IOException e) {
+//            throw new RuntimeException(e);
+//        } catch (WriterException e) {
+//            throw new RuntimeException(e);
+//        }
+//    }
+
     @Override
     public String doCreateNormalCode(String production,String reportNo) {
         try {

+ 20 - 17
service/src/main/java/com/dayou/service/impl/MajorTargetServiceImpl.java

@@ -29,6 +29,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static com.dayou.common.Constants.BRI;
 import static com.dayou.enums.ProductionEnum.*;
 
 /**
@@ -236,24 +237,26 @@ public class MajorTargetServiceImpl extends ServiceImpl<MajorTargetMapper, Major
         takeNumberDTO.setTargets(takeNumberTargets);
 
         if (CollectionUtils.isNotEmpty(takeNumberTargets) && CollectionUtils.isNotEmpty(targets)){
-            if (takeNumberTargets.size()<targets.size()){
-
-                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,existStatementNo);
-                    return subNumbers.get(0).getName();
-                }else {
-                    //已取过主号,后续取子号主号都一致。
-                    List<IdNameVO> subNumbers = businessNumberService.takeLetterSubNumber(orderId,takeType,sorted.get(0).getLetterNo(),takeNumberDTO.getTargets());
-                    majorTargetMapper.updateSubLetterNo(subNumbers,existStatementNo);
-                    return subNumbers.get(0).getName();
-                }
+            if (takeNumberTargets.size() < targets.size()){
+                String subNumber = businessNumberService.takeLetterByOrder(businessId,orderId,takeType);
+                takeNumberTargets.stream().forEach(x->{
+                    x.setName(subNumber);
+                });
+                majorTargetMapper.updateSubLetterNo(takeNumberTargets,existStatementNo);
+                return subNumber;
             }else {
-                //取主号
-                String mainNumber = businessNumberService.takeLetterMainNumber(orderId,takeType);
-                majorTargetMapper.updateMainLetterNo(mainNumber,businessId,statementNo);
-                return mainNumber;
+                //如果存在意见书号则用意见书号改复评函号,否则就用流水号
+                if (StrUtil.isNotBlank(statementNo) && statementNo.contains(BRI)){
+                    String subNumber = businessNumberService.takeLetterByOrder(businessId,orderId,takeType);
+                    majorTargetMapper.updateMainLetterNo(subNumber,businessId,statementNo);
+                    return subNumber;
+                }else{
+                    //取主号
+                    String mainNumber = businessNumberService.takeLetterMainNumber(orderId,takeType);
+                    majorTargetMapper.updateMainLetterNo(mainNumber,businessId,statementNo);
+                    return mainNumber;
+                }
+
             }
         }
         return null;