瀏覽代碼

BUG修复

huangjn 3 年之前
父節點
當前提交
cb94f02871
共有 14 個文件被更改,包括 149 次插入24 次删除
  1. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeClient.java
  2. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java
  3. 7 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java
  4. 43 9
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  5. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/RecycleBinController.java
  6. 5 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionController.java
  7. 3 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionFlowController.java
  8. 2 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.java
  9. 19 2
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.xml
  10. 0 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java
  11. 9 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionServiceImpl.java
  12. 37 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WeatherInfoServiceImpl.java
  13. 16 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeClientImpl.java
  14. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeClient.java

@@ -20,6 +20,9 @@ public interface ArchiveTreeClient {
      */
     String API_PREFIX = "/api/manager/archive";
 
+    @PostMapping(API_PREFIX + "/queryAllChildByAncestors")
+    List<ArchiveTree> queryAllChildByAncestors(@RequestParam String id);
+
     @PostMapping(API_PREFIX + "/queryTreeNodeByIds")
     List<ArchiveTree> queryTreeNodeByIds(@RequestParam List<String> ids);
 

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

@@ -74,7 +74,7 @@ public interface WbsTreeContractClient {
     WbsTreeContract getContractNodeByPrimaryKeyId(@RequestParam String primaryKeyId);
 
     @PostMapping(API_PREFIX + "/removeContractTreeNode")
-    Boolean removeContractTreeNode(@RequestParam String ids);
+    Boolean removeContractTreeNode(@RequestParam List<String> ids);
 
     /**
      * 根据合同段ID和id获取合同段划分树的节点信息

+ 7 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -216,6 +216,13 @@ public class ArchiveFileController extends BladeController {
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "分页")
 	public R<IPage<ArchiveFileVO>> page(ArchiveFileVO queryVo){
+		List<ArchiveTree> archiveTrees = this.archiveTreeClient.queryAllChildByAncestors(queryVo.getNodeIds());
+		if(archiveTrees != null && archiveTrees.size() > 0){
+			List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(archiveTrees.stream().map(ArchiveTree::getId).distinct().collect(Collectors.toList())), String.class);
+			ids.add(queryVo.getNodeIds());
+			queryVo.setNodeIdArray(ids);
+		}
+
 		return R.data(this.archiveFileService.selectArchiveFilePage(queryVo));
 	}
 

+ 43 - 9
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -677,7 +677,12 @@ public class InformationWriteQueryController extends BladeController {
 
 				//重塑关键信息
 				Map<Long,Long> oldToNewIdMap = new HashMap<>();
-				allList.forEach(node -> oldToNewIdMap.put(node.getId(), SnowFlakeUtil.getId()));
+				//节点信息
+				Map<String, WbsTreeContract> nodeMap = new HashMap<>();
+				allList.forEach(node -> {
+					oldToNewIdMap.put(node.getId(), SnowFlakeUtil.getId());
+					nodeMap.put(node.getId().toString(), node);
+				});
 				//todo 单份复制
 				allList.forEach(node -> {
 					WbsTreeContract newData = new WbsTreeContract();
@@ -723,7 +728,7 @@ public class InformationWriteQueryController extends BladeController {
 
 					if(new Integer("6").equals(node.getDeptCategory())){
 						//生成施工日志
-						this.createLedger(newData, saveLedger);
+						this.createLedger(newData, saveLedger, nodeMap, null);
 					}
 				});
 			}
@@ -739,7 +744,11 @@ public class InformationWriteQueryController extends BladeController {
 
 					//重塑关键信息
 					Map<Long,Long> oldToNewIdMap = new HashMap<>();
-					allList.forEach(node -> oldToNewIdMap.put(node.getId(), SnowFlakeUtil.getId()));
+					Map<String, WbsTreeContract> nodeMap = new HashMap<>();
+					allList.forEach(node -> {
+						oldToNewIdMap.put(node.getId(), SnowFlakeUtil.getId());
+						nodeMap.put(node.getId().toString(), node);
+					});
 
 					allList.forEach(node -> {
 						WbsTreeContract newData = new WbsTreeContract();
@@ -784,7 +793,7 @@ public class InformationWriteQueryController extends BladeController {
 
 						if(new Integer("6").equals(node.getDeptCategory())){
 							//生成施工日志
-							this.createLedger(newData, saveLedger);
+							this.createLedger(newData, saveLedger, nodeMap, null);
 						}
 					});
 
@@ -820,10 +829,31 @@ public class InformationWriteQueryController extends BladeController {
 	/**
 	 * 生成施工日志记录
 	 */
-	private void createLedger(WbsTreeContract newData, List<ConstructionLedger> saveLedger){
+	private void createLedger(WbsTreeContract newData, List<ConstructionLedger> saveLedger, Map<String, WbsTreeContract> contractNodeMap, Map<String, WbsTreePrivate> projectNodeMap){
 		//工序,需要新增施工台账
 		ConstructionLedger ledger = new ConstructionLedger();
-		ledger.setSite(newData.getDeptName());
+		//获取这个节点的原始信息
+		if(contractNodeMap != null){
+			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());
+					if(parentNode != null){
+						ledger.setStation(StringUtils.isNotEmpty(parentNode.getFullName()) ? parentNode.getFullName() : parentNode.getDeptName());
+					}
+				}
+			}
+		} else if(projectNodeMap != null) {
+			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());
+				}
+			}
+		}
+
+		ledger.setSite(StringUtils.isNotEmpty(newData.getFullName()) ? newData.getFullName() : newData.getDeptName());
 		ledger.setIsBeton(newData.getIsConcrete());
 		ledger.setWbsId(newData.getPKeyId());
 		ledger.setContractId(Long.parseLong(newData.getContractId()));
