diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairAttachController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairAttachController.java index 4f17d59..b8b0c22 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairAttachController.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairAttachController.java @@ -1,25 +1,34 @@ package com.ics.admin.controller; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.ics.common.core.domain.R; -import com.ics.common.core.controller.BaseController; import com.ics.admin.domain.RepairAttach; import com.ics.admin.service.IRepairAttachService; +import com.ics.admin.vo.RepairAttachVO; +import com.ics.common.core.controller.BaseController; +import com.ics.common.core.domain.R; +import com.ics.common.utils.StringUtils; +import com.ics.common.utils.file.FileUploadUtils; +import com.ics.system.config.DfsConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import org.wf.jwtp.annotation.Logical; import org.wf.jwtp.annotation.RequiresPermissions; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + /** - * 附件 提供者 + * 附件 * * @author chen * @date 2024-07-31 */ +@Slf4j @RestController @RequestMapping("repairAttach") public class RepairAttachController extends BaseController { @@ -27,50 +36,127 @@ public class RepairAttachController extends BaseController { @Autowired private IRepairAttachService repairAttachService; + @Autowired + private DfsConfig dfsConfig; + + private final static String FILE_VOICE = "voice"; + + private final static String FILE_IMG = "img/video"; + /** - * 查询附件 + * 保修上传语音 */ - @GetMapping("get/{id}") - public RepairAttach get(@PathVariable("id") Long id) { - return repairAttachService.selectRepairAttachById(id); + @RequiresPermissions(value = {"repair:attach:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("upload/voice") + public R voiceUpload(MultipartFile file) { + return processAttache(file, null, 1, FILE_VOICE); } /** - * 查询附件列表 + * 保修上传图片视频 + * + * @param file + * @param repairId 工单id + * @param operate 操作 repair\feedback\eval + * @return */ - @RequiresPermissions("admin:attach:list") - @GetMapping("list") - public R list(RepairAttach repairAttach) { - startPage(); - return result(repairAttachService.selectRepairAttachList(repairAttach)); + @RequiresPermissions(value = {"repair:attach:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("upload") + public R Upload(MultipartFile file, Long repairId, String operate) { + int nodeId = 0; + if (StringUtils.isNotBlank(operate)) { + if ("repair".equals(operate)) nodeId = 1; + if ("feedback".equals(operate)) nodeId = 9; + if ("eval".equals(operate)) nodeId = 13; + } + if (nodeId == 0) return R.error("无效参数"); + if ((nodeId == 9 || nodeId == 13) && repairId == null) return R.error("无效参数"); + return processAttache(file, repairId, nodeId, FILE_IMG); } - /** - * 新增保存附件 - */ - @RequiresPermissions("admin:attach:add") - @PostMapping("save") - public R addSave(@RequestBody RepairAttach repairAttach) { - return toAjax(repairAttachService.insertRepairAttach(repairAttach)); + private R processAttache(MultipartFile file, Long repairId, int nodeId, String type) { + String originalFilename = file.getOriginalFilename(); + long size = file.getSize(); + Long userId = getLoginStaffId(); + if (userId == null) return R.error("未找到有效微信用户"); + try { + // 上传文件路径 + String filePath = dfsConfig.getPath(); + // 上传并返回新文件名称 + String url = FileUploadUtils.upload(filePath, file); + RepairAttach repairAttach = new RepairAttach(); + repairAttach.setRepairId(repairId); + repairAttach.setNodeId(nodeId); + repairAttach.setOriginalFilename(originalFilename); + repairAttach.setUrl(url); + repairAttach.setFileSize(size); + repairAttach.setExt1(type); + repairAttach.setDeleteFlag(0); + repairAttach.setCreateTime(new Date()); + repairAttach.setCreateBy(userId.toString()); + repairAttachService.insertRepairAttach(repairAttach);//插入附件数据 + return R.ok().put("id", repairAttach.getId()) + .put("originalFilename", originalFilename) + .put("url", dfsConfig.getDomain() + url); + } catch (Exception e) { + log.error("上传文件失败", e); + return R.error(e.getMessage()); + } } /** - * 修改保存附件 + * 删除附件,用户删除自己的附件 */ - @RequiresPermissions("admin:attach:edit") - @PostMapping("update") - public R editSave(@RequestBody RepairAttach repairAttach) { - return toAjax(repairAttachService.updateRepairAttach(repairAttach)); - } - - /** - * 删除附件 - */ - @RequiresPermissions("admin:attach:remove") + @RequiresPermissions(value = {"repair:attach:operator", "member:center:view"}, logical = Logical.OR) @PostMapping("remove") - public R remove(String ids) { - return toAjax(repairAttachService.deleteRepairAttachByIds(ids)); + public R remove(Long id) { + Long userId = getLoginStaffId(); + if (userId == null) return R.error("未找到有效微信用户"); + return toAjax(repairAttachService.deleteRepairAttachById(id, userId)); } + /** + * 删除附件,管理员删除指定附件 + */ + @RequiresPermissions(value = {"repair:attach:operator"}) + @PostMapping("delete") + public R delete(Long id) { + return toAjax(repairAttachService.deleteRepairAttachById(id)); + } + + /** + * 查询工单所有附件 + */ + @RequiresPermissions(value = {"repair:attach:operator", "member:center:view"}, logical = Logical.OR) + @GetMapping("list") + public R list(Long repairId) { + List list = repairAttachService.getListByRepair(repairId);//工单所有附件 + List voices = new ArrayList<>(); + List repairs = new ArrayList<>(); + List feedbacks = new ArrayList<>(); + List evals = new ArrayList<>(); + for (RepairAttach repairAttach : list) { + RepairAttachVO repairAttachVO = new RepairAttachVO(repairAttach.getId(), repairAttach.getUrl()); + if (repairAttach.getNodeId() == 1) { + if (FILE_VOICE.equals(repairAttach.getExt1())) voices.add(repairAttachVO); + if (FILE_IMG.equals(repairAttach.getExt1())) repairs.add(repairAttachVO); + } + if (repairAttach.getNodeId() == 9) feedbacks.add(repairAttachVO); + if (repairAttach.getNodeId() == 13) evals.add(repairAttachVO); + } + + return R.ok().put("voice", voices) + .put("repair", repairs) + .put("feedback", feedbacks) + .put("eval", evals); + } + +// @Ignore +// @PostMapping("test") +// public R test(Long repairId) { +// //repairAttachService.updateRepairAttach(repairId,ids); +// return toAjax(repairAttachService.deleteByRepairId(repairId)); +// //return R.ok(); +// } } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/Repair.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/Repair.java index 988c71d..edc4102 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/Repair.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/Repair.java @@ -38,7 +38,7 @@ public class Repair extends BaseEntity { /** * 设备类别id */ - private Integer typeId; + private Long typeId; /** * 设备类别名称 */ @@ -46,7 +46,7 @@ public class Repair extends BaseEntity { /** * 设备id */ - private Integer deviceId; + private Long deviceId; /** * 设备名称 */ @@ -91,12 +91,12 @@ public class Repair extends BaseEntity { /** * 派单员id */ - private long perUserId; + private Long perUserId; /** * 派单员姓名 */ @TableField(exist = false) - private String perUserrName; + private String perUserName; /** * 预计完成时间 */ @@ -130,7 +130,7 @@ public class Repair extends BaseEntity { /** * 维修人员id */ - private long repairUserId; + private Long repairUserId; /** * 维修人员姓名 */ @@ -197,7 +197,7 @@ public class Repair extends BaseEntity { /** * 当前日志记录id */ - private long logId; + private Long logId; /** * 备注 diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairAttachMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairAttachMapper.java index 1834b0d..0674388 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairAttachMapper.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairAttachMapper.java @@ -3,12 +3,13 @@ package com.ics.admin.mapper; import com.ics.admin.domain.RepairAttach; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; /** * 维修人分类关联Mapper接口 - * + * * @author chen * @date 2024-07-31 */ @@ -24,11 +25,13 @@ public interface RepairAttachMapper extends BaseMapper { /** * 查询附件列表 + *

+ * 环节id 1保修 9维修工反馈附件 13 评价附件 * - * @param repairAttach 附件 + * @param repairId 工单id * @return 附件集合 */ - List selectRepairAttachList(RepairAttach repairAttach); + List selectRepairAttachList(@Param("repairId") Long repairId); /** * 新增附件 @@ -39,12 +42,21 @@ public interface RepairAttachMapper extends BaseMapper { int insertRepairAttach(RepairAttach repairAttach); /** - * 修改附件 + * 更新附件数据 将指定附件与指定工单关联 * - * @param repairAttach 附件 + * @param repairId 工单id + * @param ids 附件id数组 * @return 结果 */ - int updateRepairAttach(RepairAttach repairAttach); + int updateRepairAttachs(@Param("repairId") Long repairId, @Param("ids") String[] ids); + + /** + * 删除工单附件 + * + * @param repairId 工单ID + * @return 结果 + */ + int deleteByRepairId(Long repairId); /** * 删除附件 @@ -54,11 +66,4 @@ public interface RepairAttachMapper extends BaseMapper { */ int deleteRepairAttachById(Long id); - /** - * 批量删除附件 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ - int deleteRepairAttachByIds(String[] ids); } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRelationalMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRelationalMapper.java index d4ae58c..6debf3c 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRelationalMapper.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRelationalMapper.java @@ -22,6 +22,19 @@ public interface RepairRelationalMapper extends BaseMapper { */ RepairRelational selectRepairRelationalById(Long id); + /** + * 根据类型id获取 相应的派单员及维修人员 + * @param typeID 设备类型id + * @return + */ + List selectRepairRelationalByTypeId(Long typeID); + + /** + * 根据类型id获取 相应的派单员及 + * @param typeID 设备类型id + * @return + */ + List selectDispatcherByTypeId(Long typeID); /** * 查询设备类型与派单员、维修人员的关联关系列表 * diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairAttachService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairAttachService.java index b5085be..eb0ec90 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairAttachService.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairAttachService.java @@ -1,57 +1,50 @@ package com.ics.admin.service; -import com.ics.admin.domain.RepairAttach; import com.baomidou.mybatisplus.extension.service.IService; -import com.ics.common.core.domain.IcsCustomerStaff; +import com.ics.admin.domain.RepairAttach; import java.util.List; /** * 附件Service接口 - * + * * @author chen * @date 2024-07-31 */ public interface IRepairAttachService extends IService { - /** - * 查询附件 - * - * @param id 附件ID - * @return 附件 - */ - RepairAttach selectRepairAttachById(Long id); - - /** - * 查询附件列表 - * - * @param repairAttach 附件 - * @return 附件集合 - */ - List selectRepairAttachList(RepairAttach repairAttach); /** * 新增附件 * * @param repairAttach 附件 - * @return 结果 + * @return */ int insertRepairAttach(RepairAttach repairAttach); /** - * 修改附件 + * 提交表单后更新附件数据,将自动的附件数据关联为指定工单 * - * @param repairAttach 附件 - * @return 结果 + * @param ids 附件id数组 + * @param repairId 工单id + * @return */ - int updateRepairAttach(RepairAttach repairAttach); + int updateRepairAttach(long repairId, String[] ids); /** - * 批量删除附件 + * 查询工单所有附件 * - * @param ids 需要删除的数据ID - * @return 结果 + * @param repairId 工单id + * @return */ - int deleteRepairAttachByIds(String ids); + List getListByRepair(long repairId); + + /** + * 删除工单附件 + * + * @param repairId + * @return + */ + int deleteByRepairId(long repairId); /** * 删除附件信息 @@ -61,4 +54,13 @@ public interface IRepairAttachService extends IService { */ int deleteRepairAttachById(Long id); + /** + * 删除指定用户的指定附件 + * + * @param id 附件id + * @param userId 用户id + * @return + */ + int deleteRepairAttachById(Long id, Long userId); + } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairService.java index 8a727f4..1f2be1e 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairService.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairService.java @@ -13,6 +13,19 @@ import java.util.List; * @date 2021-03-25 */ public interface IRepairService extends IService { + + /** + * 处理流程 + * @return okay 表示处理成功 + */ + String handleFlow(Repair repair, Long currentUserId, Long nextUserId, String[] files, String content, String operate); + + /** + * 评价 + */ + void eval(Repair repair, Long currentUserId); + + /** * 查询工单 * diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairAttachServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairAttachServiceImpl.java index 575266b..d3793dc 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairAttachServiceImpl.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairAttachServiceImpl.java @@ -1,99 +1,92 @@ package com.ics.admin.service.impl; -import java.util.List; -import java.util.stream.Collectors; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ics.admin.mapper.IcsCustomerStaffMapper; -import com.ics.common.core.domain.IcsCustomerStaff; +import com.ics.admin.domain.RepairAttach; +import com.ics.admin.mapper.RepairAttachMapper; +import com.ics.admin.service.IRepairAttachService; +import com.ics.common.utils.StringUtils; +import com.ics.common.utils.file.FileUtils; +import com.ics.system.config.DfsConfig; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.ics.admin.mapper.RepairAttachMapper; -import com.ics.admin.domain.RepairAttach; -import com.ics.admin.service.IRepairAttachService; + +import java.util.List; /** - * 附件Service业务层处理 - * + * 附件Service业务层处理 + * * @author chen * @date 2024-07-31 */ +@Slf4j @Service public class RepairAttachServiceImpl extends ServiceImpl implements IRepairAttachService { @Autowired private RepairAttachMapper repairAttachMapper; - /** - * 查询附件 - * - * @param id 附件ID - * @return 附件 - */ - @Override - public RepairAttach selectRepairAttachById(Long id) { - return repairAttachMapper.selectById(id); - } + @Autowired + private DfsConfig dfsConfig; - /** - * 查询附件列表 - * - * @param repairAttach 附件 - * @return 附件 - */ - @Override - public List selectRepairAttachList(RepairAttach repairAttach) { - QueryWrapper queryWrapper = new QueryWrapper(); - return repairAttachMapper.selectList(queryWrapper); - } - - /** - * 新增附件 - * - * @param repairAttach 附件 - * @return 结果 - */ @Override public int insertRepairAttach(RepairAttach repairAttach) { - return repairAttachMapper.insert(repairAttach); + return repairAttachMapper.insertRepairAttach(repairAttach); } - /** - * 修改附件 - * - * @param repairAttach 附件 - * @return 结果 - */ @Override - public int updateRepairAttach(RepairAttach repairAttach) { - return repairAttachMapper.updateById(repairAttach); + public int updateRepairAttach(long repairId, String[] ids) { + return repairAttachMapper.updateRepairAttachs(repairId, ids); } - /** - * 删除附件对象 - * - * @param ids 需要删除的数据ID - * @return 结果 - */ + @Override - public int deleteRepairAttachByIds(String ids) { - String[] idsArray = StrUtil.split(ids,","); - return repairAttachMapper.deleteBatchIds(CollUtil.toList(idsArray)); + public List getListByRepair(long repairId) { + return repairAttachMapper.selectRepairAttachList(repairId); } - /** - * 删除附件信息 - * - * @param id 附件ID - * @return 结果 - */ + @Override + public int deleteByRepairId(long repairId) { + List list = repairAttachMapper.selectRepairAttachList(repairId); + for (RepairAttach repairAttach : list) { + deleteFile(repairAttach.getUrl()); + } + return repairAttachMapper.deleteByRepairId(repairId); + } + + @Override public int deleteRepairAttachById(Long id) { - return repairAttachMapper.deleteRepairAttachById(id); + RepairAttach repairAttach = repairAttachMapper.selectRepairAttachById(id); + if (repairAttach != null) { + deleteFile(repairAttach.getUrl()); + return repairAttachMapper.deleteRepairAttachById(id); + } + return 0; + } + + @Override + public int deleteRepairAttachById(Long id, Long userId) { + RepairAttach repairAttach = repairAttachMapper.selectRepairAttachById(id); + if (repairAttach != null) { + if (userId.toString().equals(repairAttach.getCreateBy())) {//用户只能删除自己的附件 + deleteFile(repairAttach.getUrl()); + return repairAttachMapper.deleteRepairAttachById(id); + } + } + return 0; + } + + /** + * 物理删除附件 + * + * @param url 表中url字段 + * @return + */ + private boolean deleteFile(String url) { + if (StringUtils.isBlank(url)) return false; + String filePath = dfsConfig.getPath() + url.substring(8);//去除 /profile + return FileUtils.deleteFile(filePath);//物理删除 } } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairServiceImpl.java index c315f48..0ba4c55 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairServiceImpl.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairServiceImpl.java @@ -2,29 +2,29 @@ package com.ics.admin.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ics.admin.domain.Repair; import com.ics.admin.domain.RepairLog; -import com.ics.admin.domain.RepairAttach; +import com.ics.admin.domain.RepairRelational; import com.ics.admin.mapper.IcsCustomerStaffMapper; -import com.ics.admin.mapper.RepairMapper; import com.ics.admin.mapper.RepairAttachMapper; -import com.ics.admin.service.IRepairLogService; +import com.ics.admin.mapper.RepairLogMapper; +import com.ics.admin.mapper.RepairMapper; +import com.ics.admin.mapper.RepairRelationalMapper; import com.ics.admin.service.IRepairService; -import com.ics.admin.service.IRepairAttachService; +import com.ics.admin.utils.FlowConstants; import com.ics.common.core.domain.IcsCustomerStaff; -import com.ics.common.utils.DateUtils; +import com.ics.common.utils.StringUtils; import com.ics.system.domain.Sn; -import com.ics.system.service.ICurrentUserService; import com.ics.system.service.ISnService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; -import java.util.stream.Collectors; /** * 工单管理Service业务层处理 @@ -32,11 +32,162 @@ import java.util.stream.Collectors; * @author ics * @date 2021-03-25 */ +@Slf4j @Service public class RepairServiceImpl extends ServiceImpl implements IRepairService { + + @Autowired + private ISnService snService; + + @Autowired + private RepairRelationalMapper repairRelationalMapper; + + @Autowired + private IcsCustomerStaffMapper customerStaffMapper; + @Autowired private RepairMapper repairMapper; + @Autowired + private RepairLogMapper repairLogMapper; + + @Autowired + private RepairAttachMapper repairAttachMapper; + + + @Transactional(rollbackFor = Exception.class) + @Override + public String handleFlow(Repair repair, Long currentUserId, Long nextUserId, String[] files, String content, String operate) { + return processFlow(repair, currentUserId, nextUserId, files, content, operate); + } + + @Override + public void eval(Repair repair, Long currentUserId) { + Repair oldRepair = repairMapper.selectRepairById(repair.getId()); + oldRepair.setEvalService(repair.getEvalService()); + oldRepair.setFeedback(repair.getFeedback()); + oldRepair.setEvalTime(new Date()); + oldRepair.setEvalUserId(currentUserId); + oldRepair.setStatus(13); + repairMapper.updateRepair(oldRepair); + } + + private String processFlow(Repair repair, Long currentUserId, Long nextUserId, String[] files, String content, String operate) { + if (repair == null) return "表单数据为空"; + IcsCustomerStaff currentUser = customerStaffMapper.selectIcsCustomerStaffById(currentUserId); + IcsCustomerStaff nextUser = null; + Integer from = -1, to = -1; + from = repair.getId() == null || repair.getId() == 0L ? 0 : repair.getStatus(); + Repair newRepair = from == 0 ? repair : repairMapper.selectRepairById(repair.getId());//优先使用数据库中的表单 + //保修 + if (from == 0) { + //没有设置维修人员则到派单环节,否则到“修理工是否接收”环节 + to = repair.getRepairUserId() == null ? 1 : 5; + if (repair.getTypeId() == null) return "表单设备类型数据为空"; + List listRelational = repairRelationalMapper.selectDispatcherByTypeId(repair.getTypeId()); + if (listRelational == null || listRelational.size() == 0) return "根据表单设备类型找不到派单员"; + nextUser = customerStaffMapper.selectIcsCustomerStaffById(listRelational.get(0).getUserId());//查询派单员 + if (nextUser == null) return "没有找到派单员账号"; + repair.setSn(snService.generate(Sn.Type.REPAIR));//编单号 + repair.setPerUserId(nextUser.getId());//设置派单员 + repair.setWarn(0); + repair.setDeleteFlag(0); + repair.setCreateBy(currentUserId.toString()); + repair.setCreateTime(new Date()); + if (to == 5) { + nextUser = customerStaffMapper.selectIcsCustomerStaffById(repair.getRepairUserId()); + } + } + //派单 + if (from == 1) { + if (FlowConstants.NEXT.equals(operate)) { + to = 5; + nextUser = customerStaffMapper.selectIcsCustomerStaffById(nextUserId); + if (nextUser == null) return "派单没有找到下一步执行人"; + newRepair.setRepairUserId(nextUser.getId()); + newRepair.setPreDate(repair.getPreDate());//设置预计完成时间 + } + if (FlowConstants.BACK.equals(operate)) { + to = 3; + IcsCustomerStaff p = new IcsCustomerStaff(); + p.setDataType("7"); + List list = customerStaffMapper.selectIcsCustomerStaffList(p); + if (list == null || list.size() == 0) return "没有找到管理员账号"; + nextUser = list.get(0); + } + if (FlowConstants.END.equals(operate)) to = 11; + } + //重新派单 + if (from == 3) { + to = 1; + if (repair.getTypeId() == null) return "表单设备类型数据为空"; + List listRelational = repairRelationalMapper.selectDispatcherByTypeId(repair.getTypeId()); + if (listRelational == null || listRelational.size() == 0) return "根据表单设备类型找不到派单员"; + nextUser = customerStaffMapper.selectIcsCustomerStaffById(listRelational.get(0).getUserId());//查询派单员 + if (nextUser == null) return "没有找到派单员账号"; + newRepair.setTypeId(repair.getTypeId()); + newRepair.setTypeName(repair.getTypeName()); + newRepair.setDeviceId(repair.getDeviceId()); + newRepair.setDeviceName(repair.getDeviceName()); + repair.setPerUserId(nextUser.getId());//设置派单员 + } + //修理工是否接收 + if (from == 5) { + if (FlowConstants.BACK.equals(operate)) to = 1; + if (FlowConstants.NEXT.equals(operate)) to = 7; + } + //修理反馈 + if (from == 7) { + to = 9; + newRepair.setCause(repair.getCause()); + newRepair.setSolution(repair.getSolution()); + newRepair.setFailureTypeId(repair.getFailureTypeId()); + newRepair.setFailureTypeName(repair.getFailureTypeName()); + newRepair.setResolve(repair.getResolve()); + newRepair.setEndDate(new Date()); + } + newRepair.setStatus(to);//设置状态 + processData(newRepair, currentUser, nextUser, from, to, content, files); + return FlowConstants.OK; + } + + private void processData(Repair repair, IcsCustomerStaff currentUser, IcsCustomerStaff nextUser, Integer from, Integer to, String content, String[] files) { + Date now = new Date(); + RepairLog oldLog = null; + if (from == 0) { + repairMapper.insertRepair(repair); + if (files != null && files.length > 0) repairAttachMapper.updateRepairAttachs(repair.getId(), files);//处理附件 + } else { + repairMapper.updateRepair(repair); + oldLog = repairLogMapper.selectRepairLogById(repair.getLogId()); + oldLog.setStatus(1); + oldLog.setCloseTime(now); + if (StringUtils.isNotBlank(content)) oldLog.setContent(content); + repairLogMapper.updateRepairLog(oldLog); + } + //新增日志 + RepairLog repairLog = new RepairLog(); + repairLog.setPid(oldLog == null ? 0L : oldLog.getId()); + repairLog.setRepairId(repair.getId()); + repairLog.setForm(from); + repairLog.setTo(to); + repairLog.setSendUserId(currentUser.getId()); + repairLog.setSendUserName(currentUser.getUsername()); + repairLog.setRecUserId(nextUser.getId()); + repairLog.setRecUserName(nextUser.getUsername()); + repairLog.setStatus(0); + repairLog.setDeleteFlag(0); + repairLog.setCreateBy(currentUser.getId().toString()); + repairLog.setCreateTime(now); + if (to == 9 || to == 11) {//结束 + repairLog.setStatus(1); + repairLog.setCloseTime(now); + } + repairLogMapper.insertRepairLog(repairLog); + repair.setLogId(repairLog.getId()); + repairMapper.updateRepair(repair); + } + /** * 查询工单 * @@ -90,7 +241,7 @@ public class RepairServiceImpl extends ServiceImpl impleme */ @Override public int deleteRepairByIds(String ids) { - String[] idsArray = StrUtil.split(ids,","); + String[] idsArray = StrUtil.split(ids, ","); return repairMapper.deleteBatchIds(CollUtil.toList(idsArray)); } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairAttachVO.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairAttachVO.java new file mode 100644 index 0000000..78f026d --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/RepairAttachVO.java @@ -0,0 +1,27 @@ +package com.ics.admin.vo; + +import lombok.Data; + +/** + * 工单附件vo + * created at 2024-8-11 13:46 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class RepairAttachVO { + private Long id; + + private String url; + + public RepairAttachVO() { + + } + + public RepairAttachVO(Long id, String url) { + this.id = id; + this.url = url; + } +} diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairAttachMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairAttachMapper.xml index c24579d..8c6df1e 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairAttachMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairAttachMapper.xml @@ -1,44 +1,58 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - SELECT id, repair_id, node_id, original_filename, filename, url, filesize, ext1, ext2, ext3, delete_flag, create_by, create_time, update_by, update_time, tenant_id, park_id FROM ics_repair_attach + SELECT id, + repair_id, + node_id, + original_filename, + filename, + url, + filesize, + ext1, + ext2, + ext3, + delete_flag, + create_by, + create_time, + update_by, + update_time, + tenant_id, + park_id + FROM ics_repair_attach - - + + @@ -47,72 +61,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" repair_id, node_id, original_filename, - filename, + filename, url, - filesize, + fileSize, ext1, ext2, ext3, - delete_flag, + delete_flag, create_by, create_time, - update_by, - update_time, tenant_id, park_id, + #{repairId}, #{nodeId}, #{originalFilename}, - #{filename}, + #{fileName}, #{url}, - #{filesize}, + #{fileSize}, #{ext1}, #{ext2}, #{ext3}, - #{deleteFlag}, + #{deleteFlag}, #{createBy}, #{createTime}, - #{updateBy}, - #{updateTime}, #{tenantId}, #{parkId}, - - UPDATE ics_repair_attach - - repair_id = #{repairId}, - node_id = #{nodeId}, - original_filename = #{originalFilename}, - filename = #{filename}, - url = #{url}, - filesize = #{filesize}, - ext1 = #{ext1}, - ext2 = #{ext2}, - ext3 = #{ext3}, - delete_flag = #{deleteFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - tenant_id = #{tenantId}, - park_id = #{parkId}, - - WHERE id = #{id} + + UPDATE ics_repair_attach set repair_id= #{repairId} where id in + + #{id} + + + DELETE + FROM ics_repair_attach + WHERE repair_id = #{repairId} + + DELETE FROM ics_repair_attach WHERE id = #{id} - - - DELETE FROM ics_repair_attach where id in - - #{id} - - - \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRelationalMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRelationalMapper.xml index 6d8605d..9d606bb 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRelationalMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRelationalMapper.xml @@ -30,6 +30,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + +