From b5b6d8af251efc229ecfa4a7bc7ccf0557d7fe46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E5=AE=8F=E7=A5=A5?= <14281818+xue-hongxiang@user.noreply.gitee.com> Date: Mon, 16 Dec 2024 15:55:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contraller/WorkBenchesController.java | 86 ++- .../business/mapper/WorkOrderMapper.java | 2 + .../maintenance/MaintenancePersonnel.java | 16 + .../pojo/vo/SearchMaintenancePersonnelVO.java | 14 + .../service/IMaintenanceTaskService.java | 2 + .../business/service/IWorkOrderService.java | 15 - .../impl/MaintenanceTaskServiceImpl.java | 3 + .../service/impl/WorkOrderServiceImpl.java | 511 ++++++++++-------- .../system/controller/DeptController.java | 2 +- 9 files changed, 374 insertions(+), 277 deletions(-) create mode 100644 src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePersonnel.java create mode 100644 src/main/java/org/springblade/modules/business/pojo/vo/SearchMaintenancePersonnelVO.java diff --git a/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java b/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java index 02c9d62..bb6a854 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java @@ -9,11 +9,13 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.Func; import org.springblade.modules.business.pojo.entity.Device; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePersonnel; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; import org.springblade.modules.business.pojo.vo.PieStatVO; +import org.springblade.modules.business.pojo.vo.SearchMaintenancePersonnelVO; import org.springblade.modules.business.service.IDeviceService; import org.springblade.modules.business.service.IMaintenancePlanService; import org.springblade.modules.business.service.IMaintenanceTaskService; @@ -110,39 +112,39 @@ public class WorkBenchesController extends BladeController { */ @GetMapping("/upkeepStat") public R> upkeepStat(@RequestParam String startTime, @RequestParam String endTime) throws ParseException { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - Map map = new HashMap<>(); - List xData = new ArrayList<>(); - xData.add("报送维修"); - xData.add("巡检维修"); - map.put("xData", xData); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Map map = new HashMap<>(); + List xData = new ArrayList<>(); + xData.add("报送维修"); + xData.add("巡检维修"); + map.put("xData", xData); - LambdaQueryWrapper orderWrappers = Wrappers.lambdaQuery(WorkOrder.class); - if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { - orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime)); - } + LambdaQueryWrapper orderWrappers = Wrappers.lambdaQuery(WorkOrder.class); + if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { + orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime)); + } - LambdaQueryWrapper taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class); - if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { - taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime)); - } + LambdaQueryWrapper taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class); + if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { + taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime)); + } - List workOrders = workOrderService.list(orderWrappers); - List tasks = maintenanceTaskService.list(taskWrappers); - List total = new ArrayList<>(); - total.add(workOrders.size()); - total.add(tasks.size()); - map.put("total", total); - List completed = new ArrayList<>(); - completed.add(workOrders.stream().filter(plan -> plan.getStatus() == 8).count()); - completed.add(tasks.stream().filter(plan -> plan.getTaskStatus() == 4).count()); - map.put("completed", completed); - List unCompleted = new ArrayList<>(); - unCompleted.add(workOrders.stream().filter(plan -> plan.getStatus() != 8).count()); - unCompleted.add(tasks.stream().filter(plan -> plan.getTaskStatus() != 4).count()); - map.put("unCompleted", unCompleted); - return R.data(map); - } + List workOrders = workOrderService.list(orderWrappers); + List tasks = maintenanceTaskService.list(taskWrappers); + List total = new ArrayList<>(); + total.add(workOrders.size()); + total.add(tasks.size()); + map.put("total", total); + List completed = new ArrayList<>(); + completed.add(workOrders.stream().filter(plan -> plan.getStatus() == 8).count()); + completed.add(tasks.stream().filter(plan -> plan.getTaskStatus() == 4).count()); + map.put("completed", completed); + List unCompleted = new ArrayList<>(); + unCompleted.add(workOrders.stream().filter(plan -> plan.getStatus() != 8).count()); + unCompleted.add(tasks.stream().filter(plan -> plan.getTaskStatus() != 4).count()); + map.put("unCompleted", unCompleted); + return R.data(map); + } /** * 饼图数据 @@ -296,6 +298,30 @@ public class WorkBenchesController extends BladeController { return R.data(map); } + /** + * 查询维修班组中维修人员的接单数量和满意度 + * + * @param + * @return + */ + @GetMapping("/maintenancePersonnel") + public R> searchMaintenancePersonnel(@RequestParam Long id) { + List list = workOrderService.searchMaintenancePersonnel(id); + Map map = new HashMap<>(); + List xData = new ArrayList<>(); + List count = new ArrayList<>(); + List ratio = new ArrayList<>(); + for (MaintenancePersonnel maintenancePersonnel : list) { + xData.add(maintenancePersonnel.getName()); + count.add(maintenancePersonnel.getCount()); + ratio.add(maintenancePersonnel.getRatio()); + } + map.put("xData", xData); + map.put("repairNum", count); + map.put("percent", ratio); + return R.data(map); + } + public static Date getMonthStartAsDate(LocalDate date) { LocalDate startOfMonth = date.with(TemporalAdjusters.firstDayOfMonth()); return Date.from(startOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()); diff --git a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java index cc18342..5228e02 100644 --- a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java @@ -39,4 +39,6 @@ public interface WorkOrderMapper extends BaseMapper { List exportWorkOrder(@Param("ew") Wrapper queryWrapper); List selectDeptCount(String startTime, String endTime); + + } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePersonnel.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePersonnel.java new file mode 100644 index 0000000..52ee7b5 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePersonnel.java @@ -0,0 +1,16 @@ +package org.springblade.modules.business.pojo.entity.maintenance; + +import lombok.Data; + +@Data +public class MaintenancePersonnel { + + //维修人员名称 + private String name; + + //接单数量 + private Long count; + + //满意度 + private double ratio; +} diff --git a/src/main/java/org/springblade/modules/business/pojo/vo/SearchMaintenancePersonnelVO.java b/src/main/java/org/springblade/modules/business/pojo/vo/SearchMaintenancePersonnelVO.java new file mode 100644 index 0000000..bf560a7 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/vo/SearchMaintenancePersonnelVO.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.pojo.vo; + + +import lombok.Data; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePersonnel; + +import java.util.List; + +@Data +public class SearchMaintenancePersonnelVO { + + private List maintenancePersonnelList; + +} diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java index b230b09..b40a690 100644 --- a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java +++ b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java @@ -3,8 +3,10 @@ package org.springblade.modules.business.service; import cn.hutool.core.io.resource.InputStreamResource; import jakarta.servlet.http.HttpServletResponse; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; +import org.springblade.modules.business.pojo.vo.SearchMaintenancePersonnelVO; import org.springframework.http.ResponseEntity; import java.io.IOException; diff --git a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java index 6b775c3..0bb30a2 100644 --- a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java +++ b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java @@ -73,19 +73,4 @@ public interface IWorkOrderService extends BaseService { List selectDeptCount(String startTime, String endTime); - - /** - * 维修人员提交维修方案 - */ - void repairPlanSubmit(WorkOrder workOrder); - - /** - * 运维主管审批拒绝维修方案 - */ - void repairPlanRefuse(WorkOrder workOrder); - - /** - * 客户确认维修完成 - */ - void repairFinish(WorkOrder workOrder); } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java index fcb4603..8755b7c 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java @@ -10,9 +10,11 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springblade.common.constant.CommonConstant; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; import org.springblade.modules.business.excel.MaintenanceTaskDetailExcel; import org.springblade.modules.business.pojo.vo.MaintenanceTaskDetailVO; import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; +import org.springblade.modules.business.pojo.vo.SearchMaintenancePersonnelVO; import org.springblade.modules.business.service.IMaintenanceTaskService; import org.springblade.modules.business.mapper.MaintenanceTaskMapper; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; @@ -139,4 +141,5 @@ public class MaintenanceTaskServiceImpl extends BaseServiceImpl implements IWorkOrderService { - private final IWorkOrderAttachService workOrderAttachService; + private final IWorkOrderAttachService workOrderAttachService; - private final IWorkOrderRepairMaterialService workOrderRepairMaterialService; + private final IWorkOrderRepairMaterialService workOrderRepairMaterialService; - private final IUserService userService; + private final IUserService userService; private final IWorkOrderApprovalService approvalService; - private final IDeviceService deviceService; - - private final IWorkOrderFlowService flowService; - - @Override - public WorkOrderVO detail(WorkOrder workOrder) { - WorkOrder detail = baseMapper.selectOne(Condition.getQueryWrapper(workOrder)); - WorkOrderVO workOrderVO = Objects.requireNonNull(BeanUtil.copy(detail, WorkOrderVO.class)); - // 工单附件 - List attaches = workOrderAttachService.list(Wrappers.lambdaQuery(WorkOrderAttach.class).eq(WorkOrderAttach::getOrderId, workOrder.getId())); - // 图片 - workOrderVO.setPicAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 1).collect(Collectors.toList())); - // 视频 - workOrderVO.setVideoAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 2).collect(Collectors.toList())); - // 维修材料 - List materials = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); - materials.forEach(material -> material.setBigClassName(DictBizCache.getValue(GOODS_TYPE, material.getBigClassId()))); - workOrderVO.setMaterials(materials); - User user = UserCache.getUser(workOrderVO.getInformant()); - workOrderVO.setInformantName(user != null ? user.getRealName() : ""); - // 维修班组 - workOrderVO.setMaintenanceTeamName(SysCache.getDeptName(workOrderVO.getMaintenanceTeam())); - // 维修人员 - User repairPerson = UserCache.getUser(workOrderVO.getRepairPerson()); - workOrderVO.setRepairPersonName(repairPerson != null ? repairPerson.getRealName() : ""); - // 审批人员 - User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson()); - workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : ""); - return workOrderVO; - } - - @Override - public boolean saveDraft(List workOrders) { - boolean save = false; - for (WorkOrderVO workOrder : workOrders) { - // 草稿状态 - workOrder.setCreateUser(AuthUtil.getUserId()); - workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); - save = this.saveOrUpdate(workOrder); - - // 保存附件 - saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); - } - return save; - } - - /** - * @param workOrders - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - @Synchronized - public boolean saveAndSubmit(List workOrders) { - SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); - Date now = DateUtil.date(); - String todayStr = format.format(now); - - boolean save = false; - int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); - - User user = userService.getById(AuthUtil.getUserId()); - - for (WorkOrderVO workOrder : workOrders) { - // 查询今天已提报数量 - String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; - String code = "WX-" + todayStr + "-" + hz; - - workOrder.setFillingTime(now); - workOrder.setRequirementCode(code); - // 待接单 - workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_SUBMIT.getValue()); - - if (user != null) { - workOrder.setInformant(user.getId()); - workOrder.setInformantPhone(user.getPhone()); - workOrder.setReportUnit(user.getDeptId()); - workOrder.setCreateDept(Long.parseLong(user.getDeptId())); - } - save = this.saveOrUpdate(workOrder); - count++; - - // 保存附件 - saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); - } - return save; - } - - /** - * @param workOrders - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - @Synchronized - public boolean serviceSave(List workOrders) { - SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); - Date now = DateUtil.date(); - String todayStr = format.format(now); - - boolean save = false; - int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); - - for (WorkOrderVO workOrder : workOrders) { - // 查询今天已提报数量 - String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; - String code = "WX-" + todayStr + "-" + hz; - workOrder.setFillingTime(now); - workOrder.setRequirementCode(code); - workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_DRAFT.getValue()); - workOrder.setCreateUser(AuthUtil.getUserId()); - save = this.saveOrUpdate(workOrder); - count++; - - // 保存附件 - saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); - } - return save; - } - - /** - * @param workOrders - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - @Synchronized - public boolean serviceSaveAndSubmit(List workOrders) { - SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); - Date now = DateUtil.date(); - String todayStr = format.format(now); - - boolean save = false; - int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); - - for (WorkOrderVO workOrder : workOrders) { - // 查询今天已提报数量 - String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; - String code = "WX-" + todayStr + "-" + hz; - - workOrder.setFillingTime(now); - workOrder.setRequirementCode(code); - workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_SUBMIT.getValue()); - workOrder.setCreateUser(AuthUtil.getUserId()); - save = this.saveOrUpdate(workOrder); - count++; - - // 保存附件 - saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); - } - return save; - } - - @Override - public boolean evaluateSign(WorkOrderVO workOrder) { - // 保存签名图片 - WorkOrderAttach signAttach = workOrder.getSignAttach(); - signAttach.setOrderId(workOrder.getId()); - signAttach.setAttachType(3); - workOrderAttachService.save(signAttach); - - workOrder.setSignatureUrl(signAttach.getLink()); - return this.updateById(workOrder); - } - - @Override - public boolean updateAttach(WorkOrderVO workOrder) { - // 保存附件 - saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); - List materials = workOrder.getMaterials(); - // 维修材料 - if (CollectionUtil.isNotEmpty(materials)) { - // 需要新增的附件 - List newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList()); - // 不删除的附件ids - List ids = materials.stream().filter(material -> material.getId() != null).map(WorkOrderRepairMaterial::getId).collect(Collectors.toList()); - // 删除 - workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class) - .eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()) - .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderRepairMaterial::getId, ids)); - - newSave.forEach(material -> material.setOrderId(workOrder.getId())); - workOrderRepairMaterialService.saveBatch(newSave); - } - return this.updateById(workOrder); - } - - @Override - public List selectDeptCount(String startTime, String endTime) { - return baseMapper.selectDeptCount(startTime, endTime); - } + private final IDeptService deptService; + + private final IDeviceService deviceService; + + private final IWorkOrderFlowService flowService; + + @Override + public WorkOrderVO detail(WorkOrder workOrder) { + WorkOrder detail = baseMapper.selectOne(Condition.getQueryWrapper(workOrder)); + WorkOrderVO workOrderVO = Objects.requireNonNull(BeanUtil.copy(detail, WorkOrderVO.class)); + // 工单附件 + List attaches = workOrderAttachService.list(Wrappers.lambdaQuery(WorkOrderAttach.class).eq(WorkOrderAttach::getOrderId, workOrder.getId())); + // 图片 + workOrderVO.setPicAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 1).collect(Collectors.toList())); + // 视频 + workOrderVO.setVideoAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 2).collect(Collectors.toList())); + // 维修材料 + List materials = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); + materials.forEach(material -> material.setBigClassName(DictBizCache.getValue(GOODS_TYPE, material.getBigClassId()))); + workOrderVO.setMaterials(materials); + User user = UserCache.getUser(workOrderVO.getInformant()); + workOrderVO.setInformantName(user != null ? user.getRealName() : ""); + // 维修班组 + workOrderVO.setMaintenanceTeamName(SysCache.getDeptName(workOrderVO.getMaintenanceTeam())); + // 维修人员 + User repairPerson = UserCache.getUser(workOrderVO.getRepairPerson()); + workOrderVO.setRepairPersonName(repairPerson != null ? repairPerson.getRealName() : ""); + // 审批人员 + User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson()); + workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : ""); + return workOrderVO; + } + + @Override + public boolean saveDraft(List workOrders) { + boolean save = false; + for (WorkOrderVO workOrder : workOrders) { + // 草稿状态 + workOrder.setCreateUser(AuthUtil.getUserId()); + workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); + save = this.saveOrUpdate(workOrder); + + // 保存附件 + saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); + } + return save; + } + + /** + * @param workOrders + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + @Synchronized + public boolean saveAndSubmit(List workOrders) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date now = DateUtil.date(); + String todayStr = format.format(now); + + boolean save = false; + int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); + + User user = userService.getById(AuthUtil.getUserId()); + + for (WorkOrderVO workOrder : workOrders) { + // 查询今天已提报数量 + String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; + String code = "WX-" + todayStr + "-" + hz; + + workOrder.setFillingTime(now); + workOrder.setRequirementCode(code); + // 待接单 + workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_SUBMIT.getValue()); + + if (user != null) { + workOrder.setInformant(user.getId()); + workOrder.setInformantPhone(user.getPhone()); + workOrder.setReportUnit(user.getDeptId()); + workOrder.setCreateDept(Long.parseLong(user.getDeptId())); + } + save = this.saveOrUpdate(workOrder); + count++; + + // 保存附件 + saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); + } + return save; + } + + /** + * @param workOrders + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + @Synchronized + public boolean serviceSave(List workOrders) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date now = DateUtil.date(); + String todayStr = format.format(now); + + boolean save = false; + int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); + + for (WorkOrderVO workOrder : workOrders) { + // 查询今天已提报数量 + String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; + String code = "WX-" + todayStr + "-" + hz; + workOrder.setFillingTime(now); + workOrder.setRequirementCode(code); + workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_DRAFT.getValue()); + workOrder.setCreateUser(AuthUtil.getUserId()); + save = this.saveOrUpdate(workOrder); + count++; + + // 保存附件 + saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); + } + return save; + } + + /** + * @param workOrders + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + @Synchronized + public boolean serviceSaveAndSubmit(List workOrders) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date now = DateUtil.date(); + String todayStr = format.format(now); + + boolean save = false; + int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now))); + + for (WorkOrderVO workOrder : workOrders) { + // 查询今天已提报数量 + String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; + String code = "WX-" + todayStr + "-" + hz; + + workOrder.setFillingTime(now); + workOrder.setRequirementCode(code); + workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_SUBMIT.getValue()); + workOrder.setCreateUser(AuthUtil.getUserId()); + save = this.saveOrUpdate(workOrder); + count++; + + // 保存附件 + saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); + } + return save; + } + + @Override + public boolean evaluateSign(WorkOrderVO workOrder) { + // 保存签名图片 + WorkOrderAttach signAttach = workOrder.getSignAttach(); + signAttach.setOrderId(workOrder.getId()); + signAttach.setAttachType(3); + workOrderAttachService.save(signAttach); + + workOrder.setSignatureUrl(signAttach.getLink()); + return this.updateById(workOrder); + } + + @Override + public boolean updateAttach(WorkOrderVO workOrder) { + // 保存附件 + saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); + List materials = workOrder.getMaterials(); + // 维修材料 + if (CollectionUtil.isNotEmpty(materials)) { + // 需要新增的附件 + List newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList()); + // 不删除的附件ids + List ids = materials.stream().filter(material -> material.getId() != null).map(WorkOrderRepairMaterial::getId).collect(Collectors.toList()); + // 删除 + workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class) + .eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()) + .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderRepairMaterial::getId, ids)); + + newSave.forEach(material -> material.setOrderId(workOrder.getId())); + workOrderRepairMaterialService.saveBatch(newSave); + } + return this.updateById(workOrder); + } + + @Override + public List selectDeptCount(String startTime, String endTime) { + return baseMapper.selectDeptCount(startTime, endTime); + } @Transactional(rollbackFor = Exception.class) @Override @@ -311,42 +321,81 @@ public class WorkOrderServiceImpl extends BaseServiceImpl videoAttaches, List picAttaches, Long orderId) { - // 保存视频附件 - if (CollectionUtils.isNotEmpty(videoAttaches)) { - // 需要新增的附件 - List newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); - // 不删除的附件ids - List ids = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); - workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) - .eq(WorkOrderAttach::getOrderId, orderId) - .eq(WorkOrderAttach::getAttachType, 2) - .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); - - newSavePic.forEach(videoAttach -> { - videoAttach.setOrderId(orderId); - videoAttach.setAttachType(2); - }); - workOrderAttachService.saveBatch(newSavePic); - } - - // 保存图片附件 - if (CollectionUtils.isNotEmpty(picAttaches)) { - // 需要新增的附件 - List newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); - // 不删除的附件ids - List ids = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); - workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) - .eq(WorkOrderAttach::getOrderId, orderId) - .eq(WorkOrderAttach::getAttachType, 1) - .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); - - newSaveVideo.forEach(picAttache -> { - picAttache.setOrderId(orderId); - picAttache.setAttachType(1); - }); - workOrderAttachService.saveBatch(newSaveVideo); - } - } + private void saveFiles(List videoAttaches, List picAttaches, Long orderId) { + // 保存视频附件 + if (CollectionUtils.isNotEmpty(videoAttaches)) { + // 需要新增的附件 + List newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); + // 不删除的附件ids + List ids = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); + workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) + .eq(WorkOrderAttach::getOrderId, orderId) + .eq(WorkOrderAttach::getAttachType, 2) + .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); + + newSavePic.forEach(videoAttach -> { + videoAttach.setOrderId(orderId); + videoAttach.setAttachType(2); + }); + workOrderAttachService.saveBatch(newSavePic); + } + + // 保存图片附件 + if (CollectionUtils.isNotEmpty(picAttaches)) { + // 需要新增的附件 + List newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); + // 不删除的附件ids + List ids = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); + workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) + .eq(WorkOrderAttach::getOrderId, orderId) + .eq(WorkOrderAttach::getAttachType, 1) + .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); + + newSaveVideo.forEach(picAttache -> { + picAttache.setOrderId(orderId); + picAttache.setAttachType(1); + }); + workOrderAttachService.saveBatch(newSaveVideo); + } + } + + @Override + public List searchMaintenancePersonnel(Long id) { + User maintenanceSupervisor = userService.getById(id); + String deptId = maintenanceSupervisor.getDeptId(); + List deptChild = deptService.getDeptChild(Long.parseLong(deptId)); + Dept requiredDept = new Dept(); + for (Dept dept : deptChild) { + if (dept.getDeptCategory() == 4) { + requiredDept = dept; + break; + } + } + List maintenancePersonnelList = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getDeptId, requiredDept.getId())); + List list = new ArrayList<>(); + for (User user : maintenancePersonnelList) { + MaintenancePersonnel maintenancePersonnel = new MaintenancePersonnel(); + maintenancePersonnel.setName(user.getName()); + Long count = this.count(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getRepairPerson, user.getId())); + maintenancePersonnel.setCount(count); + List workOrderList = this.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getRepairPerson, user.getId())); + int flag = 0; + for (WorkOrder workOrder : workOrderList) { + if (workOrder.getIsOkSecure() == 1) { + flag++; + } + if (workOrder.getIsOkValidity() == 1) { + flag++; + } + if (workOrder.getIsOkQuality() == 1) { + flag++; + } + } + Integer ratio = flag * 100 / (workOrderList.size() * 3); + maintenancePersonnel.setRatio(ratio); + list.add(maintenancePersonnel); + } + return list; + } } diff --git a/src/main/java/org/springblade/modules/system/controller/DeptController.java b/src/main/java/org/springblade/modules/system/controller/DeptController.java index f0c10c1..ddb2abb 100644 --- a/src/main/java/org/springblade/modules/system/controller/DeptController.java +++ b/src/main/java/org/springblade/modules/system/controller/DeptController.java @@ -71,7 +71,7 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; @NonDS @RestController @AllArgsConstructor -@RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "/dept") +@RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "") @Tag(name = "部门", description = "部门") public class DeptController extends BladeController { From 02dff3fbb0c5d532c4d10e2b565d4176cd4d7256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E5=AE=8F=E7=A5=A5?= <14281818+xue-hongxiang@user.noreply.gitee.com> Date: Mon, 16 Dec 2024 16:15:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/service/IWorkOrderService.java | 119 ++++++++++-------- 1 file changed, 64 insertions(+), 55 deletions(-) diff --git a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java index 0bb30a2..c299d69 100644 --- a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java +++ b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java @@ -1,6 +1,7 @@ package org.springblade.modules.business.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePersonnel; import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; import org.springblade.modules.business.pojo.vo.PieStatVO; import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO; @@ -15,62 +16,70 @@ import java.util.List; */ public interface IWorkOrderService extends BaseService { - /** - * 查询工单明细 - * - * @param workOrder - * @return - */ - WorkOrderVO detail(WorkOrder workOrder); - - /** - * 保存工单为草稿状态 - * - * @param workOrder - * @return - */ - boolean saveDraft(List workOrder); - - /** - * 保存并提交工单 - * - * @param workOrder - * @return - */ - boolean saveAndSubmit(List workOrder); - - /** - * 客服保存工单 - * - * @param workOrder - * @return - */ - boolean serviceSave(List workOrder); - - /** - * 客服保存并提交工单 - * - * @param workOrder - * @return - */ - boolean serviceSaveAndSubmit(List workOrder); - - /** - * 工单签名 - * - * @param workOrder - * @return - */ - boolean evaluateSign(WorkOrderVO workOrder); - - /** - * 更新工单信息 - * - * @param workOrder - * @return - */ - boolean updateAttach(WorkOrderVO workOrder); + /** + * 查询工单明细 + * + * @param workOrder + * @return + */ + WorkOrderVO detail(WorkOrder workOrder); + + /** + * 保存工单为草稿状态 + * + * @param workOrder + * @return + */ + boolean saveDraft(List workOrder); + + /** + * 保存并提交工单 + * + * @param workOrder + * @return + */ + boolean saveAndSubmit(List workOrder); + + /** + * 客服保存工单 + * + * @param workOrder + * @return + */ + boolean serviceSave(List workOrder); + + /** + * 客服保存并提交工单 + * + * @param workOrder + * @return + */ + boolean serviceSaveAndSubmit(List workOrder); + + /** + * 工单签名 + * + * @param workOrder + * @return + */ + boolean evaluateSign(WorkOrderVO workOrder); + + /** + * 更新工单信息 + * + * @param workOrder + * @return + */ + boolean updateAttach(WorkOrderVO workOrder); List selectDeptCount(String startTime, String endTime); + + public List searchMaintenancePersonnel(Long id); + + public void repairFinish(WorkOrder workOrder); + + public void repairPlanRefuse(WorkOrder workOrder); + + public void repairPlanSubmit(WorkOrder workOrder); }