huangjn пре 3 година
родитељ
комит
66de644224

+ 4 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreePrivateClient.java

@@ -20,6 +20,9 @@ public interface WbsTreePrivateClient {
      */
     String API_PREFIX = "/api/manager/WbsTreePrivate";
 
+    @PostMapping(API_PREFIX + "/queryAllNodeByProjectId")
+    List<WbsTreePrivate> queryAllNodeByProjectId(@RequestParam String projectId);
+
     @PostMapping(API_PREFIX + "/queryExcelTableByParentId")
     List<WbsTreePrivate> queryExcelTableByParentId(@RequestBody WbsTreePrivate treePrivate);
 
@@ -27,7 +30,7 @@ public interface WbsTreePrivateClient {
     List<WbsTreePrivate> queryChildByParentId(@RequestBody WbsTreePrivate treePrivate);
 
     @PostMapping(API_PREFIX + "/queryByPKeyIds")
-    List<WbsTreePrivate> queryByPKeyIds(@RequestParam List<String> ids);
+    List<WbsTreePrivate> queryByPKeyIds(@RequestBody List<String> ids);
 
     @PostMapping(API_PREFIX + "/queryPeersNodeByProjectIdAndId")
     WbsTreePrivate queryPeersNodeByProjectIdAndId(@RequestParam String projectId, @RequestParam Long id);

+ 31 - 7
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -730,11 +730,16 @@ public class InformationWriteQueryController extends BladeController {
 		//首先查询需要复制的节点及其下级所有子节点的信息
 		WbsTreeContract needCopyNode = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(vo.getNeedCopyPrimaryKeyId());
 
+		//获取当前合同段所有节点
+
 		List<WbsTreeContract> parentList = new ArrayList<>(), childList = new ArrayList<>(), allList = new ArrayList<>(), saveList = new ArrayList<>();
 		//新增施工台账
 		List<ConstructionLedger> saveLedger = new ArrayList<>();
 
 		parentList.add(needCopyNode);
+
+//		this.wbsTreeContractClient.searchContractTree(needCopyNode.getContractId());
+
 		//查询所有有效子节点
 		this.foreachQueryChildContract(parentList, childList);
 		allList.addAll(parentList);
@@ -906,7 +911,13 @@ public class InformationWriteQueryController extends BladeController {
 			if(contractNodeMap.containsKey(newData.getOldId())){
 				WbsTreeContract contractNode = contractNodeMap.get(newData.getOldId());
 				if(contractNode.getParentId() != null && StringUtils.isNotEmpty(contractNode.getParentId().toString())){
-					WbsTreeContract parentNode = this.wbsTreeContractClient.queryCurrentNodeAllParent(Long.parseLong(contractNode.getContractId()), contractNode.getParentId());
+					WbsTreeContract parentNode;
+					if(contractNodeMap.containsKey(contractNode.getParentId().toString())){
+						parentNode = contractNodeMap.get(contractNode.getParentId().toString());
+					} else {
+						parentNode = this.wbsTreeContractClient.queryCurrentNodeAllParent(Long.parseLong(contractNode.getContractId()), contractNode.getParentId());
+					}
+
 					if(parentNode != null){
 						ledger.setStation(StringUtils.isNotEmpty(parentNode.getFullName()) ? parentNode.getFullName() : parentNode.getDeptName());
 					}
@@ -916,8 +927,15 @@ public class InformationWriteQueryController extends BladeController {
 			if(projectNodeMap.containsKey(newData.getOldId())){
 				WbsTreePrivate contractNode = projectNodeMap.get(newData.getOldId());
 				if(contractNode.getParentId() != null && StringUtils.isNotEmpty(contractNode.getParentId().toString())){
-					WbsTreePrivate parentNode = this.wbsTreePrivateClient.queryPeersNodeByProjectIdAndId(contractNode.getProjectId(), contractNode.getParentId());
-					ledger.setStation(StringUtils.isNotEmpty(parentNode.getFullName()) ? parentNode.getFullName() : parentNode.getDeptName());
+					WbsTreePrivate parentNode;
+					if(projectNodeMap.containsKey(contractNode.getParentId().toString())){
+						parentNode = projectNodeMap.get(contractNode.getParentId().toString());
+					} else {
+						parentNode = this.wbsTreePrivateClient.queryPeersNodeByProjectIdAndId(contractNode.getProjectId(), contractNode.getParentId());
+					}
+					if(parentNode != null){
+						ledger.setStation(StringUtils.isNotEmpty(parentNode.getFullName()) ? parentNode.getFullName() : parentNode.getDeptName());
+					}
 				}
 			}
 		}
@@ -1271,9 +1289,15 @@ public class InformationWriteQueryController extends BladeController {
 				//查询数据
 				selectedNodeList = this.unifiedCode(allSelectedNodeList, treeContract);
 
-				//全选的集合则进一步向下查询
+				//检查当前操作的节点是否是填报节点,如果是则需要查询相关联表格
+				List<WbsTreePrivate> submitNodeList = selectedNodeList.stream().filter(treePrivate -> Arrays.asList("1,2,3,4".split(",")).contains(treePrivate.getMajorDataType().toString())).distinct().collect(Collectors.toList());
+
 				List<WbsTreePrivate> childList = new ArrayList<>();
-				this.foreachQueryChild(selectedNodeList, childList);
+				if(submitNodeList.size() > 0){
+					this.foreachQueryChild(submitNodeList, childList);
+					//将表格数据设置
+					selectedNodeList.addAll(childList);
+				}
 
 				if(childList.size() > 0){
 					//处理重复的数据
@@ -1461,12 +1485,12 @@ public class InformationWriteQueryController extends BladeController {
 	 */
 	private void foreachQueryChild(List<WbsTreePrivate> parentList, List<WbsTreePrivate> childList){
 		parentList.forEach(parent -> {
-			//查询子节点
 			List<WbsTreePrivate> childs = this.wbsTreePrivateClient.queryChildByParentId(parent);
+
 			if(childs != null && childs.size() > 0){
 				//添加入结果集
 				childList.addAll(childs);
-				//还有子级,继续向下
+				//继续向下检查子集
 				this.foreachQueryChild(childs, childList);
 			}
 		});

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/MessageWarningController.java

@@ -26,6 +26,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
 import org.springblade.business.entity.MessageWarning;
 import org.springblade.business.vo.MessageWarningVO;
 import org.springblade.business.wrapper.MessageWarningWrapper;
@@ -33,6 +34,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
@@ -115,7 +117,7 @@ public class MessageWarningController extends BladeController {
 					vo.setTypeFiveNumber(typeNumber);
 					break;
 				default:
-						break;
+					break;
 			}
 
 		}
@@ -152,7 +154,7 @@ public class MessageWarningController extends BladeController {
 		//获取当前人的数据
 		wrapper.lambda().eq(MessageWarning::getPushUser, AuthUtil.getUserId().toString());
 		if(StringUtils.isNotEmpty(vo.getStartTime())){
-			wrapper.lambda().between(MessageWarning::getCreateTime, vo.getStartTime(), vo.getEndTime());
+			wrapper.lambda().between(MessageWarning::getCreateTime, vo.getStartTime(), DateUtil.format(DateUtils.addDays(DateUtil.parse(vo.getEndTime(), "yyyy-MM-dd"), 1), "yyyy-MM-dd"));
 		}
 
 		//时间倒序,状态正序(已读在后,未读在前)

+ 59 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -58,8 +58,10 @@ public class WbsTreePrivateController extends BladeController {
     @ApiOperation(value = "保存项目日志划分")
     public R<Boolean> saveContractLogNode(@RequestBody SaveLogContractVO vo){
         if(StringUtils.isNotEmpty(vo.getWbsTreeIds())){
+            Date now = new Date();
+
             //获取当前项目已经划分的日志树
-            List<WbsTreePrivate> oldDataList = this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, vo.getProjectId()).eq(WbsTreePrivate::getWbsType, "4").eq(WbsTreePrivate::getWbsId, vo.getWbsId()));
+            List<WbsTreePrivate> oldDataList = this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, vo.getProjectId()).eq(WbsTreePrivate::getWbsType, "4").eq(WbsTreePrivate::getWbsId, vo.getWbsId()).eq(WbsTreePrivate::getType, 1));
 
             //需要保存的集合
             List<WbsTreePrivate> saveTreePrivateList = new ArrayList<>();
@@ -82,6 +84,51 @@ public class WbsTreePrivateController extends BladeController {
                 }
             }
 
+            //检查一下原本节点的表是否有新增的(只处理新增)
+            if(oldDataList != null && oldDataList.size() > 0){
+                for(WbsTreePrivate treePrivate : oldDataList){
+                    //获取当前节点下绑定的表格元素
+                    List<WbsTreePrivate> treePrivateTableList = this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, treePrivate.getProjectId()).eq(WbsTreePrivate::getParentId, treePrivate.getId()).eq(WbsTreePrivate::getType, 2));
+
+                    //获取当前节点引用的模板下的表格元素
+                    List<WbsTree> wbsTreeTableList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getParentId, treePrivate.getId()).eq(WbsTree::getType, 2));
+
+                    //校验数量
+                    if(wbsTreeTableList != null && wbsTreeTableList.size() > 0){
+                        if(treePrivateTableList != null){
+                            if(treePrivateTableList.size() < wbsTreeTableList.size()){
+                                //小于,说明模板节点存在新增,检查哪些是新增的
+                                Iterator<WbsTree> iterator = wbsTreeTableList.iterator();
+                                while (iterator.hasNext()){
+                                    WbsTree tree = iterator.next();
+                                    for(WbsTreePrivate privateNode : treePrivateTableList){
+                                        if(privateNode.getId().equals(tree.getId())){
+                                            //存在,删除
+                                            iterator.remove();
+                                            break;
+                                        }
+                                    }
+                                }
+                                //多出来的,新增
+                                if(wbsTreeTableList.size() > 0){
+                                    for(WbsTree wbsTree : wbsTreeTableList){
+                                        WbsTreePrivate newTreePrivate = new WbsTreePrivate();
+                                        BeanUtils.copyProperties(wbsTree, newTreePrivate);
+                                        newTreePrivate.setWbsType("4");
+                                        newTreePrivate.setProjectId(vo.getProjectId());
+                                        newTreePrivate.setCreateTime(now);
+                                        newTreePrivate.setPKeyId(SnowFlakeUtil.getId());
+
+                                        saveTreePrivateList.add(newTreePrivate);
+                                    }
+                                }
+
+                            }
+                        }
+                    }
+                }
+            }
+
             if(wbsTreeIds.size() > 0){
                 //获取模板节点
                 List<WbsTree> wbsTreeList = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, wbsTreeIds));
@@ -90,28 +137,29 @@ public class WbsTreePrivateController extends BladeController {
                 if(wbsTreeTableList != null && wbsTreeTableList.size() > 0){
                     wbsTreeList.addAll(wbsTreeTableList);
                 }
+
                 //复制数据
-                Date now = new Date();
                 for(WbsTree tree : wbsTreeList){
                     WbsTreePrivate treePrivate = new WbsTreePrivate();
                     BeanUtils.copyProperties(tree, treePrivate);
-                    saveTreePrivateList.add(treePrivate);
                     treePrivate.setWbsType("4");
                     treePrivate.setProjectId(vo.getProjectId());
                     treePrivate.setPKeyId(SnowFlakeUtil.getId());
                     treePrivate.setCreateTime(now);
-                }
-                if(saveTreePrivateList.size() > 0){
-                    //修改项目引用
-                    this.projectInfoService.update(Wrappers.<ProjectInfo>lambdaUpdate().set(ProjectInfo::getReferenceLogWbsTemplateId, vo.getWbsId()).eq(ProjectInfo::getId, vo.getProjectId()));
 
-                    //保存数据
-                    return R.data(this.wbsTreePrivateService.saveBatch(saveTreePrivateList));
+                    saveTreePrivateList.add(treePrivate);
                 }
-            } else {
-                return R.data(200, true, "未找到需要新增的节点");
             }
 
+            if(saveTreePrivateList.size() > 0){
+                //修改项目引用
+                this.projectInfoService.update(Wrappers.<ProjectInfo>lambdaUpdate().set(ProjectInfo::getReferenceLogWbsTemplateId, vo.getWbsId()).eq(ProjectInfo::getId, vo.getProjectId()));
+
+                //保存数据
+                return R.data(this.wbsTreePrivateService.saveBatch(saveTreePrivateList));
+            }
+
+            return R.data(200, true, "保存成功");
         }
         return R.data(300, true, "保存失败,未选择任何数据");
     }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreePrivateClientImpl.java

@@ -20,6 +20,11 @@ public class WbsTreePrivateClientImpl implements WbsTreePrivateClient {
 
     private final IWbsTreePrivateService wbsTreePrivateService;
 
+    @Override
+    public List<WbsTreePrivate> queryAllNodeByProjectId(String projectId) {
+        return this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, projectId));
+    }
+
     @Override
     public List<WbsTreePrivate> queryExcelTableByParentId(WbsTreePrivate treePrivate) {
         return this.wbsTreePrivateService.list(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getParentId, treePrivate.getId()).eq(WbsTreePrivate::getProjectId, treePrivate.getProjectId()).eq(WbsTreePrivate::getType, 2));