Browse Source

维修优化

guarantee-lsq 2 years ago
parent
commit
77321217c1

+ 5 - 0
platform-dao/src/main/java/com/platform/dao/dto/repair/RepairApplicationFormDTO.java

@@ -417,4 +417,9 @@ public class RepairApplicationFormDTO extends BaseDTO implements Serializable {
      * 1 维修人 2 班组长 3 工程师
      */
     private Integer roleType;
+
+    /**
+     * 机电仪位号
+     */
+    private String parentSbNo;
 }

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/repair/RepairTicketTemplateData.java

@@ -36,4 +36,8 @@ public class RepairTicketTemplateData implements Serializable {
     private String dispatcher; // 工程师
 
     private String repairMan; // 维修人
+
+    private String sbPositionName; // 设备所属车间
+
+    private Double requireHours; // 要求时间
 }

+ 5 - 0
platform-dao/src/main/java/com/platform/dao/entity/repair/RepairApplicationForm.java

@@ -303,4 +303,9 @@ public class RepairApplicationForm implements Serializable {
      */
     private String reportLeaderId;
 
+    /**
+     * 机电仪位号
+     */
+    private String parentSbNo;
+
 }

+ 1 - 0
platform-dao/src/main/java/com/platform/dao/enums/SysConfigEnum.java