@@ -1123,7 +1153,7 @@ public class InformationWriteQueryController extends BladeController {
 		//保存进回收站
 		this.recycleBinClient.saveDelBusinessData(ids, removeNode.getDeptName(), 2, parentNodeName.toString(), removeNode.getProjectId(), removeNode.getContractId());
 
-		return R.data(this.wbsTreeContractClient.removeContractTreeNode(ids));
+		return R.data(this.wbsTreeContractClient.removeContractTreeNode(Func.toStrList(ids)));
 	}
 
 	/**
@@ -1207,7 +1237,11 @@ public class InformationWriteQueryController extends BladeController {
 		if(selectedNodeList.size() > 0){
 			//重塑关键信息
 			Map<Long, Long> OldIdToNewIdMap = new HashMap<>();
-			selectedNodeList.forEach(half -> OldIdToNewIdMap.put(half.getId(), SnowFlakeUtil.getId()));
+			Map<String, WbsTreePrivate> nodeMap = new HashMap<>();
+			selectedNodeList.forEach(half -> {
+				OldIdToNewIdMap.put(half.getId(), SnowFlakeUtil.getId());
+				nodeMap.put(half.getId().toString(), half);
+			});
 
 			//处理数据
 			selectedNodeList.forEach(half -> {
@@ -1275,7 +1309,7 @@ public class InformationWriteQueryController extends BladeController {
 
 				if(new Integer("6").equals(newData.getDeptCategory())){
 					//生成施工日志
-					this.createLedger(newData, saveLedger);
+					this.createLedger(newData, saveLedger, null, nodeMap);
 				}
 
 			});

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/RecycleBinController.java

@@ -147,6 +147,8 @@ public class RecycleBinController extends BladeController {
 			wrapper.lambda().eq(RecycleBin::getCreateUser, AuthUtil.getUserId());
 		}
 
+		wrapper.lambda().orderByDesc(RecycleBin::getCreateTime);
+
 		return R.data(this.recycleBinService.page(Condition.getPage(query), wrapper));
 	}
 	

+ 5 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionController.java

@@ -265,7 +265,9 @@ public class UserOpinionController extends BladeController {
 
 		//生成第一次流程
 		List<UserOpinionFlow> saveFlowList = new ArrayList<>();
-		String manageTime = DateUtil.format(DateUtils.addDays(new Date(), 5), "yyyy-MM-dd");
+		Date nowDate = new Date();
+		//30分钟相应时间
+		String manageTime = DateUtil.format(DateUtil.plusMinutes(nowDate, 30), "yyyy-MM-dd HH:mm:ss");
 		//提交成功环节
 		saveFlowList.add(setUserData(new UserOpinionFlow(idKey, 2, 1, 1, "已提交", "已成功提交您的工单信息", manageTime, manageUser, manageUserName, manegeUserPhone)));
 		//分配维护人员环节
@@ -279,7 +281,8 @@ public class UserOpinionController extends BladeController {
 		//最后新增主表数据
 		UserOpinion newUserOpinion = new UserOpinion();
 		BeanUtils.copyProperties(userOpinionVo, newUserOpinion);
-		newUserOpinion.setCreateTime(new Date());
+		newUserOpinion.setCreateTime(nowDate);
+
 		return R.status(this.userOpinionService.save(newUserOpinion));
 	}
 

+ 3 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionFlowController.java

@@ -128,7 +128,9 @@ public class UserOpinionFlowController extends BladeController {
 
 			//生成新流程
 			List<UserOpinionFlow> saveFlowList = new ArrayList<>();
-			String manageTime = DateUtil.format(DateUtils.addDays(new Date(), 5), "yyyy-MM-dd");
+			Date nowDate = new Date();
+			//30分钟相应时间
+			String manageTime = DateUtil.format(DateUtil.plusMinutes(nowDate, 30), "yyyy-MM-dd HH:mm:ss");
 			//提交成功环节
 			saveFlowList.add(this.setUserData(new UserOpinionFlow(Long.parseLong(userOpinionId), 2, newNumber, 1, "已提交", "已成功提交您的工单信息", manageTime, manageUser, manageUserName, manegeUserPhone), true));
 			//分配维护人员环节

+ 2 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.java

@@ -21,7 +21,6 @@ import org.springblade.business.entity.UserOpinion;
 import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.UserOpinionVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
 
 /**
@@ -32,6 +31,8 @@ import java.util.List;
  */
 public interface UserOpinionMapper extends BaseMapper<UserOpinion> {
 
+	List<UserOpinion> opinionPage(@Param("current")Long current, @Param("size")Long size, @Param("param") UserOpinionVO userOpinion, @Param("currentUser") String currentUser);
+
 	List<UserOpinion> queryOpinionTypeAmount();
 
 	List<BusinessUserOpinionVO> queryManageUserOpinionList(@Param("currentUser") String currentUser);

+ 19 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.xml

@@ -72,11 +72,12 @@
                     uof.*
                 from
                 (
-                    select user_opinion_id,is_current,manage_time,number,sort,evaluation,manage_user_name from u_user_opinion_flow where is_deleted = 0
+                    select user_opinion_id,is_current,manage_time,number,sort,evaluation,manage_user_name from u_user_opinion_flow AS of1 where is_deleted = 0
                     <if test="currentUser != null and currentUser != ''">
                         and manage_user = #{currentUser}
                     </if>
-                    and sort = 4 order by number DESC
+                    and sort = 4
+                    and not exists(select 1 from u_user_opinion_flow AS of2 where of1.user_opinion_id = of2.user_opinion_id and of2.number > of1.number)
                 ) as uof
             ) as uof on uof.user_opinion_id = uo.id
             where uo.is_deleted = 0 order by uof.number DESC
