Explorar o código

1、首件上报、资料查询相关bug
2、后管消息区接口

liuyc %!s(int64=2) %!d(string=hai) anos
pai
achega
1875956be1

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java

@@ -119,4 +119,7 @@ public class InformationQuery extends BaseEntity {
     @ApiModelProperty("pdf路径,引用试验记录后合并的pdf")
     private String pdfTrialUrl;
 
+    @ApiModelProperty("首件关联工序资料ids")
+    private String sjRecordIds;
+
 }

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java

@@ -67,6 +67,8 @@ public class InformationQueryVO extends InformationQuery {
 
 	private String classifyType;
 
+	private Boolean isApprove;
+
 	@ApiModelProperty("上报批次")
 	private String reportNumber;
 

+ 41 - 20
blade-service/blade-business/src/main/java/org/springblade/business/controller/BusinessUserOpinionController.java

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -14,9 +15,11 @@ import org.springblade.business.entity.UserOpinion;
 import org.springblade.business.entity.UserOpinionFile;
 import org.springblade.business.entity.UserOpinionFlow;
 import org.springblade.business.feign.MessageWarningClient;
+import org.springblade.business.service.ITaskService;
 import org.springblade.business.service.IUserOpinionFileService;
 import org.springblade.business.service.IUserOpinionFlowService;
 import org.springblade.business.service.IUserOpinionService;
+import org.springblade.business.socket.WebSocket;
 import org.springblade.business.vo.AssessmentUserVOS;
 import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.MessageWarningVO;
@@ -27,9 +30,13 @@ import org.springblade.core.secure.BladeUser;
 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.ObjectUtil;
 import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @RestController
@@ -46,13 +53,17 @@ public class BusinessUserOpinionController {
 
     private final MessageWarningClient messageWarningClient;
 
+    private final ITaskService iTaskService;
+
+    private final WebSocket webSocket;
+
     /**
      * isIgnore
      */
     @PostMapping("/isIgnore")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "是否忽略")
-    public R<Boolean> isIgnore(@RequestParam String userOpinionId){
+    public R<Boolean> isIgnore(@RequestParam String userOpinionId) {
         return R.data(this.userOpinionService.update(Wrappers.<UserOpinion>lambdaUpdate().set(UserOpinion::getIsIgnore, 1).eq(UserOpinion::getId, userOpinionId)));
     }
 
@@ -62,7 +73,7 @@ public class BusinessUserOpinionController {
     @GetMapping("/queryUserAssessmentPage")
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "考核区分页")
-    public R<IPage<AssessmentUserVOS>> queryUserAssessmentPageList(AssessmentUserVOS vo){
+    public R<IPage<AssessmentUserVOS>> queryUserAssessmentPageList(AssessmentUserVOS vo) {
         Query query = new Query();
         query.setCurrent(vo.getCurrent());
         query.setSize(vo.getSize());
@@ -71,7 +82,7 @@ public class BusinessUserOpinionController {
         //总数
         Integer count = this.userOpinionFlowService.countUserAssessmentPageList(vo);
         //分页数据
-        if(StringUtils.isNotEmpty(vo.getEndTime())){
+        if (StringUtils.isNotEmpty(vo.getEndTime())) {
             //因为between的含头不含尾属性,需要给结尾时间+1
             String endTime = vo.getEndTime();
             endTime = DateUtil.format(org.apache.commons.lang.time.DateUtils.addDays(DateUtil.parse(endTime, "yyyy-MM-dd hh:mm"), 1), "yyyy-MM-dd hh:mm");
@@ -80,7 +91,7 @@ public class BusinessUserOpinionController {
         List<AssessmentUserVOS> result = this.userOpinionFlowService.queryUserAssessmentPage(vo);
         result.forEach(vos -> {
             List<UserOpinionFile> files = this.userOpinionFileService.selectUserOpinionFileByUserOpinionKey(vos.getUserOpinionId());
-            if(files != null && files.size() > 0){
+            if (files != null && files.size() > 0) {
                 vos.setFileUrlList(files.stream().map(UserOpinionFile::getFileUrl).distinct().collect(Collectors.toList()));
             }
             vos.setOperation("qufq".equals(AuthUtil.getUserName()));
@@ -94,6 +105,7 @@ public class BusinessUserOpinionController {
 
     /**
      * 获取所有工单及处理进度
+     *
      * @param query 分页信息
      * @return 结果
      */
@@ -103,12 +115,13 @@ public class BusinessUserOpinionController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "query", value = "分页信息", required = true)
     })
-    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionListAll(Query query){
+    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionListAll(Query query) {
         return R.data(this.userOpinionService.queryBusinessUserOpinionListAll(query));
     }
 
     /**
      * 业务人员提交环节操作
+     *
      * @return 结果
      */
     @PostMapping("/manageUserOperationStatus")
@@ -119,9 +132,9 @@ public class BusinessUserOpinionController {
             @ApiImplicitParam(name = "newNumber", value = "当前流程次数", required = true),
             @ApiImplicitParam(name = "currentLinkId", value = "当前环节ID", required = true)
     })
-    public R<Boolean> manageUserOperationStatus(@RequestParam String userOpinionId, @RequestParam Integer currentLink, @RequestParam Integer newNumber, @RequestParam String currentLinkId, String manageTime){
+    public R<Boolean> manageUserOperationStatus(@RequestParam String userOpinionId, @RequestParam Integer currentLink, @RequestParam Integer newNumber, @RequestParam String currentLinkId, String manageTime) {
 
-        if(StringUtils.isEmpty(currentLinkId)){
+        if (StringUtils.isEmpty(currentLinkId)) {
             return R.data(-1, false, "缺少currentLinkId参数");
         }
         //获取当前操作用户
@@ -135,15 +148,15 @@ public class BusinessUserOpinionController {
 
         //找到当前环节的下一环节
         Long nextLink = null, nextLinkEnd = null;
-        if(StringUtils.isEmpty(manageTime) && new Integer("3").equals(currentLink)){
+        if (StringUtils.isEmpty(manageTime) && new Integer("3").equals(currentLink)) {
             //直接提交完结
             nextLink = flowVOS.get(2).getId();
             nextLinkEnd = flowVOS.get(3).getId();
         } else {
-            for(int i = 0, l = flowVOS.size(); i < l; i ++){
-                if(new Long(currentLinkId).equals(flowVOS.get(i).getId())){
+            for (int i = 0, l = flowVOS.size(); i < l; i++) {
+                if (new Long(currentLinkId).equals(flowVOS.get(i).getId())) {
                     //找到下一个环节ID
-                    switch (i){
+                    switch (i) {
                         case 1:
                             //说明当前环节是提交"进入人工处理环节"操作
                             nextLink = flowVOS.get(i + 1).getId();
@@ -162,8 +175,8 @@ public class BusinessUserOpinionController {
 
         //将当前环节更改为已完成
         boolean result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getIsCurrent, 2).set(UserOpinionFlow::getUpdateUser, user.getUserId()).set(UserOpinionFlow::getUpdateTime, new Date()).eq(UserOpinionFlow::getId, currentLinkId));
-        if(result){
-            if(StringUtils.isEmpty(manageTime)){
+        if (result) {
+            if (StringUtils.isEmpty(manageTime)) {
                 manageTime = DateUtils.formatDate(new Date(), "yyyy-MM-dd");
             } else {
                 //更新预计时间
@@ -173,21 +186,21 @@ public class BusinessUserOpinionController {
             //内容
             String content = "";
 
-            if(nextLink != null && StringUtils.isNotEmpty(String.valueOf(nextLink))){
+            if (nextLink != null && StringUtils.isNotEmpty(String.valueOf(nextLink))) {
                 content = "用户" + userOpinion.getCreateUserName() + ",您好,您所提交的【" + userOpinion.getProblemType() + ":" + userOpinion.getOpinionContent() + "】工单服务已经进入人工处理环节,处理人:" + AuthUtil.getNickName();
 
                 //提交"进入人工处理环节"操作
                 result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getReplyContent, "预计" + manageTime + "之前完成").set(UserOpinionFlow::getUpdateTime, new Date()).set(UserOpinionFlow::getIsCurrent, new Integer("3").equals(currentLink) ? 2 : 1).eq(UserOpinionFlow::getId, nextLink));
             }
-            if(nextLinkEnd != null && StringUtils.isNotEmpty(String.valueOf(nextLinkEnd))){
+            if (nextLinkEnd != null && StringUtils.isNotEmpty(String.valueOf(nextLinkEnd))) {
                 content = "用户" + userOpinion.getCreateUserName() + ",您好,您所提交的【" + userOpinion.getProblemType() + ":" + userOpinion.getOpinionContent() + "】工单服务已解决,请及时查看,处理人:" + AuthUtil.getNickName();
 
                 //提交"已解决"操作
                 result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getUpdateTime, new Date()).set(UserOpinionFlow::getIsCurrent, 2).eq(UserOpinionFlow::getId, nextLinkEnd));
             }
 
-            try{
-                if(StringUtils.isNotEmpty(content)){
+            try {
+                if (StringUtils.isNotEmpty(content)) {
                     this.messageWarningClient.savePushUserMessageWarning(new MessageWarningVO(
                             userOpinion.getProjectId(),
                             userOpinion.getContractId(),
@@ -197,7 +210,14 @@ public class BusinessUserOpinionController {
                             0
                     ));
                 }
-            }catch (Exception e){
+
+                //通过WebSocket推送数量条数推送给反馈人
+                if (ObjectUtil.isNotEmpty(userOpinion.getProjectId()) && ObjectUtil.isNotEmpty(userOpinion.getContractId()) && ObjectUtil.isNotEmpty(userOpinion.getCreateUser())) {
+                    Map<String, String> stringMap = iTaskService.getTaskCount(userOpinion.getProjectId().toString(), userOpinion.getContractId().toString(), userOpinion.getCreateUser().toString());
+                    webSocket.sendMessageByUserId(userOpinion.getCreateUser().toString(), JSON.toJSONString(stringMap));
+                }
+
+            } catch (Exception e) {
                 e.printStackTrace();
             }
 
@@ -208,6 +228,7 @@ public class BusinessUserOpinionController {
 
     /**
      * 获取分配给当前登录用户的工单记录
+     *
      * @return 结果集
      */
     @GetMapping("/queryBusinessUserOpinionList")
@@ -217,13 +238,13 @@ public class BusinessUserOpinionController {
             @ApiImplicitParam(name = "current", value = "当前页", required = true),
             @ApiImplicitParam(name = "size", value = "当前页显示数量", required = true)
     })
-    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionList(@RequestParam Integer current, @RequestParam Integer size){
+    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionList(@RequestParam Integer current, @RequestParam Integer size) {
         BladeUser user = AuthUtil.getUser();
         Query query = new Query();
         query.setCurrent(current);
         query.setSize(size);
         //获取推送给当前用户的工单信息
-        return R.data(this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(user.getUserId()),query));
+        return R.data(this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(user.getUserId()), query));
     }
 
 }

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

@@ -1400,14 +1400,14 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryMappingStructureTree(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> result = this.queryContractTree(parentId, contractId, contractIdRelation,null);
+        List<WbsTreeContractTreeVOS> result = this.queryContractTree(parentId, contractId, contractIdRelation, null);
         if (result.size() == 1) {
             //只有一个子节点,继续向下
             int size;
             WbsTreeContractTreeVOS vos = result.get(0);
             do {
                 try {
-                    List<WbsTreeContractTreeVOS> childResult = this.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation(),null);
+                    List<WbsTreeContractTreeVOS> childResult = this.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation(), null);
 
                     vos.setChildren(childResult);
                     size = childResult.size();
@@ -2030,7 +2030,7 @@ public class InformationWriteQueryController extends BladeController {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation,null);
+        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation, null);
         rootTreeNode.removeIf(vos -> (vos.getNodeType() != null && vos.getNodeType() == 111));
 
         return R.data(rootTreeNode);
@@ -2057,7 +2057,7 @@ public class InformationWriteQueryController extends BladeController {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
-        return R.data(this.queryContractTree(parentId, contractId, contractIdRelation,classifyType));
+        return R.data(this.queryContractTree(parentId, contractId, contractIdRelation, classifyType));
     }
 
     /**
@@ -2102,7 +2102,7 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByFirstInfo(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation,null);
+        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation, null);
         //查询被标记为首件的数据
         rootTreeNode = rootTreeNode.stream().filter(WbsTreeContractTreeVOS::getIsFirst).collect(Collectors.toList());
 
@@ -2112,7 +2112,7 @@ public class InformationWriteQueryController extends BladeController {
     /**
      * 查询合同段划分树公共代码
      */
-    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation,String classifyType) {
+    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType) {
         List<WbsTreeContractTreeVOS> rootTreeNode;
 
         //获取合同段,检查是否是监理合同段

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

@@ -258,7 +258,7 @@ public class MessageWarningController extends BladeController {
     /***
      * 定时重发任务消息WebSocket
      */
-    @Scheduled(cron = "0 0/5 * * * ?")
+    @Scheduled(cron = "0 0/1 * * * ?")
     public void reSendMessage() throws IOException {
         Map<String, WebSocket> webSocketMap = WebSocket.getWebSocketMap();
         Map<String, String> webSocketMessageMap = WebSocket.getWebSocketMessageMap();
@@ -277,13 +277,16 @@ public class MessageWarningController extends BladeController {
         for (Map.Entry<String, String> entry : message) {
             String userId = entry.getKey();
             String projectAndContractId = entry.getValue();
-
-            if (StringUtils.isNotEmpty(projectAndContractId) && StringUtils.isNotEmpty(userId)) {
-
+            if (projectAndContractId.contains(",") && StringUtils.isNotEmpty(userId)) {
+                //客户端
                 String projectId = projectAndContractId.split(",")[0];
                 String contractId = projectAndContractId.split(",")[1];
                 Map<String, String> stringMap = iTaskService.getTaskCount(projectId, contractId, userId);
                 maps.add(stringMap);
+            } else {
+                //后管
+                Map<String, String> stringMap = iTaskService.getTaskCount(null, null, userId);
+                maps.add(stringMap);
             }
         }
 
@@ -292,6 +295,7 @@ public class MessageWarningController extends BladeController {
             webSocketMap.get(userId).sendMessage(JSON.toJSONString(map));
             logger.info("给用户{}重发消息{}", userId, map);
         }
+
         logger.info("定时重发消息WebSocket,reSendMessage()方法执行结束");
     }
 

+ 19 - 4
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionController.java

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -14,9 +15,8 @@ import org.springblade.business.entity.UserOpinionFile;
 import org.springblade.business.entity.UserOpinionFlow;
 import org.springblade.business.entity.UserOpinionGood;
 import org.springblade.business.feign.MessageWarningClient;
-import org.springblade.business.service.IUserOpinionFileService;
-import org.springblade.business.service.IUserOpinionFlowService;
-import org.springblade.business.service.IUserOpinionGoodService;
+import org.springblade.business.service.*;
+import org.springblade.business.socket.WebSocket;
 import org.springblade.business.vo.MessageWarningVO;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Condition;
@@ -26,6 +26,7 @@ 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.core.tool.utils.ObjectUtil;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
@@ -43,9 +44,9 @@ import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.business.entity.UserOpinion;
 import org.springblade.business.vo.UserOpinionVO;
-import org.springblade.business.service.IUserOpinionService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.io.IOException;
 import java.util.*;
 
 /**
@@ -80,6 +81,10 @@ public class UserOpinionController extends BladeController {
 
 	private final ProjectClient projectClient;
 
+	private final ITaskService iTaskService;
+
+	private final WebSocket webSocket;
+
 	/**
 	 * 取消点赞
 	 * @param userOpinionId 工单ID
@@ -285,6 +290,16 @@ public class UserOpinionController extends BladeController {
 					0
 			));
 
+			//通过WebSocket推送数量条数,推送到对应维护人的工单反馈中
+			if (ObjectUtil.isNotEmpty(userOpinionVo.getProjectId()) && ObjectUtil.isNotEmpty(userOpinionVo.getContractId()) && ObjectUtil.isNotEmpty(manageUser)) {
+				Map<String, String> stringMap = iTaskService.getTaskCount(userOpinionVo.getProjectId().toString(), userOpinionVo.getContractId().toString(), manageUser.toString());
+				try {
+					webSocket.sendMessageByUserId(manageUser.toString(), JSON.toJSONString(stringMap));
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+
 		}catch (Exception e){
 			e.printStackTrace();
 		}

+ 5 - 4
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -32,6 +32,7 @@
         <result column="e_visa_pdf_url" property="eVisaPdfUrl"/>
         <result column="table_id" property="tableId"/>
         <result column="link_merge_pdf_url" property="linkMergePdfUrl"/>
+        <result column="sj_record_ids" property="sjRecordIds"/>
         <result column="sort" property="sort"/>
     </resultMap>
 
@@ -396,8 +397,7 @@
             query.file_user_id_and_name,
             query.pdf_url,
             query.e_visa_pdf_url,
-            query.sort as qSort,
-            (select sort from m_wbs_tree_contract c where c.p_key_id = query.wbs_id ) as sort
+            query.sj_record_ids
         from
         (
             select
@@ -412,7 +412,8 @@
                 date_format(create_time,'%Y-%m-%d') as createTimes,
                 pdf_url,
                 e_visa_pdf_url,
-                wbs_id
+                wbs_id,
+                sj_record_ids
             from u_information_query
             where
                 is_deleted = 0
@@ -437,7 +438,7 @@
         <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
             and query.createTimes between #{query.startTime} and #{query.endTime}
         </if>
-        order by sort,qSort
+        order by create_time desc
         limit #{current}, #{size}
     </select>
 

+ 34 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -227,6 +227,11 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 this.informationQueryFileService.save(file);
             }
 
+            List<String> linkIds = linkDataList.stream().map(json -> json.getString("id")).distinct().collect(Collectors.toList());
+            if (linkIds.size() > 0) {
+                oldData.setSjRecordIds(StringUtils.join(linkIds, ","));
+            }
+
             //修改数据
             this.baseMapper.updateById(oldData);
 
@@ -265,6 +270,11 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
             newData.setTableId(tableId);
 
+            List<String> linkIds = linkDataList.stream().map(json -> json.getString("id")).distinct().collect(Collectors.toList());
+            if (linkIds.size() > 0) {
+                newData.setSjRecordIds(StringUtils.join(linkIds, ","));
+            }
+
             //新增附件
             InformationQueryFile file = new InformationQueryFile();
             file.setQueryId(Long.parseLong(businessId));
@@ -319,6 +329,12 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
                 oldData.setUpdateTime(new Date());
                 oldData.setUpdateUser(user.getUserId());
+
+                List<String> linkIds = linkDataList.stream().map(json -> json.getString("id")).distinct().collect(Collectors.toList());
+                if (linkIds.size() > 0) {
+                    oldData.setSjRecordIds(StringUtils.join(linkIds, ","));
+                }
+
                 //修改数据
                 this.baseMapper.updateById(oldData);
             } else {
@@ -348,6 +364,12 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 newData.setSourceType(sourceType);
                 newData.setCreateUser(user.getUserId());
                 newData.setCreateTime(new Date());
+
+                List<String> linkIds = linkDataList.stream().map(json -> json.getString("id")).distinct().collect(Collectors.toList());
+                if (linkIds.size() > 0) {
+                    newData.setSjRecordIds(StringUtils.join(linkIds, ","));
+                }
+
                 //保存数据
                 this.baseMapper.insert(newData);
             }
@@ -470,6 +492,18 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                         //vor.setReportNumber(String.valueOf(tasks.get(0).getBatch()));
                     }
                 }
+
+                //校验关联的工序节点是否全都已审批
+                if (StringUtils.isNotEmpty(vor.getSjRecordIds())) {
+                    List<InformationQuery> informationQueryList = this.baseMapper.selectBatchIds(Func.toLongList(vor.getSjRecordIds()));
+                    List<InformationQuery> collect = informationQueryList.stream().filter(f -> f.getStatus().equals(2)).collect(Collectors.toList());
+                    if (collect.size() == informationQueryList.size()) {
+                        vor.setIsApprove(true);
+                    } else {
+                        vor.setIsApprove(false);
+                    }
+                }
+
             });
             page.setRecords(voResult);
             page.setTotal(count);

+ 55 - 44
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory;
 import org.springblade.business.entity.*;
 import org.springblade.business.mapper.TaskMapper;
 import org.springblade.business.service.*;
+import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.MessageWarningVO;
 import org.springblade.business.vo.TaskApprovalVO;
 import org.springblade.business.vo.TaskVO;
@@ -89,6 +90,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     private final ITaskBatchService taskBatchService;
 
+    private final UserOpinionServiceImpl userOpinionService;
+
     @Override
     public List<TaskParallel> queryApprovalUser(String formDataIds) {
         //返回结果
@@ -285,51 +288,58 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     @Override
     public Map<String, String> getTaskCount(String projectId, String contractId, String userId) {
-        List<Task> tasks = this.baseMapper.selectList(Wrappers.<Task>lambdaQuery()
-                .eq(Task::getProjectId, projectId)
-                .eq(Task::getContractId, contractId)
-                .eq(Task::getStatus, 1));
-
-        List<String> collect = tasks.stream().map(Task::getProcessInstanceId).collect(Collectors.toList());
-
-        long aLong = 0L;
-        if (collect.size() > 0) {
-            for (String id : collect) {
-                Long row = taskParallelService.getBaseMapper().selectCount(Wrappers.<TaskParallel>lambdaQuery()
-                        .eq(TaskParallel::getProcessInstanceId, id)
-                        .eq(TaskParallel::getStatus, 1)
-                        .eq(TaskParallel::getTaskUser, userId)
-                );
-                if (row == 1) {
-                    aLong++;
+        if (StringUtils.isNotEmpty(projectId) && StringUtils.isNotEmpty(contractId)) {
+            List<Task> tasks = this.baseMapper.selectList(Wrappers.<Task>lambdaQuery()
+                    .eq(Task::getProjectId, projectId)
+                    .eq(Task::getContractId, contractId)
+                    .eq(Task::getStatus, 1));
+
+            List<String> collect = tasks.stream().map(Task::getProcessInstanceId).collect(Collectors.toList());
+
+            long aLong = 0L;
+            if (collect.size() > 0) {
+                for (String id : collect) {
+                    Long row = taskParallelService.getBaseMapper().selectCount(Wrappers.<TaskParallel>lambdaQuery()
+                            .eq(TaskParallel::getProcessInstanceId, id)
+                            .eq(TaskParallel::getStatus, 1)
+                            .eq(TaskParallel::getTaskUser, userId)
+                    );
+                    if (row == 1) {
+                        aLong++;
+                    }
                 }
             }
-        }
 
-        List<MessageWarning> messageWarnings = messageWarningService.getBaseMapper().selectList(Wrappers.<MessageWarning>lambdaQuery()
-                .eq(MessageWarning::getProjectId, projectId)
-                .eq(MessageWarning::getContractId, contractId)
-                .eq(MessageWarning::getPushUser, userId)
-                .eq(MessageWarning::getIsRead, 0)
-        );
-
-        long messageCount1 = messageWarnings.stream().filter(f -> f.getType().equals(1)).count();
-        long messageCount2 = messageWarnings.stream().filter(f -> f.getType().equals(2)).count();
-        long messageCount3 = messageWarnings.stream().filter(f -> f.getType().equals(3)).count();
-        long messageCount4 = messageWarnings.stream().filter(f -> f.getType().equals(4)).count();
-        long messageCount5 = messageWarnings.stream().filter(f -> f.getType().equals(5)).count();
-
-        Map<String, String> map = new HashMap<>();
-        map.put("allCount", String.valueOf(aLong + messageWarnings.size()));//任务管理
-        map.put("taskCount", String.valueOf(aLong));//任务查看
-        map.put("messageCount", String.valueOf(messageWarnings.size()));//消息提醒
-        map.put("messageCount_1", String.valueOf(messageCount1));//任务催办
-        map.put("messageCount_2", String.valueOf(messageCount2));//监测预警
-        map.put("messageCount_3", String.valueOf(messageCount3));//废除通知
-        map.put("messageCount_4", String.valueOf(messageCount4));//工单反馈
-        map.put("messageCount_5", String.valueOf(messageCount5));//系统消息
-        map.put("userId", userId);
-        return map;
+            List<MessageWarning> messageWarnings = messageWarningService.getBaseMapper().selectList(Wrappers.<MessageWarning>lambdaQuery()
+                    .eq(MessageWarning::getProjectId, projectId)
+                    .eq(MessageWarning::getContractId, contractId)
+                    .eq(MessageWarning::getPushUser, userId)
+                    .eq(MessageWarning::getIsRead, 0)
+            );
+            long messageCount1 = messageWarnings.stream().filter(f -> f.getType().equals(1)).count();
+            long messageCount2 = messageWarnings.stream().filter(f -> f.getType().equals(2)).count();
+            long messageCount3 = messageWarnings.stream().filter(f -> f.getType().equals(3)).count();
+            long messageCount4 = messageWarnings.stream().filter(f -> f.getType().equals(4)).count();
+            long messageCount5 = messageWarnings.stream().filter(f -> f.getType().equals(5)).count();
+
+            Map<String, String> map = new HashMap<>();
+            map.put("allCount", String.valueOf(aLong + messageWarnings.size()));//任务管理
+            map.put("taskCount", String.valueOf(aLong));//任务查看
+            map.put("messageCount", String.valueOf(messageWarnings.size()));//消息提醒
+            map.put("messageCount_1", String.valueOf(messageCount1));//任务催办
+            map.put("messageCount_2", String.valueOf(messageCount2));//监测预警
+            map.put("messageCount_3", String.valueOf(messageCount3));//废除通知
+            map.put("messageCount_4", String.valueOf(messageCount4));//工单反馈
+            map.put("messageCount_5", String.valueOf(messageCount5));//系统消息
+            map.put("userId", userId);
+            return map;
+        } else {
+            Map<String, String> map = new HashMap<>();
+            List<BusinessUserOpinionVO> businessUserOpinionVOS = userOpinionService.getBaseMapper().queryManageUserOpinionList(userId).stream().filter(f -> f.getIsCurrent().equals(false)).collect(Collectors.toList());
+            map.put("myMessageCount", String.valueOf(businessUserOpinionVOS.size()));//后管消息区-我的消息-未处理
+            map.put("userId", userId);
+            return map;
+        }
     }
 
     /**
@@ -337,7 +347,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
      */
     @Override
     public List<String> queryBatchListTwo(String projectId, String contractId) {
-        return baseMapper.queryBatchListTwo(projectId,contractId);
+        return baseMapper.queryBatchListTwo(projectId, contractId);
     }
 
     @Override
@@ -348,7 +358,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     //@Async
 
     /**
-     *  批量电签接口
+     * 批量电签接口
+     *
      * @param taskApprovalVOS
      * @param userId
      * @throws FileNotFoundException

+ 17 - 4
blade-service/blade-business/src/main/java/org/springblade/business/socket/WebSocket.java

@@ -5,6 +5,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springblade.business.service.ITaskService;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import cn.hutool.core.util.StrUtil;
@@ -81,15 +82,27 @@ public class WebSocket {
         webSocketMessageMap.put(userId, message);
         logger.info("来自客户端用户:{} 消息:{}", userId, message);
 
-        String projectId = message.split(",")[0];
-        String contractId = message.split(",")[1];
+        String projectId = "";
+        String contractId = "";
+        if (message.contains(",")) {
+            projectId = message.split(",")[0];
+            contractId = message.split(",")[1];
+        } else {
+            //后管处理userId
+            userId = AuthUtil.getUserId().toString();
+            //userId = "1123598821738675201";
+        }
 
-        Map<String, String> stringMap = null;
+        Map<String, String> stringMap;
         if (StringUtils.isNotEmpty(projectId) && StringUtils.isNotEmpty(contractId) && StringUtils.isNotEmpty(userId)) {
+            //客户端
             stringMap = iTaskService.getTaskCount(projectId, contractId, userId);
+        } else {
+            //后管
+            stringMap = iTaskService.getTaskCount(null, null, userId);
         }
 
-        //切换项目合同段,推送当前项目合同段的业务数量
+        //客户端切换项目合同段、后管推送消息
         try {
             webSocketMap.get(userId).sendMessage(JSON.toJSONString(stringMap));
         } catch (IOException e) {

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -430,9 +430,9 @@ public class FirstController extends BladeController {
                 Elements sgTitle = doc.select("el-input[placeholder~=^施工单位]");
                 Elements sgTitle1 = doc.select("el-input[placeholder=安装单位]");
                 sgTitle.addAll(sgTitle1);
-                Elements htdTitle = doc.select("el-input[placeholder~=.*合同段.*]");
-                Elements htdTitle1 = doc.select("el-input[placeholder~=合同名称.*]");
-                htdTitle.addAll(htdTitle1);
+                Elements htdTitle = doc.select("el-input[placeholder~=.*合同段");
+                /*Elements htdTitle1 = doc.select("el-input[placeholder~=合同名称.*]");
+                htdTitle.addAll(htdTitle1);*/
                 Elements jlTitle = doc.select("el-input[placeholder~=监理单位.*]");
                 Elements bhTitle = doc.select("el-input[placeholder~=^编号]");
                 Elements bhTitle1 = doc.select("el-input[placeholder~=合同编号.*]");

+ 1 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -477,8 +477,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 }
             }
             // 获取默认密码配置
-            String initPassword = ParamCache.getValue(DEFAULT_PARAM_PASSWORD);
-            user.setPassword(initPassword);
+            user.setPassword("123456"); //此处不加密,submit里面加密了
             user.setPlaintextPassword("123456");
             user.setStatus(1);
             user.setIsDeleted(0);