@@ -50,6 +50,7 @@ public enum SysConfigEnum {
     REPAIR_SEND_SUCCESS_WECHAT_TEMPLATE_ID("报修后通知维修主管"),
     REPAIR_RECEIVE_SUCCESS_WECHAT_TEMPLATE_ID("报修接收后通知报修人"),
     REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID("派工后通知维修人"),
+    REPAIR_TWENTY_FOUR_USER("24小时值班人"),
     SPARE_UPDATE_ALERT_DAY("备件更换预警设置天数");
     private final String typeName;
 

+ 8 - 0
platform-dao/src/main/java/com/platform/dao/vo/repair/RepairApplicationFormVO.java

@@ -394,4 +394,12 @@ public class RepairApplicationFormVO extends BaseVO implements Serializable {
 
     private String dispatchUserId;
 
+    /**
+     * 机电仪位号
+     */
+    private String parentSbNo;
+
+    private String selfParentNo; // 父位号
+
+    private String sbPositionName; // 车间名称
 }

+ 15 - 11
platform-iec/src/main/java/com/ydl/iec/iec104/server/master/Iec104TcpClientMaster.java

@@ -34,20 +34,24 @@ public class Iec104TcpClientMaster implements Iec104Master {
 
 	@Override
 	public void run() {
+		// 设置 EventLoopGroup,提供用于处理 Channel 事件的 EventLoop
 		EventLoopGroup bossGroup = new NioEventLoopGroup();
 		try{
-	    Bootstrap bs = new Bootstrap();
-	    bs.group(bossGroup)
-	      .channel(NioSocketChannel.class)
-	      .option(ChannelOption.SO_KEEPALIVE, true)
-	      .handler(new Iec104ClientInitializer().setDataHandler(dataHandler).setIec104Config(iec104Config));
-	    // 客户端开启
-		ChannelFuture channelFuture = bs.connect(host, port);
-		channelFuture.addListener(new ConnectionListener());
-		Channel channel  = channelFuture.sync().channel();
-	   	channel.closeFuture().sync();
+			//创建一个Bootstrap类的实例以创建和连接新的客户端Channel
+			Bootstrap bs = new Bootstrap();
+			bs.group(bossGroup)
+					//指定要使用的Channel 实现
+			  .channel(NioSocketChannel.class)
+			  .option(ChannelOption.SO_KEEPALIVE, true)
+					//设置用于 Channel 事件和数据的ChannelInboundHandler
+			  .handler(new Iec104ClientInitializer().setDataHandler(dataHandler).setIec104Config(iec104Config));
+			// 客户端开启即链接到远程主机
+			ChannelFuture channelFuture = bs.connect(host, port);
+			channelFuture.addListener(new ConnectionListener());
+			Channel channel  = channelFuture.sync().channel();
+			channel.closeFuture().sync();
 		}catch (Exception e){
-			e.printStackTrace();
+				e.printStackTrace();
 		}finally {
 			// 注意,不能管理线程组,因为在循环重连,关闭后,导致无法重连
 			//关闭线程组

+ 26 - 0
platform-rest/src/main/java/com/platform/rest/controller/upms/SysUserController.java

@@ -9,6 +9,7 @@ import com.platform.common.constant.SecurityConstants;
 import com.platform.common.constant.UpmsRedisKeyConstants;
 import com.platform.common.enums.InitialPasswordEnum;
 import com.platform.common.enums.ResultCode;
+import com.platform.common.exception.DeniedException;
 import com.platform.common.model.OauthUser;
 import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
@@ -567,4 +568,29 @@ public class SysUserController {
         }
         return R.success(sysUserService.selectDeptRoleUser(dto));
     }
+
+    @GetMapping("/check/bxr")
+    public R checkBxr(){
+        int flag = 0;
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+        if(userInfo.getSuperAdmin() == 0){
+            // 根据用户的角色来定
+            String role = getCurrentRoles();
+            if(role.contains(SysRoleCodeEnum.REPAIR_EXAMINE.name())){
+                flag = 1;
+            }
+        }else{
+            flag = 1;
+        }
+        return new R(flag);
+    }
+
+    private String getCurrentRoles(){
+        // 根据用户的角色来定
+        StringBuilder roleCodes = new StringBuilder();
+        SecurityUtils.getUserInfo().getRoleCodes().forEach(item-> {
+            roleCodes.append(item).append(",");
+        });
+        return roleCodes.toString();
+    }
 }

+ 6 - 0
platform-service/src/main/java/com/platform/service/customize/impl/CustomFieldTemplateDataServiceImpl.java

@@ -18,6 +18,7 @@ import com.platform.dao.enums.SysFileTypeEnum;
 import com.platform.dao.mapper.customize.CustomFieldTemplateDataMapper;
 import com.platform.dao.mapper.repair.RepairApplicationFormMapper;
 import com.platform.dao.mapper.sb.SbInfoMapper;
+import com.platform.dao.mapper.sb.SbPositionMapper;
 import com.platform.dao.mapper.upms.SysUserMapper;
 import com.platform.dao.vo.query.customize.CustomFieldTemplateDataVO;
 import com.platform.service.base.impl.BaseServiceImpl;
@@ -48,6 +49,7 @@ public class CustomFieldTemplateDataServiceImpl extends BaseServiceImpl<CustomFi
     private SysFileService sysFileService;
     private RepairApplicationFormMapper repairApplicationFormMapper;
     private SysUserMapper sysUserMapper;
+    private SbPositionMapper sbPositionMapper;
 
     @Override
     public int batchDelete(List<String> ids) {
@@ -256,11 +258,15 @@ public class CustomFieldTemplateDataServiceImpl extends BaseServiceImpl<CustomFi
             SbInfo sbInfo = sbInfoMapper.selectByPrimaryKey(repairApplicationForm.getSbId());
             data = new RepairTicketTemplateData();
             data.setCaller(sysUserMapper.selectByPrimaryKey(repairApplicationForm.getUserId()).getRealName());
+            if(StringUtils.isNotBlank(sbInfo.getPositionId())){
+                data.setSbPositionName(sbPositionMapper.getById(sbInfo.getPositionId()).getName());
+            }
             data.setCallTime(DateUtils.dateToString(repairApplicationForm.getApplyTime(),DateUtils.PATTERN_YMD));
             data.setContent(repairApplicationForm.getContent());
             if(StringUtils.isNotBlank(repairApplicationForm.getDispatchUserId())){
                 data.setDispatcher(sysUserMapper.selectByPrimaryKey(repairApplicationForm.getDispatchUserId()).getRealName());
             }
+            data.setRequireHours(repairApplicationForm.getLimitHours());
             data.setRepairMan(sysUserMapper.selectByPrimaryKey(repairApplicationForm.getRepairUserId()).getRealName());
             data.setRepairNo(repairApplicationForm.getNo());
             data.setSbLocation(repairApplicationForm.getSbCph());

+ 11 - 0
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -32,6 +32,7 @@ import com.platform.dao.entity.upms.SysUser;
 import com.platform.dao.enums.*;
 import com.platform.dao.mapper.check.CheckJobMapper;
 import com.platform.dao.mapper.repair.*;
+import com.platform.dao.mapper.sb.SbPositionMapper;
 import com.platform.dao.mapper.store.InStoreFormMapper;
 import com.platform.dao.mapper.store.OutStoreFormMapper;
 import com.platform.dao.mapper.store.StoreCheckJobMapper;
@@ -105,6 +106,7 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
     private final OutStoreFormMapper outStoreFormMapper;
     private final StoreCheckJobMapper storeCheckJobMapper;
     private final SysUserDeptMapper sysUserDeptMapper;
+    private final SbPositionMapper sbPositionMapper;
     private final BigDecimal initNum= new BigDecimal(0);
 
 
@@ -755,6 +757,15 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         vo.setRepairFileList(repairFileList);
         vo.setApplicationFileList(applicationFileList);
         vo.setCheckFileList(checkFileList);
+        // 车间位置
+        SbInfo sbInfo = sbInfoService.getModelById(vo.getSbId());
+        if(StringUtils.isNotBlank(sbInfo.getPositionId())){
+            vo.setSbPositionName(sbPositionMapper.getById(sbInfo.getPositionId()).getName());
+        }
+        // 父位号
+        if(StringUtils.isNotBlank(sbInfo.getParentId())){
+            vo.setSelfParentNo(sbInfoService.getModelById(sbInfo.getParentId()).getPositionNo());
+        }
         return vo;
     }
 

+ 23 - 2
platform-service/src/main/java/com/platform/service/repair/strategy/impl/LongYanRepairStrategy.java

@@ -71,7 +71,6 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
                 throw new DeniedException("您不具有报修报修权限,如需报修,请管理员配置权限!");
             }
         }
