فهرست منبع

项目合同逻辑修改

ljy121 1 سال پیش
والد
کامیت
94e64dfcbd

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/entity/Contract.java

@@ -89,6 +89,8 @@ public class Contract extends BaseEntity {
      */
     private String bz;
 
+    private String qualityController;
+
     /**
      * 合同费用状态  { 1,"未付清"},{ 2,"未付清"},{ 3,"已付清"},{ 4,"手动设置已付清"}
      */

+ 6 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/response/ContractChildResponse.java

@@ -14,6 +14,8 @@ import java.time.LocalDate;
 @Data
 public class ContractChildResponse {
 
+    private String id;
+
     private String parentId;
 
     /**
@@ -97,4 +99,8 @@ public class ContractChildResponse {
     private Integer isSign;
 
     private Integer contractType;
+
+    private String bz;
+
+    private String qualityController;
 }

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/controller/ProjectController.java

@@ -47,7 +47,7 @@ public class ProjectController{
      */
     @GetMapping("/project/page")
     public CommonResult<Page<Project>> page(ProjectDto projectDto) {
-
+        projectDto.setIsRelContract(1);
         return CommonResult.success(projectService.page(new Page<>(projectDto.getPageNo(),projectDto.getPageSize()), projectDto));
     }
 

+ 1 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/contract/event/ContractEvent.java

@@ -109,6 +109,7 @@ public class ContractEvent extends BaseController {
                 String projectId = entity.getProjectId();
                 Project project = projectMapper.selectById(projectId);
                 project.setOutputValue(entity.getContractAmount());
+                project.setXmmc(entity.getName());
                 if(!contractAreaManagers.isEmpty()){
                     project.setXsryId(contractAreaManagers.get(0).getAreaManagerId());
                     project.setXsry(contractAreaManagers.get(0).getAreaManagerName());

+ 24 - 1
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectServiceImpl.java

@@ -29,6 +29,8 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 项目表(Project)表服务实现类
@@ -173,6 +175,19 @@ public class ProjectServiceImpl implements ProjectService {
         return child.getId();
     }
 
+    private int getSerial(String number){
+        String regex = "-(\\d+)$";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(number);
+        if(matcher.find()){
+            String serial = matcher.group(1);
+            return Integer.parseInt(serial);
+        } else {
+            return -1;
+        }
+
+    }
+
     private void updateVirtualContract(Project child) {
         Contract contract = new Contract();
         String pid = child.getPid();
@@ -183,7 +198,6 @@ public class ProjectServiceImpl implements ProjectService {
             contract.setProjectId(child.getId());
             contract.setVirtualAmount(child.getOutputValue());
             contract.setContractAmount(mainContract.getContractAmount());
-            contract.setContractNumber(mainContract.getContractNumber());
             contract.setName(mainContract.getName());
             contract.setSignWay(mainContract.getSignWay());
             contract.setIsSign(mainContract.getIsSign());
@@ -191,6 +205,15 @@ public class ProjectServiceImpl implements ProjectService {
             contract.setSecondType(mainContract.getSecondType());
             contract.setContractOn(mainContract.getContractOn());
             contract.setContractOff(mainContract.getContractOff());
+            List<Contract> childs = contractMapper.selectVirtualList(mainContract.getId());
+            int serial = 1;
+            for (Contract c : childs) {
+                int i = getSerial(c.getContractNumber());
+                if(i != -1){
+                    serial = Math.max(serial,i);
+                }
+            }
+            contract.setContractNumber(mainContract.getContractNumber() + (serial+1));
         } else {
             contract.setContractType(ContractConstants.TYPE_VIRTUAL);
             contract.setProjectId(child.getId());

+ 15 - 2
zjugis-business/src/main/resources/mapper/oracle/ContractMapper.xml

@@ -105,13 +105,26 @@
         SELECT * FROM CONTRACT where ID = #{contractId,jdbcType=VARCHAR}
         UNION
         SELECT * FROM CONTRACT where ISVALID = 1 AND PARENT_ID = #{contractId,jdbcType=VARCHAR} and CONTRACT_TYPE = 4
+        ORDER BY CREATE_TIME DESC
     </select>
 
     <update id="updateVirtualContractByProjectId">
-        UPDATE CONTRACT SET
+        set @row_number = 0;
+        UPDATE CONTRACT T
+        JOIN
+        (
+            SELECT id,
+            @row_number := @row_number + 1 AS row_num
+            FROM contract
+            WHERE PROJECT_ID IN
+            <foreach item="id" index="index" collection="ids" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        ) T1 on T.ID = T1.ID
+        SET
         PARENT_ID = #{contract.id,jdbcType=VARCHAR},
         CONTRACT_AMOUNT = #{contract.contractAmount},
-        CONTRACT_NUMBER = #{contract.contractNumber},
+        CONTRACT_NUMBER = concat(#{contract.contractNumber},'-',T1.row_num),
         NAME = #{contract.name,jdbcType=VARCHAR},
         SIGN_WAY = #{contract.signWay,jdbcType=INTEGER},
         IS_SIGN = #{contract.isSign,jdbcType=INTEGER},

+ 9 - 4
zjugis-business/src/main/resources/mapper/oracle/ProjectMapper.xml

@@ -24,17 +24,22 @@
     <select id="page" resultType="com.zjugis.business.bean.entity.Project">
         SELECT P.*
         <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
-            ,C.CONTRACT_AMOUNT as outputValue,C.CONTRACT_NUMBER as contractNumber
+            ,
+            (CASE WHEN CH.ccount >0 then P.OUTPUT_VALUE
+             ELSE C.contractAmount end
+            ) as contractAmount
+            ,C.contractNumber as contractNumber
         </if>
         FROM PROJECT P
         <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
-            LEFT JOIN CONTRACT C ON C.PROJECT_ID = P.ID AND C.FLOW_STATUS in (90,99)
+            LEFT JOIN (SELECT PID,count(1) as ccount FROM PROJECT WHERE FLOW_STATUS = 99 GROUP BY PID) CH ON CH.PID = P.ID
+            LEFT JOIN(SELECT PROJECT_ID,NVL(SUM(NVL(CONTRACT_AMOUNT,0)),0) as contractAmount,max(CONTRACT_NUMBER) as contractNumber FROM  CONTRACT where FLOW_STATUS in (90,99) GROUP BY PROJECT_ID) C ON C.PROJECT_ID = P.ID
         </if>
         <if test="params != null and params.userId != null  and params.userId != ''">
             LEFT JOIN PROJECT_WORKER_RELATION PW ON PW.PROJECT_ID = P.ID
         </if>
         <where>
-            P.ISVALID = 1 AND P.FLOW_STATUS = 90
+            P.ISVALID = 1 AND P.FLOW_STATUS IN (90,99)
             <if test="params != null and params.hyId != null">
                 AND P.HY_ID = #{params.hyId}
             </if>
@@ -110,6 +115,6 @@
     </select>
 
     <select id="selectChildrenIds" resultType="java.lang.String">
-        SELECT ID FROM PROJECT WHERE PID = #{projectId,jdbcType=VARCHAR} AND ISVALID = 1
+        SELECT ID FROM PROJECT WHERE PID = #{projectId,jdbcType=VARCHAR} AND ISVALID = 1 and FLOW_STATUS = 99
     </select>
 </mapper>

+ 2 - 2
zjugis-business/src/main/resources/templates/FlowProject/apply.ftl

@@ -253,9 +253,9 @@
                   <div class="form-group">
                     <div class="form-item">
                       <div class="z-comp-radio" name="project$shareRatio">
-                        <div class="z-radio-item <#if (formEntity.shareRatio!0) == 0.4>checked</#if>" value="0.4"><i></i> 60% / 40%</div>
+                        <div class="z-radio-item <#if (formEntity.shareRatio!0) == 0.42>checked</#if>" value="0.42"><i></i> 58% / 42%</div>
                         <div class="z-radio-item <#if (formEntity.shareRatio!0) == 0.375>checked</#if>" value="0.375"><i></i>62.5% / 37.5%</div>
-                        <div class="z-radio-item flexInputTwo <#if (formEntity.shareRatio!0) != 0.375 && (formEntity.shareRatio!0) != 0.4 && (formEntity.shareRatio!0) != 0>checked</#if>" value="${formEntity.shareRatio!0}"><i></i>
+                        <div class="z-radio-item flexInputTwo <#if (formEntity.shareRatio!0) != 0.375 && (formEntity.shareRatio!0) != 0.42 && (formEntity.shareRatio!0) != 0>checked</#if>" value="${formEntity.shareRatio!0}"><i></i>
                           <input id="lyfcGs" type="text">%&nbsp;&nbsp;/&nbsp;&nbsp;  <input id="lyfcBm" type="text">%
                         </div>
                       </div>