Переглянути джерело

Merge remote-tracking branch 'origin/master'

wangyangyang 4 роки тому
батько
коміт
aceba5cef4

+ 3 - 3
operation_manager/src/main/java/com/huaxu/client/UserCenterClient.java

@@ -3,9 +3,7 @@ package com.huaxu.client;
 import com.huaxu.config.FeignConfig;
 
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -19,4 +17,6 @@ public interface UserCenterClient {
     @GetMapping("/dict/selectListByPCodes")
     Map<String,String> selectListByPCodes(@RequestParam String parentDictCodes);
 
+    @PostMapping("/user/findUserIdsByUserIds")
+    Map<Long,String> findUserIdsByUserIds(Long[] ids);
 }

+ 92 - 46
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java

@@ -120,30 +120,9 @@ public class WorkOrderManageController {
     public AjaxMessage<Integer> submitTask(
             @ApiParam(value = "1任务、2工单", required = true) @RequestParam Integer flowType,
             @ApiParam(value = "任务、工单id", required = true) @RequestParam Integer flowId,
-            @ApiParam(value = "json格式存储对应任务详情", required = false) @RequestParam(required = false) String flowDetail,
             @ApiParam(value = "处理结果", required = true) @RequestParam String flowResult,
-            @ApiParam(value = "1审批通过、2同意、3驳回", required = true) @RequestParam Integer actionId) {
+            @ApiParam(value = "1审批通过、2同意、3驳回、4漏点定位、5停水、6提交", required = true) @RequestParam Integer actionId) {
         LoginUser currentUser = UserUtil.getCurrentUser();
-        //有任务详情的更新详情表数据
-        if(!StringUtils.isEmpty(flowDetail)) {
-            WorkFlowDetail workFlowDetail =new WorkFlowDetail();
-            workFlowDetail.setFlowType(flowType);
-            workFlowDetail.setFlowId(flowId);
-            workFlowDetail.setFlowDetail(flowDetail);
-            Integer detailId= workFlowDetailService.selectDetailId(workFlowDetail);
-
-            //插入或更新详情
-            if(detailId==null) {
-                workFlowDetail.setCreateBy(currentUser.getUsername());
-                workFlowDetail.setDateCreate(new Date());
-                workFlowDetailService.insertSelective(workFlowDetail);
-            }else{
-                workFlowDetail.setUpdateBy(currentUser.getUsername());
-                workFlowDetail.setDateUpdate(new Date());
-                workFlowDetail.setId(detailId);
-                workFlowDetailService.updateByPrimaryKeySelective(workFlowDetail);
-            }
-        }
 
         WorkFlowLog workFlowLog=new WorkFlowLog();
         workFlowLog.setFlowId(flowId);
@@ -158,49 +137,83 @@ public class WorkOrderManageController {
         Action action=null;
         if(actionId==1){
             action=Action.ACTION_AUDIT;
-        }else if(actionId==2){
+        }else if(actionId==2||actionId==6){
             action=Action.ACTION_RECEIVE;
         }else if(actionId==3){
             action=Action.ACTION_REJECT;
         }
         Map<String,Object> args=new HashMap<>();
+
         //查询当前工单或任务 并更新当前状态
         if(flowType == 1){
             PlanManage plan= planManageService.selectByPrimaryKey(flowId);
             workFlowLog.setProcessInstanceId(plan.getProcessInstanceId());
             workFlowLog.setTaskId(plan.getCurrentTaskId());
 
-            List<TaskPorcessResult> handleResult = workFlowService.handleTask(action,plan.getCurrentTaskId(), null, null);
-            plan.setCurrentTaskId(handleResult.size()>0?handleResult.get(0).getCurrentTaskId():null);
-            plan.setCurrentUsers(handleResult.size()>0?handleResult.get(0).getCurrentTaskUsers():null);
-            plan.setCurrentTaskName(handleResult.size()>0?handleResult.get(0).getCurrentTaskName():null);
-            plan.setUpdateBy(currentUser.getUsername());
-            plan.setDateUpdate(new Date());
-            if(handleResult.size()==0||handleResult==null) {
-                plan.setPlanStatus(2);
-                plan.setPlanEndDate(new Date());
+            if(action!=null){
+                List<TaskPorcessResult> handleResult = workFlowService.handleTask(action,plan.getCurrentTaskId(), null, null);
+                plan.setCurrentTaskId(handleResult.size()>0?handleResult.get(0).getCurrentTaskId():null);
+                plan.setCurrentUsers(handleResult.size()>0?handleResult.get(0).getCurrentTaskUsers():null);
+                plan.setCurrentTaskName(handleResult.size()>0?handleResult.get(0).getCurrentTaskName():null);
+                plan.setUpdateBy(currentUser.getUsername());
+                plan.setDateUpdate(new Date());
+                if(handleResult.size()==0||handleResult==null) {
+                    plan.setPlanStatus(2);
+                    plan.setPlanEndDate(new Date());
+                }
+                planManageService.updateByPrimaryKey(plan);
             }
-            planManageService.updateByPrimaryKey(plan);
         }else if(flowType == 2){
             WorkOrderManage order= workOrderManageService.selectByPrimaryKey(flowId);
             workFlowLog.setProcessInstanceId(order.getProcessInstanceId());
             workFlowLog.setTaskId(order.getCurrentTaskId());
+            //如果是漏点定位和停水操作 创建子单
+            if(actionId==4||actionId==5){
+                WorkOrderManage workOrderManage=new WorkOrderManage();
+                workOrderManage.setTenantId(currentUser.getTenantId());
+                workOrderManage.setCreateBy(currentUser.getUsername());
+                workOrderManage.setDateCreate(new Date());
+                workOrderManage.setOrderStatus(0);
+                workOrderManage.setTaskNo(DatesUtil.formatDate(new Date(),"yyyyMMddHHmmss")+String.valueOf((int) (Math.random()*(9999-1000)+1000)));
+                workOrderManage.setOrderPid(flowId);
+                workOrderManage.setEventType(order.getEventType());
+                workOrderManage.setOrderTypeId(actionId==4?4:2);
+                workOrderManageService.insertSelective(workOrderManage);
+            }else if(actionId==6){
+                //判断子单完成情况后才可以提交
+                List<WorkOrderManageDto> childOrder=workOrderManageService.selectOrderDetail(flowId);
+                if(childOrder.size()>1){
+                    for(int i=1;i<childOrder.size();i++) {
+                        WorkOrderManageDto child=childOrder.get(i);
+                        if(child.getOrderTypeId()==4&&child.getOrderStatus()!=2)
+                            return new AjaxMessage<>(ResultStatus.CHILD_ORDER_ING);
+                    }
+                }
 
-            List<TaskPorcessResult> handleResult = workFlowService.handleTask(action,order.getCurrentTaskId(), null, null);
-            order.setCurrentTaskId(handleResult.size()>0?handleResult.get(0).getCurrentTaskId():null);
-            order.setCurrentUsers(handleResult.size()>0?handleResult.get(0).getCurrentTaskUsers():null);
-            order.setCurrentTaskName(handleResult.size()>0?handleResult.get(0).getCurrentTaskName():null);
-            order.setUpdateBy(currentUser.getUsername());
-            order.setDateUpdate(new Date());
-            if(handleResult.size()==0||handleResult==null) {
-                order.setOrderStatus(2);
-                order.setFinishDate(new Date());
+                //判断父单完成情况后才可以提交
+                WorkOrderManage parentOrder=workOrderManageService.selectByPrimaryKey(order.getOrderPid());
+                if(order.getOrderTypeId()==2&&parentOrder.getOrderStatus()!=2) {
+                    return new AjaxMessage<>(ResultStatus.PARENT_ORDER_ING);
+                }
+            }
+
+            if(action!=null){
+                List<TaskPorcessResult> handleResult = workFlowService.handleTask(action,order.getCurrentTaskId(), null, null);
+                order.setCurrentTaskId(handleResult.size()>0?handleResult.get(0).getCurrentTaskId():null);
+                order.setCurrentUsers(handleResult.size()>0?handleResult.get(0).getCurrentTaskUsers():null);
+                order.setCurrentTaskName(handleResult.size()>0?handleResult.get(0).getCurrentTaskName():null);
+                order.setUpdateBy(currentUser.getUsername());
+                order.setDateUpdate(new Date());
+                if(handleResult.size()==0||handleResult==null) {
+                    order.setOrderStatus(2);
+                    order.setFinishDate(new Date());
+                }
+                workOrderManageService.updateByPrimaryKey(order);
             }
-            workOrderManageService.updateByPrimaryKey(order);
         }
         //记录日志
         workFlowLogService.insert(workFlowLog);
-        return new AjaxMessage<>(ResultStatus.OK );
+        return new AjaxMessage<>(ResultStatus.OK);
     }
     /**
      * APP查询工单详情
@@ -208,8 +221,41 @@ public class WorkOrderManageController {
      */
     @RequestMapping(value = "selectOrderDetail", method = RequestMethod.GET)
     @ApiOperation(value = "APP查询工单详情")
-    public AjaxMessage<WorkOrderManageDto> selectOrderDetail(
+    public AjaxMessage<List<WorkOrderManageDto>> selectOrderDetail(
             @ApiParam(value = "工单id", required = true) @RequestParam Integer flowId) {
-        return new AjaxMessage<>(ResultStatus.OK,  workOrderManageService.selectOrderDetail(flowId));
+        List<WorkOrderManageDto> result=workOrderManageService.selectOrderDetail(flowId);
+        Map<String,String> dictMap=userCenterClient.selectListByPCodes("SC_WORK_ORDER_TYPE,SC_TASK_TYPE");
+        if(result.size()>0&&dictMap.size()>0){
+            for(WorkOrderManageDto workOrderManageDto:result) {
+                workOrderManageDto.setTypeName(dictMap.get(workOrderManageDto.getOrderTypeId().toString()));
+            }
+        }
+        return new AjaxMessage<>(ResultStatus.OK,  result);
+    }
+    @RequestMapping(value = "saveDetail", method = RequestMethod.GET)
+    @ApiOperation(value = "保存工单和任务的详情数据")
+    public AjaxMessage<Integer> saveDetail(
+            @ApiParam(value = "1任务、2工单", required = true) @RequestParam Integer flowType,
+            @ApiParam(value = "任务、工单id", required = true) @RequestParam Integer flowId,
+            @ApiParam(value = "json格式存储对应任务详情", required = true) @RequestParam String flowDetail){
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        WorkFlowDetail workFlowDetail =new WorkFlowDetail();
+        workFlowDetail.setFlowType(flowType);
+        workFlowDetail.setFlowId(flowId);
+        workFlowDetail.setFlowDetail(flowDetail);
+        Integer detailId= workFlowDetailService.selectDetailId(workFlowDetail);
+
+        //插入或更新详情
+        if(detailId==null) {
+            workFlowDetail.setCreateBy(currentUser.getUsername());
+            workFlowDetail.setDateCreate(new Date());
+            workFlowDetailService.insertSelective(workFlowDetail);
+        }else{
+            workFlowDetail.setUpdateBy(currentUser.getUsername());
+            workFlowDetail.setDateUpdate(new Date());
+            workFlowDetail.setId(detailId);
+            workFlowDetailService.updateByPrimaryKeySelective(workFlowDetail);
+        }
+        return new AjaxMessage<>(ResultStatus.OK);
     }
 }

+ 1 - 1
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -25,5 +25,5 @@ public interface WorkOrderManageMapper {
 
     List<WorkOrderManageDto> selectAppAll( @Param("userId")Integer userId,@Param("tenantId")String tenantId);
 
-    WorkOrderManageDto selectOrderDetail(Integer id);
+    List<WorkOrderManageDto> selectOrderDetail(Integer id);
 }

+ 1 - 1
operation_manager/src/main/java/com/huaxu/order/entity/WorkOrderManage.java

@@ -75,7 +75,7 @@ public class WorkOrderManage implements Serializable {
     private Integer orderTypeId;
 
     @ApiModelProperty(value = "父单编号")
-    private String orderPid;
+    private Integer orderPid;
 
     @ApiModelProperty(value = "租户id")
     private String tenantId;

+ 1 - 1
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -35,6 +35,6 @@ public interface WorkOrderManageService {
     /**
      * 按id查询工单和详情
      */
-    WorkOrderManageDto selectOrderDetail(Integer id);
+    List<WorkOrderManageDto> selectOrderDetail(Integer id);
 
 }

+ 1 - 1
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -71,7 +71,7 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
      * 按id查询工单和详情
      */
     @Override
-    public WorkOrderManageDto selectOrderDetail(Integer id) {
+    public List<WorkOrderManageDto> selectOrderDetail(Integer id) {
         return workOrderManageMapper.selectOrderDetail(id);
     }
 }

+ 94 - 10
operation_manager/src/main/java/com/huaxu/task/controller/PlanManageController.java

@@ -2,6 +2,7 @@ package com.huaxu.task.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.client.UserCenterClient;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.Pagination;
@@ -33,6 +34,8 @@ public class PlanManageController {
 
     @Autowired
     WorkFlowService workFlowService;
+    @Autowired
+    private UserCenterClient userCenterClient;
 
 
     /**
@@ -93,10 +96,11 @@ public class PlanManageController {
     public AjaxMessage<Pagination<PlanManageDto>> selectPlan(
             @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
             @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
-            @ApiParam(value = "状态", required = false) @RequestParam(required = false) Integer planStatus,
+            @ApiParam(value = "任务类型(巡检:7,侧漏:8,养护:9)", required = false) @RequestParam(required = false) Integer taskType,
+            @ApiParam(value = "状态(0:巡检计划;null:所有任务;1:执行中;2:完成)", required = false) @RequestParam(required = false) Integer planStatus,
             @ApiParam(value = "计划单号或计划名称", required = false) @RequestParam(required = false) String key,
-            @ApiParam(value = "计划安排起始日期", required = false) @RequestParam(required = false) String startDate,
-            @ApiParam(value = "计划安排截至日期", required = false) @RequestParam(required = false) String endDate){
+            @ApiParam(value = "计划起始日期(yyyy-MM-dd)", required = false) @RequestParam(required = false) String startDate,
+            @ApiParam(value = "计划截至日期(yyyy-MM-dd)", required = false) @RequestParam(required = false) String endDate){
         PlanManageDto planManageDto = new PlanManageDto();
         //根据用户编号,获取用户的权限
         LoginUser loginUser = UserUtil.getCurrentUser();
@@ -106,6 +110,7 @@ public class PlanManageController {
             planManageDto.setEndDate(endDate);
         }
         planManageDto.setPlanStatus(planStatus);
+        planManageDto.setTaskType(taskType);
         planManageDto.setTenantId(loginUser.getTenantId());
         planManageDto.setProgramItems(loginUser.getProgramItemList());
         planManageDto.setUserType(loginUser.getType());
@@ -114,15 +119,39 @@ public class PlanManageController {
         IPage<PlanManageDto> iPage = new Page<>(pageNum, pageSize);
         iPage = planManageService.selectPage(iPage, planManageDto);
         Pagination<PlanManageDto> pages = new Pagination<>(iPage);
-        for(PlanManage plan : pages.getList()){
-            //查询并更新用户名称
-            plan.setCreateByName("");
-            plan.setUpdateByName("");
-            plan.setUserName("");
-            plan.setPlanUserName("");
+        setUserName(pages);
+        return new AjaxMessage<>(ResultStatus.OK, pages);
+    }
+
+    @GetMapping("/plan/pending")
+    @ApiOperation(value = "查询待处理任务")
+    public AjaxMessage<Pagination<PlanManageDto>> selectPendingTask(
+            @ApiParam(value = "页数", required = true)@RequestParam Integer pageNum,
+            @ApiParam(value = "条数", required = true)@RequestParam Integer pageSize,
+            @ApiParam(value = "任务类型(巡检:7,侧漏:8,养护:9)", required = false) @RequestParam(required = false) Integer taskType,
+            @ApiParam(value = "计划单号或计划名称", required = false) @RequestParam(required = false) String key,
+            @ApiParam(value = "计划起始日期(yyyy-MM-dd)", required = false) @RequestParam(required = false) String startDate,
+            @ApiParam(value = "计划截至日期(yyyy-MM-dd)", required = false) @RequestParam(required = false) String endDate){
+        PlanManageDto planManageDto = new PlanManageDto();
+        //根据用户编号,获取用户的权限
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        planManageDto.setKey(key);
+        if(!StringUtils.isEmpty(startDate)&& !StringUtils.isEmpty(endDate)) {
+            planManageDto.setStartDate(startDate);
+            planManageDto.setEndDate(endDate);
+        }
+        planManageDto.setTaskType(taskType);
+        if(loginUser.getId() != null) {
+            planManageDto.setCurrentUsers(String.format("%s,", loginUser.getId()));
         }
+        IPage<PlanManageDto> iPage = new Page<>(pageNum, pageSize);
+        iPage = planManageService.selectPage(iPage, planManageDto);
+        Pagination<PlanManageDto> pages = new Pagination<>(iPage);
+        setUserName(pages);
         return new AjaxMessage<>(ResultStatus.OK, pages);
     }
+
+
     /**
      * APP查询任务详情
      * @return Response对象
@@ -155,7 +184,7 @@ public class PlanManageController {
         vars.put("assineeFormUserId",loginUser.getId());
         //巡检发送系统消息所需参数
         vars.put("任务类型",planManage.getTaskType());
-        vars.put("任务编号",planManage.getPlanId());
+        vars.put("任务编号",planManage.getId() );
         vars.put("templateId",4);
         vars.put("msgType",4);
         String startProcess = workFlowService.startProcess(processDefinition,vars);
@@ -219,4 +248,59 @@ public class PlanManageController {
     public AjaxMessage<Integer> batchDelete( @ApiParam(value = "巡检计划ids") @RequestParam List<Integer> ids){
         return new AjaxMessage<>(ResultStatus.OK, planManageService.batchDelete(ids));
     }
+
+
+    /**
+     * 获取并设置用户名称
+     * @param pages
+     */
+    private void setUserName(Pagination<PlanManageDto> pages){
+        if(pages.getTotal()>0) {
+            int total = (int) pages.getTotal();
+            List<Long> idList = new ArrayList<Long>();
+            for (PlanManage plan : pages.getList()) {
+                if(plan.getUserId() != null) {
+                    idList.add(Long.parseLong(plan.getUserId()));
+                }
+                if(plan.getPlanUserId() != null){
+                    idList.add(Long.parseLong(plan.getPlanUserId()));
+                }
+                if(plan.getCreateBy() != null){
+                    idList.add(Long.parseLong(plan.getCreateBy()));
+                }
+                if(plan.getUpdateBy() != null){
+                    idList.add(Long.parseLong(plan.getUpdateBy()));
+                }
+            }
+            Long [] ids = new Long[idList.size()];
+            for( int i =0 ;i<idList.size(); i++){
+                ids[i] = idList.get(i);
+            }
+            Map<Long, String> userMap = userCenterClient.findUserIdsByUserIds(ids);
+            for (PlanManage plan : pages.getList()) {
+                for (Map.Entry<Long, String> entry : userMap.entrySet()) {
+                    if(plan.getUserId() != null) {
+                        if(entry.getKey()== Long.parseLong(plan.getUserId())){
+                            plan.setUserName(entry.getValue());
+                        }
+                    }
+                    if(plan.getPlanUserId() != null){
+                        if(entry.getKey()== Long.parseLong(plan.getPlanUserId())){
+                            plan.setPlanUserName(entry.getValue());
+                        }
+                    }
+                    if(plan.getCreateBy() != null){
+                        if(entry.getKey()== Long.parseLong(plan.getCreateBy())){
+                            plan.setCreateByName(entry.getValue());
+                        }
+                    }
+                    if(plan.getUpdateBy() != null) {
+                        if(entry.getKey()== Long.parseLong(plan.getUpdateBy())){
+                            plan.setUpdateByName(entry.getValue());
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

+ 0 - 1
operation_manager/src/main/java/com/huaxu/task/dto/PlanManageDto.java

@@ -53,7 +53,6 @@ public class PlanManageDto extends PlanManage {
      */
     @ApiModelProperty(value="截至日期")
     private String endDate;
-
     /**
      * 用户类型
      */

+ 2 - 1
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -429,6 +429,7 @@
     select t1.*,t2.flow_detail
     from sc_work_order_manage t1
     left join sc_work_flow_detail t2 on t1.id=t2.flow_id and t2.flow_type=2
-    where t1.id = #{id,jdbcType=INTEGER}
+    where t1.id = #{id,jdbcType=INTEGER} or t1.order_pid = #{orderPid,jdbcType=INTEGER}
+    order by t1.order_pid
   </select>
 </mapper>

+ 6 - 0
operation_manager/src/main/resources/mapper/task/PlanManageMapper.xml

@@ -432,6 +432,12 @@
       <if test="plan.planStatus == null">
         and t1.plan_status != 0
       </if>
+      <if test="plan.taskType != null">
+        and t1.task_type = #{plan.taskType,jdbcType=INTEGER}
+      </if>
+      <if test="plan.currentUsers != null">
+        and  INSTR(t1.current_users,#{plan.currentUsers})
+      </if>
       <if test="plan.startDate != null and plan.endDate != null">
         and t1.date_create &gt;= date_format(#{plan.startDate,jdbcType=VARCHAR},'%Y-%c-%d')
         and t1.date_create &lt;= DATE_ADD(date_format(#{plan.endDate,jdbcType=VARCHAR},'%Y-%c-%d'),INTERVAL 1 DAY)