-        //String repairDeptId = queryRepairDeptId(model);
         String repairDeptId = model.getRepairDeptId();
         if(StringUtils.isBlank(repairDeptId)){
             throw new DeniedException("送修部门不能为空!");
@@ -89,11 +88,33 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
         repairApplicationFormMapper.insert(form);
         // 记录维修状态跟踪
         addRepairStatusRecord(form,"报修");
-        // 给相关的维修主管推送信息
+        // 给相关的工程师推送信息
         sendMessageToRepairManger(form,sysUserVOList,CommonConstants.CALL_REPAIR_NOTICE);
+        // 给该部门班组长推送信息
+        List<SysUserVO> banzuzhangs = getRepairMangers(repairDeptId,null,SysRoleCodeEnum.Maintenance_Leader.name());
+        if(banzuzhangs != null && banzuzhangs.size() > 0){
+            sendMessageToRepairManger(form,banzuzhangs,CommonConstants.CALL_REPAIR_NOTICE);
+        }
+        // 给二十四小时人员发送信息
+        String everyWhereUsers = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_TWENTY_FOUR_USER.name());
+        if(StringUtils.isNotBlank(everyWhereUsers)){
+            sendMessageToRepairManger(form,getUserVOs(everyWhereUsers.trim()),CommonConstants.CALL_REPAIR_NOTICE);
+        }
         return form;
     }
 
+    private List<SysUserVO> getUserVOs(String user){
+        String[] users = user.split(",");
+        List<SysUserVO> vos = ListUtils.newArrayList();
+        for(String name : users){
+            SysUser u = sysUserService.selectByUsername(name);
+            if(u != null)
+                vos.add(BeanConverterUtil.copyObjectProperties(u,SysUserVO.class));
+        }
+        return vos;
+    }
+
+
     private String getReportLeaderId(String sbId){
         String positionId = sbInfoService.getById(sbId).getPositionId();
         if(StringUtils.isBlank(positionId)){