@@ -91,4 +92,20 @@
         select id,project_id,contract_id,opinion_content,problem_type,create_time,good_number, number,create_user,create_user_name from u_user_opinion where is_deleted = 0 and create_user != #{currentUser} order by create_time DESC limit ${current},${size}
     </select>
 
+    <select id="opinionPage" resultMap="userOpinionResultMap">
+        select
+          id,
+          project_id,
+          contract_id,
+          opinion_content,
+          problem_type,
+          create_time,
+          good_number,
+          number,
+          create_user,
+          create_user_name
+        from u_user_opinion
+        where is_deleted = 0 order by create_user = #{currentUser} DESC,create_time DESC limit ${current},${size}
+    </select>
+
 </mapper>

+ 0 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -39,10 +39,6 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 		//设置分页
 		IPage<ArchiveFileVO> iPage = Condition.getPage(query);
 
-		if(StringUtils.isNotEmpty(vo.getNodeIds())){
-			vo.setNodeIdArray(Arrays.asList(vo.getNodeIds().split(",")));
-		}
-
 		//汇总
 		Integer total = this.baseMapper.selectArchiveFileCount(vo);
 		if(total == null){

+ 9 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionServiceImpl.java

@@ -134,7 +134,7 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 						vo.setTimeRemaining("已处理");
 					} else {
 						//未处理
-						Date manageDate = DateUtil.parseDate(vo.getManageTime()), nowDate = new Date();
+						Date manageDate = DateUtil.parse(vo.getManageTime().contains(":") ? vo.getManageTime() : vo.getManageTime() + " 00:00:00", "yyyy-MM-dd HH:mm:ss"), nowDate = new Date();
 						long between = manageDate.getTime() - nowDate.getTime();
 						if(between > 0){
 							long day = between / (24 * 60 * 60 * 1000);
@@ -225,6 +225,11 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 	public IPage<UserOpinionVO> selectUserOpinionPage(IPage<UserOpinionVO> page, UserOpinionVO userOpinion, BladeUser users) {
 		//当前页面数据
 		long current = (page.getCurrent() - 1L) * page.getSize();
+		//获取总数
+		long pageCount = this.count();
+//		//获取数据
+//		List<UserOpinion> currentUserResult = this.baseMapper.opinionPage(current, page.getSize(), userOpinion, String.valueOf(users.getUserId()));
+
 		//获取当前用户的提交记录
 		List<UserOpinion> currentUserResult = this.baseMapper.queryCurrentUserOpinionList(users.getUserId());
 		//获取非当前用户提交记录
@@ -280,6 +285,9 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 				}
 
 			});
