package com.repair.controller; import com.repair.api.RepairLeaveMessageControllerAPI; import com.repair.common.utils.paramUtils; import com.repair.model.enumModel.eRecordStatu; import com.repair.model.pojo.RepairLeaveMessage; import com.repair.model.pojo.RepairRecord; import com.repair.model.pojo.RepairSystemMessages; import com.repair.model.pojo.RepairTrackRecord; import com.repair.model.request.repairLeaveMessageRequest; import com.repair.model.result.CommonResult; import com.repair.model.result.PageUtils; import com.repair.model.vo.RepairLogisticsVo; import com.repair.services.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** *

* 前端控制器 *

* * @author ceshi * @since 2023-07-20 */ @RestController public class RepairLeaveMessageController implements RepairLeaveMessageControllerAPI { @Autowired private RepairUserService repairUserService; @Autowired private RepairRecordService repairRecordService; @Autowired private RepairTrackRecordService repairTrackRecordService; @Autowired private RepairLeaveMessageService repairLeaveMessageService; @Autowired private RepairSystemMessagesService repairSystemMessagesService; @Override public CommonResult InsertrepairLeaveMessage(RepairLeaveMessage rc, BindingResult bindingResult) { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } int result = repairLeaveMessageService.insertRepairLeaveMessage(rc); return result > 0 ? CommonResult.ok("添加成功") : CommonResult.fail("添加失败"); } @Override public CommonResult updaterepairLeaveMessageById(RepairLeaveMessage rc, BindingResult bindingResult) { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } int result = repairLeaveMessageService.updateRepairLeaveMessage(rc); return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败"); } @Override public CommonResult queryPagerepairLeaveMessages(int currentPage, int pageCount, String name) { PageUtils result = repairLeaveMessageService.queryPageRepairLeaveMessages(currentPage, pageCount, name); return CommonResult.ok(result); } @Override public CommonResult deleterepairLeaveMessageById(int id) { RepairLeaveMessage data = repairLeaveMessageService.getRepairById(id); if (data == null) { return CommonResult.fail("当前数据不存在,删除失败!"); } int result = repairLeaveMessageService.deleteRepairLeaveMessageById(id); return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败"); } @Override @Transactional(rollbackFor = {Exception.class}) public CommonResult transferToLogistics(repairLeaveMessageRequest rlmr, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } //只有待确认能转后勤 RepairRecord rr = repairRecordService.getRepairById(rlmr.getRecordId()); if (rr == null) { return CommonResult.fail("报修单不存在,转后勤失败"); } if (rr.getMaintenanceState() != eRecordStatu.ToConfirmed.getValue()) { return CommonResult.fail("待确认的报修单才能进行转后勤操作"); } /** * 获取报修工单对应校区的所有后勤人员 */ List users = repairUserService.queryLogisticsList(rlmr.getRecordId()); if (users.size() <= 0) { return CommonResult.fail("该报修区域缺少后勤人员"); } //有可能有多个后勤 List datas = new ArrayList<>(); List messages = new ArrayList<>(); for (RepairLogisticsVo u : users) { RepairLeaveMessage data = new RepairLeaveMessage(); data.setSenderId(rlmr.getUserId()); data.setRecipientId(u.getId()); data.setContent(rlmr.getContent()); data.setRecordId(rlmr.getRecordId()); datas.add(data); RepairSystemMessages rsm = new RepairSystemMessages(); rsm.setIsRead(0); rsm.setRecordId(rlmr.getUserId()); rsm.setRecipientId(u.getId()); rsm.setContent("用户已提交留言,请尽快处理!"); messages.add(rsm); } try { boolean result = repairLeaveMessageService.inserBatchLeaveMessage(datas); if (!result) { throw new Exception("转后勤失败!"); } //将工单状态更改为待处理 rr.setId(rlmr.getRecordId()); rr.setMaintenanceState(eRecordStatu.ToLogistics.getValue()); int updateR = repairRecordService.updateRepairRecord(rr); if (updateR <= 0) { throw new Exception("转后勤失败!"); } boolean insertRsm = repairSystemMessagesService.inserBatchSystemMessage(messages); if (!insertRsm) { throw new Exception("报修单转后勤失败!"); } //添加跟踪记录 RepairTrackRecord rtr = new RepairTrackRecord(); rtr.setRecordId(rlmr.getRecordId()); rtr.setMaintenanceState(eRecordStatu.ToLogistics.getValue()); rtr.setContent("用户转后勤:" + rlmr.getContent()); rtr.setUserId(rlmr.getUserId()); rtr.setUserZzstr("用户"); int insertRtr = repairTrackRecordService.insertRepairTrackRecord(rtr); if (insertRtr <= 0) { throw new Exception("转后勤失败!"); } } catch (Exception e) { throw new Exception("转后勤失败!"); } return CommonResult.ok("转后勤成功"); } }