Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 1 year ago
parent
commit
330a7f5a7a

+ 1 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ContractInventoryForm.java

@@ -203,6 +203,6 @@ public class ContractInventoryForm extends BaseEntity {
      */
     @ApiModelProperty(value = "生成变更时划分数量,零号变更时存入")
     @ExcelIgnore
-    private Integer buildChangeTotal;
+    private BigDecimal buildChangeTotal;
 
 }

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterTreeContractVO2.java

@@ -43,4 +43,7 @@ public class MeterTreeContractVO2 {
     @ApiModelProperty(value = "计算式")
     private String calculateFormula;
 
+    @ApiModelProperty(value = "关联的资料是否审批通过,true通过,false不通过")
+    private Boolean isApp;
+
 }

+ 7 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml

@@ -76,11 +76,15 @@
         delete from s_change_token_inventory where change_token_id = #{tokenId} and is_collect_form = 1
     </delete>
     <select id="getAllForm" resultType="org.springblade.meter.entity.ContractInventoryForm">
-        select cif.id,
+        select cif.id,cif.current_price,
                IFNULL((select sum(build_picture_total) from s_inventory_form_meter ifm
-                where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as build_change_total
+                where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as build_change_total,
+               IFNULL((select sum(change_build_picture_total) from s_inventory_form_meter ifm
+                       where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as changeTotal
         from s_contract_inventory_form cif
-        where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
+        where id in
+        (select contract_form_id from s_inventory_form_meter
+                where contract_id = #{contractId} and is_deleted = 0 group by contract_form_id)
     </select>
     <select id="getZeroChange" resultType="org.springblade.meter.vo.ZeroChangeVO">
         select id,form_number,form_name,current_price,contract_total,contract_money,

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -96,6 +96,10 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
         if (list.size() == 0){
             throw new ServiceException("生成失败,当前合同段还没有清单");
         }
+        //每次生成零号变更时,把清单变更后数量,修改为当前划分数量
+        for (ContractInventoryForm form : list) {
+            form.setChangeMoney(form.getCurrentPrice().multiply(form.getChangeTotal()).setScale(2,RoundingMode.HALF_UP));
+        }
         //修改清单表的划分数量
         contractInventoryFormService.updateBatchById(list);
     }
@@ -121,6 +125,7 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
             //核实金额=核实量*现行单价
             vo.setVerifyMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getVerifyTotal())));
         }
+        vos = vos.stream().filter(l->l.getUpdateTotal() != 0).collect(Collectors.toList());
         return vos;
     }
 

+ 17 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java

@@ -99,6 +99,20 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                     throw new ServiceException("excel中有清单数量未填写,填写单价则必须填写数量");
                 }
             });
+            //校验Excel中是否存在相同的导入编号
+            List<String> imports = excels.stream().map(l -> l.getImportNumber()).collect(Collectors.toList());
+            Set<String> imp = imports.stream().filter(i -> Collections.frequency(imports, i) > 1)
+                    .collect(Collectors.toSet());
+            if (imp.size() > 0){
+                throw new ServiceException("重复的导入编号:"+String.join(",",imp));
+            }
+            //校验Excel中是否存在相同的清单编号
+            List<String> numbers = excels.stream().map(l -> l.getFormNumber()).collect(Collectors.toList());
+            Set<String> numb = numbers.stream().filter(i -> Collections.frequency(numbers, i) > 1)
+                    .collect(Collectors.toSet());
+            if (numb.size() > 0){
+                throw new ServiceException("重复的清单编号:"+String.join(",",numb));
+            }
             allTotal = excels.size();
             List<Integer> firstNode = new ArrayList<>();
             //获取当前合同的首节点
