|
@@ -4,19 +4,14 @@ import com.github.pagehelper.PageHelper;
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
import com.platform.common.cache.ConfigCache;
|
|
import com.platform.common.cache.ConfigCache;
|
|
import com.platform.common.exception.DeniedException;
|
|
import com.platform.common.exception.DeniedException;
|
|
-import com.platform.common.util.IdGeneratorUtils;
|
|
|
|
-import com.platform.common.util.ListUtils;
|
|
|
|
-import com.platform.common.util.SecurityUtils;
|
|
|
|
-import com.platform.common.util.SpringContextHolder;
|
|
|
|
|
|
+import com.platform.common.model.UserInfo;
|
|
|
|
+import com.platform.common.util.*;
|
|
import com.platform.dao.bean.MyPage;
|
|
import com.platform.dao.bean.MyPage;
|
|
import com.platform.dao.dto.preparation.PreparationDTO;
|
|
import com.platform.dao.dto.preparation.PreparationDTO;
|
|
import com.platform.dao.dto.upms.SysUserDTO;
|
|
import com.platform.dao.dto.upms.SysUserDTO;
|
|
import com.platform.dao.entity.preparation.Preparation;
|
|
import com.platform.dao.entity.preparation.Preparation;
|
|
import com.platform.dao.entity.sb.SbPosition;
|
|
import com.platform.dao.entity.sb.SbPosition;
|
|
-import com.platform.dao.enums.SysConfigEnum;
|
|
|
|
-import com.platform.dao.enums.SysRoleCodeEnum;
|
|
|
|
-import com.platform.dao.enums.WorkplaceBacklogDetailTypeEnum;
|
|
|
|
-import com.platform.dao.enums.WorkplaceBacklogTypeEnum;
|
|
|
|
|
|
+import com.platform.dao.enums.*;
|
|
import com.platform.dao.mapper.preparation.PreparationMapper;
|
|
import com.platform.dao.mapper.preparation.PreparationMapper;
|
|
import com.platform.dao.mapper.sb.SbPositionMapper;
|
|
import com.platform.dao.mapper.sb.SbPositionMapper;
|
|
import com.platform.dao.mapper.upms.SysUserDeptMapper;
|
|
import com.platform.dao.mapper.upms.SysUserDeptMapper;
|
|
@@ -27,6 +22,7 @@ import com.platform.dao.vo.query.preparation.PreparationVO;
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
import com.platform.service.event.WorkplaceBacklogEvent;
|
|
import com.platform.service.event.WorkplaceBacklogEvent;
|
|
import com.platform.service.preparation.PreparationService;
|
|
import com.platform.service.preparation.PreparationService;
|
|
|
|
+import com.platform.service.upms.SysFileService;
|
|
import com.platform.service.util.SendMessageUtils;
|
|
import com.platform.service.util.SendMessageUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
@@ -34,6 +30,8 @@ import tk.mybatis.mapper.weekend.Weekend;
|
|
import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -53,6 +51,8 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
|
|
private SysUserDeptMapper sysUserDeptMapper;
|
|
private SysUserDeptMapper sysUserDeptMapper;
|
|
@Resource
|
|
@Resource
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysFileService sysFileService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public int batchDelete(List<String> ids) {
|
|
public int batchDelete(List<String> ids) {
|
|
@@ -66,6 +66,23 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
|
|
@Override
|
|
@Override
|
|
public AbstractPageResultBean<PreparationVO> selectPageList(PreparationDTO record, int pageNum, int pageSize) {
|
|
public AbstractPageResultBean<PreparationVO> selectPageList(PreparationDTO record, int pageNum, int pageSize) {
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
|
|
+ if(record.getSearchType() != null){
|
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
|
+ record.setTempUserId(userInfo.getUserId());
|
|
|
|
+ List<Integer> statusList = new ArrayList<>();
|
|
|
|
+ if(record.getSearchType() == 1){ // 我的工单
|
|
|
|
+ statusList.add(PreparationStatusEnum.NOT_ALLOCATED.getValue());
|
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.FINISHED.getValue());
|
|
|
|
+ }else if(record.getSearchType() == 2){ // 待派工单
|
|
|
|
+ statusList.add(PreparationStatusEnum.NOT_ALLOCATED.getValue());
|
|
|
|
+ }
|
|
|
|
+ // 超级管理员可以看到各个状态下的所有数据 相关领导,可以在这里进行设置
|
|
|
|
+ if(userInfo.getSuperAdmin() == 1 || record.getSearchType() == -1){
|
|
|
|
+ record.setTempUserId(null);
|
|
|
|
+ }
|
|
|
|
+ record.setStatusList(statusList);
|
|
|
|
+ }
|
|
return new MyPage(mapper.selectList(record));
|
|
return new MyPage(mapper.selectList(record));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -92,12 +109,56 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
|
|
weekend.weekendCriteria().andIsNotNull(Preparation::getId);
|
|
weekend.weekendCriteria().andIsNotNull(Preparation::getId);
|
|
Integer count = mapper.selectCountByExample(weekend);
|
|
Integer count = mapper.selectCountByExample(weekend);
|
|
model.setNo(IdGeneratorUtils.getPreparationNo(++count));
|
|
model.setNo(IdGeneratorUtils.getPreparationNo(++count));
|
|
|
|
+ model.setStatus(PreparationStatusEnum.NOT_ALLOCATED.getValue()); // 待分配
|
|
Preparation preparation = this.saveModelByDTO(model);
|
|
Preparation preparation = this.saveModelByDTO(model);
|
|
// 给主管发送消息
|
|
// 给主管发送消息
|
|
sendMessageToManger(userVOS,preparation);
|
|
sendMessageToManger(userVOS,preparation);
|
|
return preparation;
|
|
return preparation;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void dispatchPreparation(PreparationDTO model) {
|
|
|
|
+ String roles = com.platform.common.util.StringUtils.getRoles();
|
|
|
|
+ if(!roles.contains(SysRoleCodeEnum.PREPARATION_MANAGER.name())){
|
|
|
|
+ throw new DeniedException("不具备派单权限");
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isEmpty(model.getRepairUserId())){
|
|
|
|
+ throw new DeniedException("派单对象不能为空");
|
|
|
|
+ }
|
|
|
|
+ Preparation preparation = mapper.selectByPrimaryKey(model.getId());
|
|
|
|
+ Preparation updPre = new Preparation();
|
|
|
|
+ updPre.setId(model.getId());
|
|
|
|
+ updPre.setRepairStartTime(LocalDateTime.now());
|
|
|
|
+ updPre.setRepairUserId(model.getRepairUserId());
|
|
|
|
+ updPre.setDispatchUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
|
+ updPre.setStatus(PreparationStatusEnum.PROCESSING.getValue());
|
|
|
|
+ mapper.updateByPrimaryKeySelective(updPre);
|
|
|
|
+ model.setNo(preparation.getNo());
|
|
|
|
+ model.setContent(preparation.getContent());
|
|
|
|
+ model.setPositionId(preparation.getPositionId());
|
|
|
|
+ SysUserDTO queryDTO = new SysUserDTO();
|
|
|
|
+ queryDTO.setUserId(model.getRepairUserId());
|
|
|
|
+ List<SysUserVO> userVOS = sysUserMapper.getSysUserVO(queryDTO);
|
|
|
|
+ // 给具体处理人发送消息
|
|
|
|
+ sendMessageToRepairer(userVOS,model);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void completePreparation(PreparationDTO model) {
|
|
|
|
+ Preparation preparation = mapper.selectByPrimaryKey(model.getId());
|
|
|
|
+ Preparation updPre = new Preparation();
|
|
|
|
+ updPre.setId(model.getId());
|
|
|
|
+ updPre.setRepairContent(model.getRepairContent());
|
|
|
|
+ updPre.setRepairEndTime(LocalDateTime.now());
|
|
|
|
+ updPre.setRepairMinutes(DateUtils.getDurationHours(preparation.getRepairStartTime(), updPre.getRepairEndTime()));
|
|
|
|
+ updPre.setStatus(PreparationStatusEnum.FINISHED.getValue());
|
|
|
|
+ updPre.setFee(model.getFee());
|
|
|
|
+ // 保存文件图片
|
|
|
|
+ sysFileService.saveFile(model.getId(), SysFileTypeEnum.PREPARATION_APPLICATION_IMGS.getValue(), model.getImageList());
|
|
|
|
+ sysFileService.saveFile(model.getId(),SysFileTypeEnum.PREPARATION_APPLICATION_FILES.getValue(),model.getFileList());
|
|
|
|
+ mapper.updateByPrimaryKeySelective(updPre);
|
|
|
|
+ }
|
|
|
|
+
|
|
private String getParentPositionId(String positionId){
|
|
private String getParentPositionId(String positionId){
|
|
SbPosition sbPosition = sbPositionMapper.selectByPrimaryKey(positionId);
|
|
SbPosition sbPosition = sbPositionMapper.selectByPrimaryKey(positionId);
|
|
while(!StringUtils.isEmpty(sbPosition.getParentId())){
|
|
while(!StringUtils.isEmpty(sbPosition.getParentId())){
|
|
@@ -157,4 +218,19 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
|
|
repairId, content, repairId, userIds, mails));
|
|
repairId, content, repairId, userIds, mails));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void sendMessageToRepairer(List<SysUserVO> userVOS,PreparationDTO preparation){
|
|
|
|
+ String info = MessageTemplateUtil.getPreparationForRepair(preparation.getNo());
|
|
|
|
+ Integer detailType = WorkplaceBacklogDetailTypeEnum.PREPARATION_REPAIR_DISPATCH.getValue();
|
|
|
|
+ String[] values = new String[]{"有新的筹建派工任务!",preparation.getNo(),"无",preparation.getContent(),sbPositionMapper.selectNameById(preparation.getPositionId()),"请尽快处理"};
|
|
|
|
+ String wechatTemplateId = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_SEND_SUCCESS_WECHAT_TEMPLATE_ID.name());;
|
|
|
|
+ String detailUrl = "pages/service-detail/service-detail?id=" + preparation.getId();
|
|
|
|
+ Map<String,List<String>> maps = getPushReceivers(userVOS);
|
|
|
|
+ // 1、站内信
|
|
|
|
+ sendWorkplaceAndEmailNew(maps.get("mails"),maps.get("userIds"),preparation.getId(),info, detailType);
|
|
|
|
+ // 2、微信
|
|
|
|
+ SendMessageUtils.sendWechatNew(maps.get("openIds"),detailUrl,values,wechatTemplateId);
|
|
|
|
+ // 3、短信
|
|
|
|
+ SendMessageUtils.sendCommonSms(maps.get("phones"),info);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|