|
@@ -3,11 +3,9 @@ package com.platform.service.repair.strategy.impl;
|
|
import com.platform.common.cache.ConfigCache;
|
|
import com.platform.common.cache.ConfigCache;
|
|
import com.platform.common.constant.CommonConstants;
|
|
import com.platform.common.constant.CommonConstants;
|
|
import com.platform.common.exception.DeniedException;
|
|
import com.platform.common.exception.DeniedException;
|
|
|
|
+import com.platform.common.model.UserInfo;
|
|
import com.platform.common.util.*;
|
|
import com.platform.common.util.*;
|
|
-import com.platform.dao.dto.repair.RepairApplicationFormDTO;
|
|
|
|
-import com.platform.dao.dto.repair.RepairRecordTemplateData;
|
|
|
|
-import com.platform.dao.dto.repair.RepairStatusTemplateData;
|
|
|
|
-import com.platform.dao.dto.repair.RepairVerifyRecordTemplateData;
|
|
|
|
|
|
+import com.platform.dao.dto.repair.*;
|
|
import com.platform.dao.dto.upms.SysUserDTO;
|
|
import com.platform.dao.dto.upms.SysUserDTO;
|
|
import com.platform.dao.entity.customize.CustomFieldTemplateData;
|
|
import com.platform.dao.entity.customize.CustomFieldTemplateData;
|
|
import com.platform.dao.entity.repair.RepairApplicationForm;
|
|
import com.platform.dao.entity.repair.RepairApplicationForm;
|
|
@@ -15,9 +13,11 @@ import com.platform.dao.entity.sb.SbInfo;
|
|
import com.platform.dao.entity.upms.SysUser;
|
|
import com.platform.dao.entity.upms.SysUser;
|
|
import com.platform.dao.enums.*;
|
|
import com.platform.dao.enums.*;
|
|
import com.platform.dao.mapper.customize.CustomFieldTemplateDataMapper;
|
|
import com.platform.dao.mapper.customize.CustomFieldTemplateDataMapper;
|
|
|
|
+import com.platform.dao.mapper.sb.SbPositionMapper;
|
|
import com.platform.dao.mapper.upms.SysUserMapper;
|
|
import com.platform.dao.mapper.upms.SysUserMapper;
|
|
import com.platform.dao.util.MessageTemplateUtil;
|
|
import com.platform.dao.util.MessageTemplateUtil;
|
|
import com.platform.dao.vo.SysUserVO;
|
|
import com.platform.dao.vo.SysUserVO;
|
|
|
|
+import com.platform.service.part.PartInfoService;
|
|
import com.platform.service.repair.strategy.AbstractRepairBaseStrategy;
|
|
import com.platform.service.repair.strategy.AbstractRepairBaseStrategy;
|
|
import com.platform.service.util.SendMessageUtils;
|
|
import com.platform.service.util.SendMessageUtils;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
@@ -26,7 +26,9 @@ import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 维修接单模式 -- 龙岩
|
|
* 维修接单模式 -- 龙岩
|
|
@@ -42,6 +44,11 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
@Resource
|
|
@Resource
|
|
private CustomFieldTemplateDataMapper customFieldTemplateDataMapper;
|
|
private CustomFieldTemplateDataMapper customFieldTemplateDataMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private PartInfoService partInfoService;
|
|
|
|
+ @Resource
|
|
|
|
+ private SbPositionMapper sbPositionMapper;
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 龙岩报修人报修
|
|
* 龙岩报修人报修
|
|
@@ -51,29 +58,170 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
@Override
|
|
@Override
|
|
public RepairApplicationForm callRepair(RepairApplicationFormDTO model) {
|
|
public RepairApplicationForm callRepair(RepairApplicationFormDTO model) {
|
|
RepairApplicationForm form = super.callRepair(model);
|
|
RepairApplicationForm form = super.callRepair(model);
|
|
- // 设置报修推送地方
|
|
|
|
- if(StringUtils.isBlank(model.getRepairDeptId())){
|
|
|
|
- throw new DeniedException("报修必须选择维修部门");
|
|
|
|
|
|
+ // 是否具有报修权限
|
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
|
+ if(userInfo.getSuperAdmin() == 0){
|
|
|
|
+ // 根据用户的角色来定
|
|
|
|
+ String role = getCurrentRoles();
|
|
|
|
+ if(!role.contains(SysRoleCodeEnum.REPAIR_EXAMINE.name())){
|
|
|
|
+ throw new DeniedException("您不具有报修报修权限,如需报修,请管理员配置权限!");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- SysUserDTO queryUserDTO = new SysUserDTO();
|
|
|
|
- queryUserDTO.setDeptId(model.getRepairDeptId());
|
|
|
|
- queryUserDTO.setRoleCode(SysRoleCodeEnum.REPAIR_MANAGE.name());
|
|
|
|
- List<SysUserVO> sysUserVOList = sysUserMapper.selectDeptRoleUser(queryUserDTO);
|
|
|
|
- if(sysUserVOList == null || sysUserVOList.size() ==0 || sysUserVOList.size() > 1){
|
|
|
|
- throw new DeniedException("您选择的维修部门,无维修主管或存在多个维修主管");
|
|
|
|
|
|
+ String repairDeptId = queryRepairDeptId(model);
|
|
|
|
+ if(StringUtils.isBlank(repairDeptId)){
|
|
|
|
+ throw new DeniedException("您报修的设备和设备部位都未关联维修部门,请关联设置后进行报修!");
|
|
|
|
+ }
|
|
|
|
+ form.setRepairDeptId(repairDeptId); // 存储维修部门ID
|
|
|
|
+ List<SysUserVO> sysUserVOList = getRepairMangers(repairDeptId,null,SysRoleCodeEnum.REPAIR_MANAGE.name());
|
|
|
|
+ if(sysUserVOList == null || sysUserVOList.size() ==0){
|
|
|
|
+ throw new DeniedException("该维修部门,没有工程师,请确认!");
|
|
}
|
|
}
|
|
- form.setDispatchUserId(sysUserVOList.get(0).getUserId());
|
|
|
|
// 报修人
|
|
// 报修人
|
|
form.setActualUser(SecurityUtils.getUserInfo().getUsername());
|
|
form.setActualUser(SecurityUtils.getUserInfo().getUsername());
|
|
form.setUserId(SecurityUtils.getUserInfo().getUserId());
|
|
form.setUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
|
+ // 区域负责人
|
|
|
|
+ form.setReportLeaderId(getReportLeaderId(model.getSbId()));
|
|
repairApplicationFormMapper.insert(form);
|
|
repairApplicationFormMapper.insert(form);
|
|
// 记录维修状态跟踪
|
|
// 记录维修状态跟踪
|
|
addRepairStatusRecord(form,"报修");
|
|
addRepairStatusRecord(form,"报修");
|
|
// 给相关的维修主管推送信息
|
|
// 给相关的维修主管推送信息
|
|
- sendMessageToRepairManger(form,sysUserVOList.get(0),CommonConstants.CALL_REPAIR_NOTICE);
|
|
|
|
|
|
+ sendMessageToRepairManger(form,sysUserVOList,CommonConstants.CALL_REPAIR_NOTICE);
|
|
return form;
|
|
return form;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private String getReportLeaderId(String sbId){
|
|
|
|
+ String positionId = sbInfoService.getById(sbId).getPositionId();
|
|
|
|
+ String no = sbPositionMapper.getById(positionId).getNo();
|
|
|
|
+ String userMaps = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_AREA_MANAGER.name());
|
|
|
|
+ if(StringUtils.isBlank(userMaps)){
|
|
|
|
+ throw new DeniedException("区域负责人尚未配置,请配置【后台管理】-【系统管理】-【系统参数配置】");
|
|
|
|
+ }
|
|
|
|
+ Map<String,String> maps = JsonUtils.jsonToMap(userMaps);
|
|
|
|
+ String username = "";
|
|
|
|
+ for(Map.Entry<String,String> entry : maps.entrySet()){
|
|
|
|
+ String value = entry.getValue();
|
|
|
|
+ if(value.contains(no)){
|
|
|
|
+ username = entry.getKey();
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isBlank(username)){
|
|
|
|
+ throw new DeniedException("报修设备尚未配置给区域负责人,请配置");
|
|
|
|
+ }
|
|
|
|
+ SysUser queryUser = new SysUser();
|
|
|
|
+ queryUser.setUsername(username);
|
|
|
|
+ return sysUserMapper.selectOne(queryUser).getUserId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ Map<String,String> maps = new HashMap<>();
|
|
|
|
+ maps.put("13410011001","12121,2323,2323");
|
|
|
|
+ maps.put("13410011002","12121,2323,2323");
|
|
|
|
+ System.out.println(JsonUtils.objectToJson(maps));
|
|
|
|
+ Map<String,String> covertMap = JsonUtils.jsonToMap("{\"13410011002\":\"12121,2323,2323\",\"13410011001\":\"12121,2323,2323\"}");
|
|
|
|
+ System.out.println(covertMap.get("13410011001"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取当前用户的角色集合
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private String getCurrentRoles(){
|
|
|
|
+ // 根据用户的角色来定
|
|
|
|
+ StringBuilder roleCodes = new StringBuilder();
|
|
|
|
+ SecurityUtils.getUserInfo().getRoleCodes().forEach(item-> {
|
|
|
|
+ roleCodes.append(item).append(",");
|
|
|
|
+ });
|
|
|
|
+ return roleCodes.toString();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取指定部门下的工程师
|
|
|
|
+ * @param repairDeptId
|
|
|
|
+ * @param userId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private List<SysUserVO> getRepairMangers(String repairDeptId,String userId,String roleCode){
|
|
|
|
+ SysUserDTO queryUserDTO = new SysUserDTO();
|
|
|
|
+ queryUserDTO.setDeptId(repairDeptId);
|
|
|
|
+ queryUserDTO.setRoleCode(roleCode);
|
|
|
|
+ queryUserDTO.setUserId(userId);
|
|
|
|
+ return sysUserMapper.selectDeptRoleUser(queryUserDTO);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取设备部位关联的维修部门
|
|
|
|
+ * @param model
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private String queryRepairDeptId(RepairApplicationFormDTO model){
|
|
|
|
+ String repairDeptId = "";
|
|
|
|
+ if(StringUtils.isNotBlank(model.getPartId())){
|
|
|
|
+ repairDeptId = partInfoService.getModelById(model.getPartId()).getRepairDeptId();
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isBlank(repairDeptId)){
|
|
|
|
+ repairDeptId = sbInfoService.getModelById(model.getSbId()).getRepairDeptId();
|
|
|
|
+ }
|
|
|
|
+ return repairDeptId;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public RepairApplicationFormDTO receiveRepair(RepairApplicationFormDTO model) {
|
|
|
|
+ if(StringUtils.isBlank(model.getRepairDeptId())){
|
|
|
|
+ throw new DeniedException("必须携带设备关联维修部门");
|
|
|
|
+ }
|
|
|
|
+ boolean continueFlag = Boolean.FALSE;
|
|
|
|
+ synchronized (this){
|
|
|
|
+ // 判断接单方式,根据接单角色进行区分 工程师 班组长 维修人
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
|
+ RepairApplicationForm form = new RepairApplicationForm();
|
|
|
|
+ form.setId(model.getId());
|
|
|
|
+ String roles = getCurrentRoles();
|
|
|
|
+ if(roles.contains(SysRoleCodeEnum.Maintenance.name()) || roles.contains(SysRoleCodeEnum.Maintenance_Leader.name())){
|
|
|
|
+ // 维修人和班组长接单
|
|
|
|
+ form.setRepairUserName(userInfo.getUsername());
|
|
|
|
+ form.setRepairUserId(userInfo.getUserId());
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
|
+ continueFlag = Boolean.TRUE;
|
|
|
|
+ model.setRepairUserName(form.getRepairUserName());
|
|
|
|
+ model.setRepairUserId(form.getRepairUserId());
|
|
|
|
+ }else if(roles.contains(SysRoleCodeEnum.REPAIR_MANAGE.name())){
|
|
|
|
+ // 工程师接单
|
|
|
|
+ form.setDispatchUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.RECEIVED.getValue());
|
|
|
|
+ }else{
|
|
|
|
+ throw new DeniedException("您不具备承接报修单的能力");
|
|
|
|
+ }
|
|
|
|
+ form.setReceiveTime(now);
|
|
|
|
+ form.setReceiveMinutes(DateUtils.getDurationHours(model.getApplyTime(), now)); // 接单时长
|
|
|
|
+ // 判断接单是否超时
|
|
|
|
+ String minuteStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_WARN_MINUTE.name());
|
|
|
|
+ if (StringUtils.isBlank(minuteStr)) {
|
|
|
|
+ form.setReceiveOvertime(false);
|
|
|
|
+ } else if (form.getReceiveMinutes() > Double.valueOf(minuteStr)) {
|
|
|
|
+ form.setReceiveOvertime(true);
|
|
|
|
+ } else {
|
|
|
|
+ form.setReceiveOvertime(false);
|
|
|
|
+ }
|
|
|
|
+ form.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
|
|
+ }
|
|
|
|
+ // 通知报修人,已接单
|
|
|
|
+ sendMessageToRepairCaller(model,CommonConstants.CALL_REPAIR_RECEIVE);
|
|
|
|
+ // 添加状态跟踪
|
|
|
|
+ model.setStatus(RepairApplicationFormStatusEnum.RECEIVED.getValue());
|
|
|
|
+ addRepairStatusRecord(BeanConverterUtil.copyObjectProperties(model,RepairApplicationForm.class),"已接单");
|
|
|
|
+ if(continueFlag){
|
|
|
|
+ // 添加状态跟踪
|
|
|
|
+ model.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
|
+ addRepairStatusRecord(BeanConverterUtil.copyObjectProperties(model,RepairApplicationForm.class),"维修中");
|
|
|
|
+ // 添加维修记录
|
|
|
|
+ addRepairRecord(model);
|
|
|
|
+ }
|
|
|
|
+ return model;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public RepairApplicationForm callRepairAgain(RepairApplicationFormDTO model) {
|
|
public RepairApplicationForm callRepairAgain(RepairApplicationFormDTO model) {
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectByPrimaryKey(model.getId());
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectByPrimaryKey(model.getId());
|
|
@@ -88,7 +236,7 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
form.setStatus(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue());
|
|
form.setStatus(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue());
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
// 给相关的维修主管推送信息
|
|
// 给相关的维修主管推送信息
|
|
- sendMessageToRepairManger(form,sysUserVOList.get(0),CommonConstants.CALL_REPAIR_NOTICE);
|
|
|
|
|
|
+ sendMessageToRepairManger(form,sysUserVOList,CommonConstants.CALL_REPAIR_NOTICE);
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -136,13 +284,21 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 维修主管接收并指派报修人
|
|
|
|
|
|
+ * 工程师派工给班组长
|
|
* @param model
|
|
* @param model
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public RepairApplicationFormDTO sendRepair(RepairApplicationFormDTO model) {
|
|
public RepairApplicationFormDTO sendRepair(RepairApplicationFormDTO model) {
|
|
RepairApplicationFormDTO superModel = super.sendRepair(model);
|
|
RepairApplicationFormDTO superModel = super.sendRepair(model);
|
|
|
|
+ // 判断是否具有派单权限
|
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
|
+ if(userInfo.getSuperAdmin() == 0){
|
|
|
|
+ String roles = getCurrentRoles();
|
|
|
|
+ if(!roles.contains(SysRoleCodeEnum.REPAIR_MANAGE.name()) && !roles.contains(SysRoleCodeEnum.MM.name())){
|
|
|
|
+ throw new DeniedException("不具备派单权限");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if(StringUtils.isBlank(superModel.getRepairUserId())){
|
|
if(StringUtils.isBlank(superModel.getRepairUserId())){
|
|
throw new DeniedException("请指派维修人");
|
|
throw new DeniedException("请指派维修人");
|
|
}
|
|
}
|
|
@@ -155,20 +311,9 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
applicationForm.setRepairUserName(repairUser.getUsername());
|
|
applicationForm.setRepairUserName(repairUser.getUsername());
|
|
applicationForm.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
applicationForm.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
superModel.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
superModel.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
- superModel.setRepairUserName(repairUser.getUsername());
|
|
|
|
if (superModel.getRepairStartTime() == null) {
|
|
if (superModel.getRepairStartTime() == null) {
|
|
applicationForm.setRepairStartTime(LocalDateTime.now());
|
|
applicationForm.setRepairStartTime(LocalDateTime.now());
|
|
- superModel.setRepairStartTime(LocalDateTime.now());
|
|
|
|
- }
|
|
|
|
- applicationForm.setReceiveMinutes(DateUtils.getDurationHours(superModel.getApplyTime(), superModel.getRepairStartTime()));
|
|
|
|
- // 判断接单是否超时
|
|
|
|
- String minuteStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_WARN_MINUTE.name());
|
|
|
|
- if (StringUtils.isBlank(minuteStr)) {
|
|
|
|
- applicationForm.setReceiveOvertime(false);
|
|
|
|
- } else if (applicationForm.getReceiveMinutes() > Double.valueOf(minuteStr)) {
|
|
|
|
- applicationForm.setReceiveOvertime(true);
|
|
|
|
- } else {
|
|
|
|
- applicationForm.setReceiveOvertime(false);
|
|
|
|
|
|
+ superModel.setRepairStartTime(applicationForm.getRepairStartTime());
|
|
}
|
|
}
|
|
applicationForm.setUpdateTime(LocalDateTime.now());
|
|
applicationForm.setUpdateTime(LocalDateTime.now());
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(applicationForm);
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(applicationForm);
|
|
@@ -177,7 +322,7 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
// 添加维修记录
|
|
// 添加维修记录
|
|
addRepairRecord(superModel);
|
|
addRepairRecord(superModel);
|
|
// 给报修人发送消息
|
|
// 给报修人发送消息
|
|
- sendMessageToRepairCaller(superModel,CommonConstants.CALL_REPAIR_PASS);
|
|
|
|
|
|
+ //sendMessageToRepairCaller(superModel,CommonConstants.CALL_REPAIR_PASS);
|
|
// 给维修人发送消息
|
|
// 给维修人发送消息
|
|
sendMessageToRepairer(superModel);
|
|
sendMessageToRepairer(superModel);
|
|
// 启动超时监控
|
|
// 启动超时监控
|
|
@@ -203,27 +348,111 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 个人能力无法胜任本次维修,辜负了主管的信任
|
|
|
|
|
|
+ * 维修人上报
|
|
* @param model
|
|
* @param model
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public void stopRepairByPerson(RepairApplicationFormDTO model) {
|
|
public void stopRepairByPerson(RepairApplicationFormDTO model) {
|
|
|
|
+ if(StringUtils.isBlank(model.getReportLeaderId())){
|
|
|
|
+ throw new DeniedException("上报对象不能为空");
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isBlank(model.getRemark())){
|
|
|
|
+ throw new DeniedException("上报原因不能为空");
|
|
|
|
+ }
|
|
// 1、完善终止人的维修记录
|
|
// 1、完善终止人的维修记录
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectById(model.getId());
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectById(model.getId());
|
|
- double hours = editRepairRecord(model,CommonConstants.REPAIR_RECORD_EDIT_STOP);
|
|
|
|
|
|
+ editRepairRecord(model,CommonConstants.REPAIR_RECORD_EDIT_STOP);
|
|
// 2、回写并修改维修表
|
|
// 2、回写并修改维修表
|
|
|
|
+ // 根据角色判断自己上报人角色
|
|
RepairApplicationForm updRepair = new RepairApplicationForm();
|
|
RepairApplicationForm updRepair = new RepairApplicationForm();
|
|
updRepair.setId(model.getId());
|
|
updRepair.setId(model.getId());
|
|
updRepair.setRemarkTwo(model.getRemark());
|
|
updRepair.setRemarkTwo(model.getRemark());
|
|
|
|
+ updRepair.setRepairUserId(model.getReportLeaderId());
|
|
|
|
+ /*if(roles.contains(SysRoleCodeEnum.Maintenance.name())){
|
|
|
|
+ // 更新维修人
|
|
|
|
+ updRepair.setRepairUserId(model.getReportLeaderId());
|
|
|
|
+ }else if(roles.contains(SysRoleCodeEnum.Maintenance_Leader.name())){
|
|
|
|
+ // 班组长上报
|
|
|
|
+ updRepair.setDispatchUserId(model.getReportLeaderId());
|
|
|
|
+ }*/
|
|
updRepair.setStatus(RepairApplicationFormStatusEnum.REPAIR_FAIL.getValue());
|
|
updRepair.setStatus(RepairApplicationFormStatusEnum.REPAIR_FAIL.getValue());
|
|
- double repairMinutes = form.getRepairMinutes() == null ? 0.0 : form.getRepairMinutes();
|
|
|
|
- updRepair.setRepairMinutes(repairMinutes + hours);
|
|
|
|
- updRepair.setRepairUserId(null);
|
|
|
|
- repairApplicationFormMapper.updateLongYan(updRepair);
|
|
|
|
|
|
+ repairApplicationFormMapper.updateByPrimaryKeySelective(updRepair);
|
|
// 3、状态记录表
|
|
// 3、状态记录表
|
|
- addRepairStatusRecord(updRepair,"维修转派中");
|
|
|
|
- // 4、通知维修主管
|
|
|
|
- sendMessageToRepairManger(form,BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class),CommonConstants.REPAIR_FAIL_NOTICE);
|
|
|
|
|
|
+ addRepairStatusRecord(updRepair,"维修上报");
|
|
|
|
+ // 4、通知你上报的人
|
|
|
|
+ sendMessageToReportLeader(form,BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(model.getReportLeaderId()),SysUserVO.class));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 上报处理方法
|
|
|
|
+ * @param model
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public RepairApplicationFormDTO reportLeaderHandle(RepairApplicationFormDTO model) {
|
|
|
|
+ String statusRemark = "自主处理";
|
|
|
|
+ RepairApplicationForm existForm = repairApplicationFormMapper.selectById(model.getId());
|
|
|
|
+ RepairApplicationForm form = new RepairApplicationForm();
|
|
|
|
+ form.setId(model.getId());
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
|
+ // 处理方式 自主处理和继续上报
|
|
|
|
+ String roles = getCurrentRoles();
|
|
|
|
+ if(model.getReportHandleType() == 1){
|
|
|
|
+ if(StringUtils.isBlank(model.getReportLeaderId())){
|
|
|
|
+ throw new DeniedException("派工对象不能为空");
|
|
|
|
+ }
|
|
|
|
+ // 自主处理
|
|
|
|
+ if(roles.contains(SysRoleCodeEnum.Maintenance_Leader.name())){
|
|
|
|
+ // 班组长处理,重新指派维修人
|
|
|
|
+ form.setRepairUserId(model.getRepairUserId());
|
|
|
|
+ // 维修记录
|
|
|
|
+ String repairUserName = sysUserMapper.selectUserNameById(model.getRepairUserId());
|
|
|
|
+ model.setRepairUserName(repairUserName);
|
|
|
|
+ addRepairRecord(model);
|
|
|
|
+ // 通知维修人
|
|
|
|
+ sendMessageToRepairer(BeanConverterUtil.copyObjectProperties(existForm,RepairApplicationFormDTO.class));
|
|
|
|
+ }else if(roles.contains(SysRoleCodeEnum.REPAIR_MANAGE.name())){
|
|
|
|
+ // 工程师处理
|
|
|
|
+ form.setRepairUserId(model.getRepairUserId());
|
|
|
|
+ // 维修记录
|
|
|
|
+ String repairUserName = sysUserMapper.selectUserNameById(model.getRepairUserId());
|
|
|
|
+ model.setRepairUserName(repairUserName);
|
|
|
|
+ addRepairRecord(model);
|
|
|
|
+ // 通知维修人
|
|
|
|
+ sendMessageToRepairer(BeanConverterUtil.copyObjectProperties(existForm,RepairApplicationFormDTO.class));
|
|
|
|
+ }else if(roles.contains(SysRoleCodeEnum.MM.name())){
|
|
|
|
+ // 维修主管处理
|
|
|
|
+ form.setDispatchUserId(model.getDispatchUserId());
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.MM_DISPATCH.getValue());
|
|
|
|
+ // 主管派单通知工程师
|
|
|
|
+ SysUserDTO queryUser = new SysUserDTO();
|
|
|
|
+ queryUser.setUserId(model.getDispatchUserId());
|
|
|
|
+ sendMessageToRepairManger(existForm,sysUserMapper.getSysUserVO(queryUser),CommonConstants.REPORT_REPAIR);
|
|
|
|
+ }
|
|
|
|
+ } else if(model.getReportHandleType() == 2){
|
|
|
|
+ if(StringUtils.isBlank(model.getRemark())){
|
|
|
|
+ throw new DeniedException("上报原因不能为空");
|
|
|
|
+ }
|
|
|
|
+ statusRemark = "维修上报";
|
|
|
|
+ String leaderId = model.getReportLeaderId();
|
|
|
|
+ // 继续上报
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.REPAIR_FAIL.getValue());
|
|
|
|
+ if(roles.contains(SysRoleCodeEnum.Maintenance_Leader.name())){
|
|
|
|
+ if(StringUtils.isBlank(model.getReportLeaderId())){
|
|
|
|
+ throw new DeniedException("上报对象不能为空");
|
|
|
|
+ }
|
|
|
|
+ form.setDispatchUserId(model.getReportLeaderId());
|
|
|
|
+ }else if(roles.contains(SysRoleCodeEnum.REPAIR_MANAGE.name())){
|
|
|
|
+ // 工程师上报
|
|
|
|
+ leaderId = existForm.getReportLeaderId();
|
|
|
|
+ }
|
|
|
|
+ // 上报通知
|
|
|
|
+ sendMessageToReportLeader(existForm,BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(leaderId),SysUserVO.class));
|
|
|
|
+ }
|
|
|
|
+ repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
|
|
+ // 添加状态记录
|
|
|
|
+ addRepairStatusRecord(form,statusRemark);
|
|
|
|
+ return model;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -236,8 +465,9 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
super.handleRepair(dto);
|
|
super.handleRepair(dto);
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectById(dto.getId());
|
|
RepairApplicationForm form = repairApplicationFormMapper.selectById(dto.getId());
|
|
// 计算维修时长
|
|
// 计算维修时长
|
|
- double hours = editRepairRecord(dto,CommonConstants.REPAIR_RECORD_EDIT_ADD);
|
|
|
|
- double currentHour = form.getRepairMinutes() == null ? 0.0:form.getRepairMinutes();
|
|
|
|
|
|
+ editRepairRecord(dto,CommonConstants.REPAIR_RECORD_EDIT_ADD);
|
|
|
|
+ // 此处放在工程师结单时
|
|
|
|
+ /*double currentHour = form.getRepairMinutes() == null ? 0.0:form.getRepairMinutes();
|
|
form.setRepairMinutes(currentHour + hours);
|
|
form.setRepairMinutes(currentHour + hours);
|
|
// 判断维修是否超时
|
|
// 判断维修是否超时
|
|
String hourFirstStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_OVERTIME_MINUTE_FIRST.name());
|
|
String hourFirstStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_OVERTIME_MINUTE_FIRST.name());
|
|
@@ -249,16 +479,40 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
form.setRepairOvertime(true);
|
|
form.setRepairOvertime(true);
|
|
} else {
|
|
} else {
|
|
form.setRepairOvertime(false);
|
|
form.setRepairOvertime(false);
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
repairApplicationFormMapper.updateByPrimaryKeySelective(form);
|
|
// 添加状态记录
|
|
// 添加状态记录
|
|
addRepairStatusRecord(form,"维修完成待审");
|
|
addRepairStatusRecord(form,"维修完成待审");
|
|
- // 通知维修主管审核
|
|
|
|
|
|
+ // 通知工程师审核
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
- sendMessageToRepairManger(form,vo,CommonConstants.REPAIR_COMPLETE_NOTICE);
|
|
|
|
|
|
+ sendMessageToRepairManger(form,ListUtils.newArrayList(vo),CommonConstants.REPAIR_COMPLETE_NOTICE);
|
|
return dto;
|
|
return dto;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 工程师之间的转派
|
|
|
|
+ * @param model
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public RepairApplicationFormDTO dispatchRepair(RepairApplicationFormDTO model) {
|
|
|
|
+ SysUser user = sysUserMapper.selectByPrimaryKey(model.getDispatchUserId());
|
|
|
|
+ RepairApplicationForm form = repairApplicationFormMapper.selectByPrimaryKey(model.getId());
|
|
|
|
+ model.setDispatchUserId(form.getDispatchUserId());
|
|
|
|
+ // 添加维修转派记录
|
|
|
|
+ addRepairDispatchRecord(model,user);
|
|
|
|
+ // 更新维修信息
|
|
|
|
+ form.setDispatchUserId(user.getUserId());
|
|
|
|
+ form.setRepairUserName(null);
|
|
|
|
+ form.setRepairUserId(null);
|
|
|
|
+ form.setStatus(RepairApplicationFormStatusEnum.DISPATCH_REPAIR.getValue());
|
|
|
|
+ form.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ repairApplicationFormMapper.updateByPrimaryKey(form);
|
|
|
|
+ // 添加状态记录
|
|
|
|
+ addRepairStatusRecord(form,"维修转派");
|
|
|
|
+ return model;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 提交生产审核
|
|
* 提交生产审核
|
|
* @param model
|
|
* @param model
|
|
@@ -268,11 +522,13 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
public RepairApplicationForm submitRepair(RepairApplicationFormDTO model) {
|
|
public RepairApplicationForm submitRepair(RepairApplicationFormDTO model) {
|
|
RepairApplicationForm form = super.submitRepair(model);
|
|
RepairApplicationForm form = super.submitRepair(model);
|
|
// 添加状态跟踪
|
|
// 添加状态跟踪
|
|
- addRepairStatusRecord(form,"待生产确认");
|
|
|
|
|
|
+ addRepairStatusRecord(form,"生产审核中");
|
|
// 添加审核记录
|
|
// 添加审核记录
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_PASS, CommonConstants.TYPE_REPAIR_MANAGER_VERIFY);
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_PASS, CommonConstants.TYPE_REPAIR_MANAGER_VERIFY);
|
|
// 通知报修人(生产审核)
|
|
// 通知报修人(生产审核)
|
|
sendMessageToRepairCaller(BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class),CommonConstants.CALL_REPAIR_SUCCESS);
|
|
sendMessageToRepairCaller(BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class),CommonConstants.CALL_REPAIR_SUCCESS);
|
|
|
|
+ // 通知相关领导
|
|
|
|
+ sendMessageToLeader(BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class),CommonConstants.CALL_REPAIR_COMPLETE);
|
|
return form;
|
|
return form;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -290,7 +546,7 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_PASS, CommonConstants.TYPE_CALLER_VERIFY);
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_PASS, CommonConstants.TYPE_CALLER_VERIFY);
|
|
// 通知主管,是否通知维修人
|
|
// 通知主管,是否通知维修人
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
- sendMessageToRepairManger(form,vo,CommonConstants.CALL_REPAIR_FINISH);
|
|
|
|
|
|
+ //sendMessageToRepairManger(form,vo,CommonConstants.CALL_REPAIR_FINISH);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -303,7 +559,7 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_REFUSED, CommonConstants.TYPE_CALLER_VERIFY);
|
|
addRepairVerifyRecord(model,CommonConstants.STATUS_VERIFY_REFUSED, CommonConstants.TYPE_CALLER_VERIFY);
|
|
// 通知主管,再次派工维修
|
|
// 通知主管,再次派工维修
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
SysUserVO vo = BeanConverterUtil.copyObjectProperties(sysUserMapper.selectByPrimaryKey(form.getDispatchUserId()),SysUserVO.class);
|
|
- sendMessageToRepairManger(form,vo,CommonConstants.CALL_REPAIR_FAIL);
|
|
|
|
|
|
+ //sendMessageToRepairManger(form,vo,CommonConstants.CALL_REPAIR_FAIL);
|
|
return model;
|
|
return model;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -315,17 +571,7 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
private double editRepairRecord(RepairApplicationFormDTO form,String type){
|
|
private double editRepairRecord(RepairApplicationFormDTO form,String type){
|
|
double hours = 0.0;
|
|
double hours = 0.0;
|
|
// 获取维修记录
|
|
// 获取维修记录
|
|
- Weekend<CustomFieldTemplateData> weekend = new Weekend<>(CustomFieldTemplateData.class);
|
|
|
|
- WeekendCriteria<CustomFieldTemplateData, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
|
- weekendCriteria.andEqualTo(CustomFieldTemplateData::getRemark,CommonConstants.REPAIR_RECORD)
|
|
|
|
- .andEqualTo(CustomFieldTemplateData::getObjId,form.getId()).
|
|
|
|
- andEqualTo(CustomFieldTemplateData::getCreatedUserId,form.getRepairUserId());
|
|
|
|
- weekend.orderBy("createdTime").desc();
|
|
|
|
- List<CustomFieldTemplateData> list = customFieldTemplateDataMapper.selectByExample(weekend);
|
|
|
|
- if(list == null || list.size() == 0){
|
|
|
|
- throw new DeniedException("维修记录异常,请联系技术处理");
|
|
|
|
- }
|
|
|
|
- CustomFieldTemplateData queryData = list.get(0);
|
|
|
|
|
|
+ CustomFieldTemplateData queryData = getLastRepairRecord(form.getId(),form.getRepairUserId());
|
|
CustomFieldTemplateData updData = new CustomFieldTemplateData();
|
|
CustomFieldTemplateData updData = new CustomFieldTemplateData();
|
|
updData.setId(queryData.getId());
|
|
updData.setId(queryData.getId());
|
|
updData.setUpdateTime(LocalDateTime.now());
|
|
updData.setUpdateTime(LocalDateTime.now());
|
|
@@ -334,13 +580,37 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
hours = DateUtils.getDurationHours(queryData.getCreatedTime(), updData.getUpdateTime());
|
|
hours = DateUtils.getDurationHours(queryData.getCreatedTime(), updData.getUpdateTime());
|
|
dataInfo.setRepairMinutes(hours);
|
|
dataInfo.setRepairMinutes(hours);
|
|
dataInfo.setRemark(form.getRemark());
|
|
dataInfo.setRemark(form.getRemark());
|
|
- // 保存维修记录图片
|
|
|
|
|
|
+ // 保存维修记录图片和文件
|
|
sysFileService.saveFile(queryData.getId(), SysFileTypeEnum.REPAIR_REPAIR_IMGS.getValue(), form.getRepairFileList());
|
|
sysFileService.saveFile(queryData.getId(), SysFileTypeEnum.REPAIR_REPAIR_IMGS.getValue(), form.getRepairFileList());
|
|
|
|
+ sysFileService.saveFile(queryData.getId(), SysFileTypeEnum.REPAIR_REPAIR_FILES.getValue(), form.getOpinionFileList());
|
|
updData.setData(JsonUtils.objectToJson(dataInfo));
|
|
updData.setData(JsonUtils.objectToJson(dataInfo));
|
|
customFieldTemplateDataMapper.updateByPrimaryKeySelective(updData);
|
|
customFieldTemplateDataMapper.updateByPrimaryKeySelective(updData);
|
|
return hours;
|
|
return hours;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取最近一次维修记录
|
|
|
|
+ * @param repairId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private CustomFieldTemplateData getLastRepairRecord(String repairId,String repairUserId){
|
|
|
|
+ // 获取维修记录
|
|
|
|
+ Weekend<CustomFieldTemplateData> weekend = new Weekend<>(CustomFieldTemplateData.class);
|
|
|
|
+ WeekendCriteria<CustomFieldTemplateData, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
|
+ weekendCriteria = weekendCriteria.andEqualTo(CustomFieldTemplateData::getRemark,CommonConstants.REPAIR_RECORD)
|
|
|
|
+ .andEqualTo(CustomFieldTemplateData::getObjId,repairId);
|
|
|
|
+ if(StringUtils.isNotBlank(repairUserId)){
|
|
|
|
+ weekendCriteria.andEqualTo(CustomFieldTemplateData::getCreatedUserId,repairUserId);
|
|
|
|
+ }
|
|
|
|
+ weekend.orderBy("createdTime").desc();
|
|
|
|
+ List<CustomFieldTemplateData> list = customFieldTemplateDataMapper.selectByExample(weekend);
|
|
|
|
+ if(list == null || list.size() == 0){
|
|
|
|
+ throw new DeniedException("维修记录异常,请联系技术处理");
|
|
|
|
+ }
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 添加维修记录
|
|
* 添加维修记录
|
|
* @param form
|
|
* @param form
|
|
@@ -364,11 +634,37 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
customFieldTemplateDataMapper.insert(data);
|
|
customFieldTemplateDataMapper.insert(data);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 添加维修转派记录
|
|
|
|
+ * @param form
|
|
|
|
+ */
|
|
|
|
+ private void addRepairDispatchRecord(RepairApplicationFormDTO form,SysUser user){
|
|
|
|
+ SysUser oldUser = sysUserMapper.selectByPrimaryKey(form.getDispatchUserId());
|
|
|
|
+ CustomFieldTemplateData data = new CustomFieldTemplateData();
|
|
|
|
+ data.setId(IdGeneratorUtils.getObjectId());
|
|
|
|
+ data.setObjId(form.getId());
|
|
|
|
+ data.setCreatedTime(LocalDateTime.now());
|
|
|
|
+ data.setCreatedUserId(form.getDispatchUserId());
|
|
|
|
+ data.setCreatedUserName(oldUser.getUsername());
|
|
|
|
+ data.setRemark(CommonConstants.REPAIR_DISPATCH_RECORD);
|
|
|
|
+ RepairDispatchTemplateData dataInfo = new RepairDispatchTemplateData();
|
|
|
|
+ dataInfo.setOldDispatchUserId(oldUser.getUserId());
|
|
|
|
+ dataInfo.setOldDispatchUserName(oldUser.getUsername());
|
|
|
|
+ dataInfo.setRemark(form.getRepairDispatchRemark());
|
|
|
|
+ dataInfo.setDispatchUserId(user.getUserId());
|
|
|
|
+ dataInfo.setDispatchUserName(user.getUsername());
|
|
|
|
+ dataInfo.setFile("");
|
|
|
|
+ dataInfo.setImageList("");
|
|
|
|
+ data.setData(JsonUtils.objectToJson(dataInfo));
|
|
|
|
+ data.setDelFlag(0);
|
|
|
|
+ customFieldTemplateDataMapper.insert(data);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 给报修人发送消息
|
|
* 给报修人发送消息
|
|
* @param model
|
|
* @param model
|
|
- * @param type 1 报修成功 2 报修驳回 3 维修成功
|
|
|
|
|
|
+ * @param type 1 报修成功 2 报修驳回 3 维修成功 4 工程师接单
|
|
*/
|
|
*/
|
|
private void sendMessageToRepairCaller(RepairApplicationFormDTO model,String type){
|
|
private void sendMessageToRepairCaller(RepairApplicationFormDTO model,String type){
|
|
SysUser user = sysUserMapper.selectByPrimaryKey(model.getUserId()); // 推送对象
|
|
SysUser user = sysUserMapper.selectByPrimaryKey(model.getUserId()); // 推送对象
|
|
@@ -379,8 +675,8 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
String detailUrl = "pages/repair-detail/repair-detail?detailId=" + model.getId(); // 微信跳转url
|
|
String detailUrl = "pages/repair-detail/repair-detail?detailId=" + model.getId(); // 微信跳转url
|
|
switch (type){
|
|
switch (type){
|
|
case CommonConstants.CALL_REPAIR_PASS:
|
|
case CommonConstants.CALL_REPAIR_PASS:
|
|
- messageInfo = MessageTemplateUtil.getReceive(model.getNo());
|
|
|
|
- values = new String[]{"您提交的报修单已被接收并开始维修!",model.getNo(),"维修中",DateUtils.dateToString(model.getRepairStartTime()),"请知悉"};
|
|
|
|
|
|
+ messageInfo = MessageTemplateUtil.getRepairStart(model.getNo());
|
|
|
|
+ values = new String[]{"您提交的报修单已开始维修!",model.getNo(),"维修中",DateUtils.dateToString(model.getRepairStartTime()),"请知悉"};
|
|
break;
|
|
break;
|
|
case CommonConstants.CALL_REPAIR_REFUSED:
|
|
case CommonConstants.CALL_REPAIR_REFUSED:
|
|
messageInfo = MessageTemplateUtil.getRefusedReceive(model.getNo(),model.getRemark());
|
|
messageInfo = MessageTemplateUtil.getRefusedReceive(model.getNo(),model.getRemark());
|
|
@@ -389,9 +685,14 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
break;
|
|
break;
|
|
case CommonConstants.CALL_REPAIR_SUCCESS:
|
|
case CommonConstants.CALL_REPAIR_SUCCESS:
|
|
messageInfo = MessageTemplateUtil.getRepairSuccess(model.getNo());
|
|
messageInfo = MessageTemplateUtil.getRepairSuccess(model.getNo());
|
|
- values = new String[]{"您提交的报修单已维修完成!",model.getNo(),"报修完成","","请知悉"};
|
|
|
|
|
|
+ values = new String[]{"您提交的报修单已维修完成!",model.getNo(),"维修完成","","请尽快审核"};
|
|
detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue();
|
|
detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue();
|
|
break;
|
|
break;
|
|
|
|
+ case CommonConstants.CALL_REPAIR_RECEIVE:
|
|
|
|
+ messageInfo = MessageTemplateUtil.getReceive(model.getNo());
|
|
|
|
+ values = new String[]{"您提交的报修单已被工程师接单!",model.getNo(),"已接单","","请知悉"};
|
|
|
|
+ detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_MANAGE_RECEIVE.getValue();
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
// 1、站内信和email
|
|
// 1、站内信和email
|
|
sendWorkplaceAndEmailNew(ListUtils.newArrayList(user.getEmail()),
|
|
sendWorkplaceAndEmailNew(ListUtils.newArrayList(user.getEmail()),
|
|
@@ -404,6 +705,36 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 给相关领导发送消息
|
|
|
|
+ * @param model
|
|
|
|
+ * @param type 1 报修成功 2 报修驳回 3 维修成功 4 工程师接单 5 维修结单
|
|
|
|
+ */
|
|
|
|
+ private void sendMessageToLeader(RepairApplicationFormDTO model,String type){
|
|
|
|
+ // 获取推送对象
|
|
|
|
+ /*List<SysUserVO> userVOS = getRepairMangers(null,null,SysRoleCodeEnum.REPAIR_LEADER.name());
|
|
|
|
+ if(userVOS != null && userVOS.size() > 0){
|
|
|
|
+ String messageInfo = ""; // 通知内容
|
|
|
|
+ Integer detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue();
|
|
|
|
+ String[] values = null; // 微信填充内容
|
|
|
|
+ String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_RECEIVE_SUCCESS_WECHAT_TEMPLATE_ID.name()); // 微信模板ID
|
|
|
|
+ String detailUrl = "pages/repair-detail/repair-detail?detailId=" + model.getId(); // 微信跳转url
|
|
|
|
+ switch (type){
|
|
|
|
+ case CommonConstants.CALL_REPAIR_COMPLETE:
|
|
|
|
+ messageInfo = MessageTemplateUtil.getRepairSuccessForLeader(model.getNo());
|
|
|
|
+ values = new String[]{"您有一条维修结单消息!",model.getNo(),"维修结单",DateUtils.dateToString(model.getRepairStartTime()),"请知悉"};
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ Map<String,List<String>> maps = getPushReceivers(userVOS);
|
|
|
|
+ // 1、站内信和email
|
|
|
|
+ sendWorkplaceAndEmailNew(maps.get("mails"),maps.get("userIds"),model.getId(),messageInfo, detailType);
|
|
|
|
+ // 2、微信
|
|
|
|
+ SendMessageUtils.sendWechatNew(maps.get("openIds"),detailUrl,values,wechatTemplateId);
|
|
|
|
+ // 3、短信
|
|
|
|
+ SendMessageUtils.sendCommonSms(maps.get("phones"),messageInfo);
|
|
|
|
+ }*/
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 给维修人发送消息
|
|
* 给维修人发送消息
|
|
* @param model
|
|
* @param model
|
|
@@ -415,12 +746,12 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
String domain = getAndCheckPcDomain();
|
|
String domain = getAndCheckPcDomain();
|
|
String repairUrl = domain + "repair/form?no=" + model.getNo();
|
|
String repairUrl = domain + "repair/form?no=" + model.getNo();
|
|
// 获取站内信内容
|
|
// 获取站内信内容
|
|
- String info = MessageTemplateUtil.getFreemarkerHtmlContent(repairUrl,
|
|
|
|
|
|
+ String info = MessageTemplateUtil.getVmHtmlContent(repairUrl,
|
|
model, sbInfo);
|
|
model, sbInfo);
|
|
sendWorkplaceAndEmailNew(ListUtils.newArrayList(user.getEmail()),
|
|
sendWorkplaceAndEmailNew(ListUtils.newArrayList(user.getEmail()),
|
|
ListUtils.newArrayList(user.getUserId()),model.getId(),info, WorkplaceBacklogDetailTypeEnum.REPAIR_DISPATCH.getValue());
|
|
ListUtils.newArrayList(user.getUserId()),model.getId(),info, WorkplaceBacklogDetailTypeEnum.REPAIR_DISPATCH.getValue());
|
|
// 2、微信
|
|
// 2、微信
|
|
- String[] values = new String[]{"您有一条维修任务!",model.getActualUser(),sbInfo.getName(),DateUtils.dateToString(model.getApplyTime()),model.getSbCph(),model.getContent(),"请知悉"};
|
|
|
|
|
|
+ String[] values = new String[]{"你有一条维修任务!",model.getActualUser(),sbInfo.getName(),DateUtils.dateToString(model.getApplyTime()),model.getSbCph(),model.getContent(),"请知悉"};
|
|
String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID.name());
|
|
String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID.name());
|
|
String detailUrl = "pages/repair-detail/repair-detail?detailId=" + model.getId();
|
|
String detailUrl = "pages/repair-detail/repair-detail?detailId=" + model.getId();
|
|
SendMessageUtils.sendWechatNew(ListUtils.newArrayList(user.getWxOpenId()),detailUrl,values,wechatTemplateId);
|
|
SendMessageUtils.sendWechatNew(ListUtils.newArrayList(user.getWxOpenId()),detailUrl,values,wechatTemplateId);
|
|
@@ -431,21 +762,21 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
/**
|
|
/**
|
|
* 给维修主管推送消息
|
|
* 给维修主管推送消息
|
|
* @param form
|
|
* @param form
|
|
- * @param type 1 报修通知 2 维修终止通知 3 维修完成 4 生产驳回
|
|
|
|
|
|
+ * @param type 1 报修通知 2 维修终止通知 3 维修完成 4 生产驳回 5 主管派单通知
|
|
*/
|
|
*/
|
|
- private void sendMessageToRepairManger(RepairApplicationForm form,SysUserVO userVO,String type){
|
|
|
|
|
|
+ private void sendMessageToRepairManger(RepairApplicationForm form,List<SysUserVO> userVOs,String type){
|
|
SbInfo sbInfo = sbInfoService.getModelById(form.getSbId());
|
|
SbInfo sbInfo = sbInfoService.getModelById(form.getSbId());
|
|
String domain = getAndCheckPcDomain();
|
|
String domain = getAndCheckPcDomain();
|
|
String repairUrl = domain + "repair/form?no=" + form.getNo();
|
|
String repairUrl = domain + "repair/form?no=" + form.getNo();
|
|
- String info = MessageTemplateUtil.getFreemarkerHtmlContent(repairUrl,
|
|
|
|
|
|
+ String info = MessageTemplateUtil.getVmHtmlContent(repairUrl,
|
|
BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class), sbInfo);
|
|
BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class), sbInfo);
|
|
- Integer detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue();;
|
|
|
|
|
|
+ Integer detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue();
|
|
String[] values = null;
|
|
String[] values = null;
|
|
String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_SEND_SUCCESS_WECHAT_TEMPLATE_ID.name());;
|
|
String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_SEND_SUCCESS_WECHAT_TEMPLATE_ID.name());;
|
|
- String detailUrl = "pages/repair-detail/repair-detail?detailId=" + form.getId();;
|
|
|
|
|
|
+ String detailUrl = "pages/repair-detail/repair-detail?detailId=" + form.getId();
|
|
switch (type){
|
|
switch (type){
|
|
case CommonConstants.CALL_REPAIR_NOTICE:
|
|
case CommonConstants.CALL_REPAIR_NOTICE:
|
|
- values = new String[]{"贵部有一条新的报修消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
|
|
|
|
+ values = new String[]{"有一条新的报修消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
break;
|
|
break;
|
|
case CommonConstants.REPAIR_FAIL_NOTICE:
|
|
case CommonConstants.REPAIR_FAIL_NOTICE:
|
|
values = new String[]{"维修单终止维修消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请再次派工"};
|
|
values = new String[]{"维修单终止维修消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请再次派工"};
|
|
@@ -463,13 +794,59 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
|
|
values = new String[]{"维修生产通过消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
values = new String[]{"维修生产通过消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue();
|
|
detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue();
|
|
break;
|
|
break;
|
|
|
|
+ case CommonConstants.REPORT_REPAIR:
|
|
|
|
+ values = new String[]{"维修主管派单消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
|
|
+ detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_REPORT_LEADER_TRANSFER.getValue();
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
+ Map<String,List<String>> maps = getPushReceivers(userVOs);
|
|
// 1、站内信
|
|
// 1、站内信
|
|
- sendWorkplaceAndEmailNew(ListUtils.newArrayList(userVO.getEmail()),
|
|
|
|
- ListUtils.newArrayList(userVO.getUserId()),form.getId(),info, detailType);
|
|
|
|
|
|
+ sendWorkplaceAndEmailNew(maps.get("mails"),maps.get("userIds"),form.getId(),info, detailType);
|
|
// 2、微信
|
|
// 2、微信
|
|
- SendMessageUtils.sendWechatNew(ListUtils.newArrayList(userVO.getWxOpenId()),detailUrl,values,wechatTemplateId);
|
|
|
|
|
|
+ SendMessageUtils.sendWechatNew(maps.get("openIds"),detailUrl,values,wechatTemplateId);
|
|
// 3、短信
|
|
// 3、短信
|
|
- SendMessageUtils.sendCommonSms(ListUtils.newArrayList(userVO.getPhone()),info);
|
|
|
|
|
|
+ SendMessageUtils.sendCommonSms(maps.get("phones"),info);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 维修上报通知
|
|
|
|
+ * @param form
|
|
|
|
+ * @param userVOs
|
|
|
|
+ */
|
|
|
|
+ private void sendMessageToReportLeader(RepairApplicationForm form,SysUserVO userVOs){
|
|
|
|
+ SbInfo sbInfo = sbInfoService.getModelById(form.getSbId());
|
|
|
|
+ String domain = getAndCheckPcDomain();
|
|
|
|
+ String repairUrl = domain + "repair/form?no=" + form.getNo();
|
|
|
|
+ String info = MessageTemplateUtil.getVmHtmlContent(repairUrl,
|
|
|
|
+ BeanConverterUtil.copyObjectProperties(form,RepairApplicationFormDTO.class), sbInfo);
|
|
|
|
+ Integer detailType = WorkplaceBacklogDetailTypeEnum.REPAIR_REPORT_LEADER.getValue();
|
|
|
|
+ String[] values = new String[]{"有一条新的维修上报消息!",form.getNo(),sbInfo.getName(),form.getContent(),form.getSbCph(),"请知悉"};
|
|
|
|
+ String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_SEND_SUCCESS_WECHAT_TEMPLATE_ID.name());;
|
|
|
|
+ String detailUrl = "pages/repair-detail/repair-detail?detailId=" + form.getId();
|
|
|
|
+ // 1、站内信
|
|
|
|
+ sendWorkplaceAndEmailNew(ListUtils.newArrayList(userVOs.getEmail()),ListUtils.newArrayList(userVOs.getUserId()),form.getId(),info, detailType);
|
|
|
|
+ // 2、微信
|
|
|
|
+ SendMessageUtils.sendWechatNew(ListUtils.newArrayList(userVOs.getWxOpenId()),detailUrl,values,wechatTemplateId);
|
|
|
|
+ // 3、短信
|
|
|
|
+ SendMessageUtils.sendCommonSms(ListUtils.newArrayList(userVOs.getPhone()),info);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Map<String,List<String>> getPushReceivers(List<SysUserVO> userVOS){
|
|
|
|
+ Map<String,List<String>> retInfos = new HashMap<>();
|
|
|
|
+ List<String> mails = ListUtils.newArrayList();
|
|
|
|
+ List<String> userIds = ListUtils.newArrayList();
|
|
|
|
+ List<String> openIds = ListUtils.newArrayList();
|
|
|
|
+ List<String> phones = ListUtils.newArrayList();
|
|
|
|
+ userVOS.forEach(item -> {
|
|
|
|
+ mails.add(item.getEmail());
|
|
|
|
+ userIds.add(item.getUserId());
|
|
|
|
+ openIds.add(item.getWxOpenId());
|
|
|
|
+ phones.add(item.getPhone());
|
|
|
|
+ });
|
|
|
|
+ retInfos.put("mails",mails);
|
|
|
|
+ retInfos.put("userIds",userIds);
|
|
|
|
+ retInfos.put("openIds",openIds);
|
|
|
|
+ retInfos.put("phones",phones);
|
|
|
|
+ return retInfos;
|
|
}
|
|
}
|
|
}
|
|
}
|