浏览代码

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

yangyj 1 年之前
父节点
当前提交
455eef9e1d

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/WbsNodeDTO.java

@@ -22,6 +22,12 @@ public class WbsNodeDTO {
     @ApiModelProperty(value = "WBS树节点id")
     private Long nodeId;
 
+    @ApiModelProperty(value = "1施工2监理")
+    private Integer classifyType;
+
+    @ApiModelProperty(value = "选中的id,selectId逗号拼接")
+    private String selectIds;
+
     @ApiModelProperty("当前页")
     private Integer current;
 

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/AttachmentForm.java

@@ -74,5 +74,11 @@ public class AttachmentForm extends BaseEntity {
     @ApiModelProperty(value = "中间计量申请专用字段 1中间计量附件,2变更令附件")
     private Integer fileType;
 
+    /**
+     * 中间计量申请专用字段 质检文件的Id(query)
+     */
+    @ApiModelProperty(value = "中间计量申请专用字段 质检文件的Id(query)")
+    private Long selectId;
+
 
 }

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/WbsFileVO.java

@@ -40,4 +40,10 @@ public class WbsFileVO implements Serializable {
 
     @ApiModelProperty(value = "父节点id")
     private Long parentId;
+
+    @ApiModelProperty(value = "选中行id")
+    private Long selectId;
+
+    @ApiModelProperty(value = "是否选中:0未选中,1选中")
+    private Integer isSelect;
 }

+ 0 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1395,7 +1395,6 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 //    }
 
     @Override
-    @Transactional
     public void reSigningEVisa(String classify, String taskIds, String contractId, String projectId,Integer type, String header) {
         //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java

@@ -69,4 +69,6 @@ public interface ContractInventoryFormMapper extends BaseMapper<ContractInventor
     List<ContractFromVO> getNotResolveForm(@Param("contractId") Long contractId, @Param("formNum") String formNum,@Param("meterId") Long meterId);
 
     List<ContractFromVO> getNodeResolveForm(@Param("contractId") Long contractId,@Param("meterId") Long meterId);
+
+    List<String> getAllEqualsNumber(@Param("contractId") Long contractId,@Param("numbers") List<String> collect);
 }

+ 8 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

@@ -84,7 +84,7 @@
                 WHERE contract_id = #{contractId} and is_deleted=0 and parent_id = scif.id) as hasChild
         from s_contract_inventory_form scif
         where contract_id = #{contractId} and is_deleted = 0 and parent_id = #{parentId}
-        order by sort
+        order by sort IS NOT NULL DESC,create_time
     </select>
 
     <select id="getContrFormAllByContrId" resultType="org.springblade.meter.vo.ContractFromVO">
@@ -160,5 +160,12 @@
         WHERE ifm.contract_id = #{contractId} and ifm.is_deleted = 0
         and ifm.contract_meter_id = #{meterId}
     </select>
+    <select id="getAllEqualsNumber" resultType="java.lang.String">
+        select form_number from s_contract_inventory_form where contract_id = #{contractId} and is_deleted = 0
+        and form_number in
+        <foreach collection="numbers" item="number" open="(" close=")" separator=",">
+            #{number}
+        </foreach>
+    </select>
 
 </mapper>

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java

@@ -90,7 +90,7 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
 
     List<WbsNodeVO> getAllChildNode(@Param("dto") WbsNodeDTO dto);
 
-    List<WbsFileVO> getNodeData(@Param("ids") List<Long> ids);
+    List<WbsFileVO> getNodeData(@Param("ids") List<Long> ids,@Param("classifyType") Integer classifyType);
 
     List<WbsTreeContract> getAllAncestors(@Param("ids") HashSet<Long> set, @Param("contractId") Long contractId);
 

+ 8 - 5
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -240,7 +240,7 @@
         order by sort,create_time
     </select>
     <select id="getNodeData" resultType="org.springblade.meter.vo.WbsFileVO">
-        select name as dataName,pdf_url as pdfUrl,e_visa_pdf_url as eVisaPdfUrl,
+        select name as dataName,pdf_url as pdfUrl,e_visa_pdf_url as eVisaPdfUrl, uiq.id as selectId,
                (select node_type from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as nodeType,
                (select ancestors from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as ancestors,
                (select node_name from m_wbs_tree_contract wtc where wtc.p_key_id = uiq.wbs_id) as nodeName,
@@ -250,12 +250,14 @@
         from u_information_query uiq
         where id in
         (
-            select MAX(id) from u_information_query where  is_deleted = 0 and wbs_id in
+            select MAX(id) from u_information_query uiq2
+            where uiq2.is_deleted = 0 and uiq2.classify = #{classifyType}
+            and uiq2.wbs_id in
             <foreach collection="ids" item="id" open="(" close=")" separator=",">
                     #{id}
             </foreach>
-            group by wbs_id
-            order by create_time desc
+            group by uiq2.wbs_id
+            order by uiq2.create_time desc
         )
         order by FIELD(wbs_id,
             <foreach collection="ids" item="id" separator=",">
@@ -279,7 +281,8 @@
     </select>
     <select id="getAllNode2" resultType="org.springblade.meter.vo.WbsNodeVO">
         SELECT id,parent_id,p_key_id as pId,ancestors,node_name,
-               (SELECT COUNT(1) from u_information_query uiq WHERE uiq.wbs_id = wtc.p_key_id) as isData
+               (SELECT COUNT(1) from u_information_query uiq
+                WHERE uiq.wbs_id = wtc.p_key_id and uiq.is_deleted = 0 and uiq.classify = #{dto.classifyType}) as isData
         from m_wbs_tree_contract wtc
         WHERE project_id  = #{dto.projectId} and contract_id = #{dto.contractId} and is_deleted = 0 and type = 1
         group by id

+ 43 - 6
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java

@@ -85,9 +85,18 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                 throw new ServiceException("请传入excel文件");
             }
             List<ContractInventoryForm> excels = ExcelUtil.read(file, ContractInventoryForm.class);
+            excels = excels.stream()
+                    .filter(l->(StringUtils.isNotBlank(l.getImportNumber()) || StringUtils.isNotBlank(l.getFormNumber() ) || StringUtils.isNotBlank(l.getFormName())))
+                    .collect(Collectors.toList());
             if (excels == null || excels.size() == 0){
-                throw new ServiceException("未识别到excel中数据,请检查后重新导入");
+                throw new ServiceException("未检测到excel中清单数据,请检查格式后后重新导入");
             }
+            //校验必填字段是否为空
+            excels.stream().forEach(l->{
+                if (StringUtils.isBlank(l.getImportNumber()) || StringUtils.isBlank(l.getFormNumber() ) || StringUtils.isBlank(l.getFormName())){
+                    throw new ServiceException("excel中有必填项未填写,请检查(导入编号,清单编号,清单名称)后重新导入");
+                }
+            });
             allTotal = excels.size();
             List<Integer> firstNode = new ArrayList<>();
             //获取当前合同的首节点
@@ -104,12 +113,12 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                     .isNotNull(ContractInventoryForm::getImportNumber));
             nodes = allNode.size();
             Map<String, ContractInventoryForm> map = allNode.stream().collect(Collectors.toMap(ContractInventoryForm::getImportNumber, l -> l));
-            //校验必填字段是否为空,设置通用字段,并且通过导入编号对已经存在的节点做标识
+            //设置通用字段,并且通过导入编号对已经存在的节点做标识
             for (int i = 0; i < excels.size(); i++) {
                 ContractInventoryForm excel = excels.get(i);
-                if (StringUtils.isBlank(excel.getImportNumber()) || StringUtils.isBlank(excel.getFormNumber() ) || StringUtils.isBlank(excel.getFormName())){
-                    throw new ServiceException("excel中有必填项未填写,请检查后重新导入");
-                }
+                excel.setImportNumber(excel.getImportNumber().trim());
+                excel.setFormNumber(excel.getFormNumber().trim());
+                excel.setFormName(excel.getFormName().trim());
                 //校验清单类型是否填写,未填写默认为1
                 if (excel.getFormType() == null){
                     excel.setFormType(1);
@@ -144,6 +153,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             if (size == 1){
                 lists.add(excels);
             }else {
+                //规则是首节点下跟着子节点
                 for (int i = 0; i < size-1; i++) {
                     lists.add(excels.subList(firstNode.get(i),firstNode.get(i+1)));
                 }
@@ -206,7 +216,7 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
                             throw new ServiceException("清单节点:"+f.getFormName()+"未找到上级节点");
                         }
                         if (fo.getIsFormNode() == 1){
-                            throw new ServiceException("清单节点:"+fo.getFormName()+"下还有节点,检查后重新上传excel");
+                            throw new ServiceException("清单节点:"+fo.getFormName()+"下还有节点,检查后重新上传excel");
                         }
                         if (f.getStatus() == 0) {
                             //设置章编号和清单类型,必须根父节点一致
@@ -235,6 +245,14 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
             }
             //移除所有已经存在的节点,保存
             List<ContractInventoryForm> list = excels.stream().filter(l -> l.getStatus() == 0).collect(Collectors.toList());
+            //判断要新增的数据中,清单编号是否已经存在
+            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后重新导入");
+                }
+            }
             endTotal = list.size();
             this.saveBatch(list);
 
@@ -330,6 +348,15 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
      */
     @Override
     public void add(ContractInventoryForm form) {
+        if (StringUtils.isNotBlank(form.getFormNumber())) {
+            //判断清单编号是否存在
+            long count = this.count(new LambdaQueryWrapper<ContractInventoryForm>()
+                    .eq(ContractInventoryForm::getContractId,form.getContractId())
+                    .eq(ContractInventoryForm::getFormNumber,form.getFormNumber()));
+            if (count > 0){
+                throw new ServiceException("新增失败:清单编号不能重复");
+            }
+        }
         //如果为增补清单,那么节点类型必须为清单节点
         if (form.getIsSupplement() == 1){
             if (form.getIsFormNode() == 0){
@@ -403,6 +430,16 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
     public void updateForm(ContractInventoryForm form) {
         //获取当前节点信息
         ContractInventoryForm nodeInfo = this.getById(form.getId());
+        if (StringUtils.isNotBlank(form.getFormNumber())) {
+            //判断清单编号是否存在
+            long count = this.count(new LambdaQueryWrapper<ContractInventoryForm>()
+                    .eq(ContractInventoryForm::getContractId,form.getContractId())
+                    .eq(ContractInventoryForm::getFormNumber,form.getFormNumber())
+                    .ne(ContractInventoryForm::getId,form.getId()));
+            if (count > 0){
+                throw new ServiceException("修改失败:清单编号不能重复");
+            }
+        }
         //判断节点是否已经锁定
         if (nodeInfo.getIsLock() == 1){
             throw new ServiceException("当前节点已经被锁定不能修改");

+ 9 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -713,7 +713,7 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         //查询节点资料
         List<WbsFileVO> voList = new ArrayList<>();
         if (ids.size() != 0) {
-            voList = baseMapper.getNodeData(ids);
+            voList = baseMapper.getNodeData(ids,dto.getClassifyType());
             //节点划分
             if (voList.size() != 0) {
                 StringBuilder str = new StringBuilder();
@@ -728,7 +728,15 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                     throw new ServiceException("未获取到节点划分信息");
                 }
                 Map<Long, WbsTreeContract> map = infoList.stream().collect(Collectors.toMap(l -> l.getId(), l -> l));
+                String selectIds = dto.getSelectIds();
                 for (WbsFileVO vo : voList) {
+                    //是否选中
+                    if (StringUtils.isNotBlank(selectIds) && selectIds.contains(vo.getSelectId()+"")){
+                        vo.setIsSelect(1);
+                    }else {
+                        vo.setIsSelect(0);
+                    }
+                    //工序划分
                     List<Long> longList = Func.toLongList(vo.getAncestors());
                     Collections.reverse(longList);
                     StringBuilder str2 = new StringBuilder();