+
+			page.setTotal(pageCount);
+
 			return page.setRecords(resultVo);
 		}
 		return null;

+ 37 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WeatherInfoServiceImpl.java

@@ -9,7 +9,9 @@ import org.springblade.business.entity.WeatherInfo;
 import org.springblade.business.mapper.WeatherInfoMapper;
 import org.springblade.business.service.WeatherInfoService;
 //import org.springframework.scheduling.annotation.Scheduled;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ProjectContractArea;
+import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.feign.ProjectContractAreaClient;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@ public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, Weath
 
     private final ProjectContractAreaClient projectContractAreaClient;
 
+    private final ProjectClient projectClient;
+
     /**
      * 根据所选年份获取当年所有天气台账
      */
@@ -93,7 +97,6 @@ public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, Weath
         //获取所有合同段的定位信息
         List<ProjectContractArea> areaList = this.projectContractAreaClient.queryAllContractArea();
 
-        //todo 这里之后会换成批量
         for(ProjectContractArea area : areaList){
             try{
                 //校验当前区域是否已经获取当天日期(手动补填或自动获取)
@@ -125,4 +128,37 @@ public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, Weath
         }
     }
 
+    /**
+     * 同步历史天气
+     */
+    @Scheduled(cron = "0 0 8 * * ?")
+    public void syncHistoryWeatherInfo(){
+        //获取所有合同段的定位信息
+        List<ProjectContractArea> areaList = this.projectContractAreaClient.queryAllContractArea();
+
+        //分组,以项目为单位
+        Map<String, List<ProjectContractArea>> map = new HashMap<>();
+        areaList.forEach(area -> {
+            List<ProjectContractArea> list;
+            if(map.containsKey(area.getProjectId())){
+                list = map.get(area.getProjectId());
+            } else {
+                list = new ArrayList<>();
+            }
+
+            list.add(area);
+            map.put(area.getProjectId(), list);
+        });
+
+        for(ProjectContractArea area : areaList){
+            try{
+                //获取项目的计划开工时间
+                this.projectClient.queryProjectList(Func.toStrList(area.getProjectId()));
+
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+
 }

+ 16 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeClientImpl.java

@@ -9,6 +9,7 @@ import org.springblade.manager.service.IArchiveTreeService;
 import org.springblade.manager.vo.ArchiveTreeVO;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -17,6 +18,21 @@ public class ArchiveTreeClientImpl implements ArchiveTreeClient {
 
     private final IArchiveTreeService archiveTreeService;
 
+    @Override
+    public List<ArchiveTree> queryAllChildByAncestors(String id) {
+        List<ArchiveTree> archiveTreeList = this.archiveTreeService.list(Wrappers.<ArchiveTree>lambdaQuery().like(ArchiveTree::getAncestors, id));
+        if(archiveTreeList == null || archiveTreeList.size() <= 0){
+            //有可能已经是最底节点
+            archiveTreeList = new ArrayList<>();
+            ArchiveTree archiveTree = this.archiveTreeService.getById(id);
+            if(archiveTree != null){
+                archiveTreeList.add(archiveTree);
+            }
+        }
+
+        return archiveTreeList;
+    }
+
     @Override
     public List<ArchiveTree> queryTreeNodeByIds(List<String> ids) {
         return this.archiveTreeService.list(Wrappers.<ArchiveTree>lambdaQuery().in(ArchiveTree::getId, ids));

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -141,8 +141,8 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
     }
 
     @Override
-    public Boolean removeContractTreeNode(String ids) {
-        return this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate().set(WbsTreeContract::getIsDeleted, 1).in(WbsTreeContract::getPKeyId, Func.toLongList(ids)));
+    public Boolean removeContractTreeNode(List<String> ids) {
+        return this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate().set(WbsTreeContract::getIsDeleted, 1).in(WbsTreeContract::getPKeyId, ids));
     }
 
     @Override