@@ -250,9 +264,9 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             //判断要新增的数据中,清单编号是否已经存在
             List<String> collect = list.stream().map(l -> l.getFormNumber()).collect(Collectors.toList());
             if (nodes != 0 && collect.size() > 0){
-                List<String> numbers = baseMapper.getAllEqualsNumber(contractId,collect);
-                if (numbers.size() > 0){
-                    throw new ServiceException("以下清单编号已经存在:["+StringUtils.join(numbers,",")+"],请修改excel后重新导入");
+                List<String> numbs = baseMapper.getAllEqualsNumber(contractId,collect);
+                if (numbs.size() > 0){
+                    throw new ServiceException("以下清单编号已经存在:["+StringUtils.join(numbs,",")+"],请修改excel后重新导入");
                 }
             }
             endTotal = list.size();

+ 23 - 19
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -1188,13 +1188,15 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 MeterTreeContractVO2 vo2 = iterator.next();
                 //先去获取对应质检的相关数据
                 List<Long> linkWbsIds = Func.toLongList(vo2.getLinkWbs());
-                Boolean isApp = false;
+                Boolean isApp = true;
                 Integer strength = null;
                 for (Long id : linkWbsIds) {
                     MeterLinkWbsInfoVO vo = wbsInfoVOMap.get(id);
+                    if (vo == null){
+                        throw new ServiceException("未找到计量单元:"+vo2.getNodeName()+"的关联WBS节点id"+id+",的节点信息");
+                    }
                     if (vo.getAppStatus() != 2) {
-                        isApp = true;
-                        break;
+                        isApp = false;
                     }
                     if (vo.getMaxType() == 12) {
                         strength = 28;
@@ -1213,7 +1215,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                     }
                     //根据附件设置强度设置强度值
                     if (strength == 28){
-                        if (isApp){
+                        if (!isApp){
                             iterator.remove();
                             continue;
                         }else {
@@ -1225,7 +1227,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 }else {
                     //不为混凝土节点
                     //审批不通过,移除,审批通过则设置为后台比例
-                    if (isApp) {
+                    if (!isApp) {
                         iterator.remove();
                         continue;
                     }else {
@@ -1236,7 +1238,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 str.append(vo2.getLinkWbs()+",");
                 str2.append(vo2.getId()+",");
                 str3.append(vo2.getLinkForm()+",");
-
+                vo2.setIsApp(isApp);
             }
             if (voList.size() == 0 || StringUtils.isBlank(str.toString()) || StringUtils.isBlank(str2.toString()) || StringUtils.isBlank(str3.toString())){
                 throw new ServiceException("当前没有符合要求的合同计量单元-2");
@@ -1348,20 +1350,22 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 for (Long aLong : longs) {
                     //new 中间计量申请的附件,通过query数据填写信息
                     WbsLinkQueryInfoVO vo = wbsMap.get(aLong);
-                    if (vo == null || StringUtils.isBlank(vo.getEVisaPdf())){
-                        throw new ServiceException("合同计量单元("+vo2.getNodeName()+")所关联的WBS节点id:"+aLong+"未找到电签PDF");
+                    if (vo2.getIsApp()){
+                        if (vo == null || StringUtils.isBlank(vo.getEVisaPdf())) {
+                            throw new ServiceException("合同计量单元(" + vo2.getNodeName() + ")所关联的WBS节点id:" + aLong + "未找到电签PDF");
+                        }
+                        AttachmentForm form = new AttachmentForm();
+                        form.setProjectId(projectId);
+                        form.setContractId(contractId);
+                        form.setMasterId(middleId);
+                        form.setFileName(vo.getName());
+                        form.setFileUrl(vo.getEVisaPdf());
+                        form.setFilePdfUrl(vo.getEVisaPdf());
+                        form.setFileType(1);
+                        form.setSelectId(vo.getId());
+                        //添加到附件表
+                        attachmentFormAdd.add(form);
                     }
-                    AttachmentForm form = new AttachmentForm();
-                    form.setProjectId(projectId);
-                    form.setContractId(contractId);
-                    form.setMasterId(middleId);
-                    form.setFileName(vo.getName());
-                    form.setFileUrl(vo.getEVisaPdf());
-                    form.setFilePdfUrl(vo.getEVisaPdf());
-                    form.setFileType(1);
-                    form.setSelectId(vo.getId());
-                    //添加到附件表
-                    attachmentFormAdd.add(form);
                 }
                 //设置中间计量申请属性
                 apply.setProjectId(projectId);