Merge remote-tracking branch 'origin/master'

master
liuqingkun 1 year ago
commit 203646760e
  1. 86
      src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java
  2. 2
      src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java
  3. 16
      src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePersonnel.java
  4. 14
      src/main/java/org/springblade/modules/business/pojo/vo/SearchMaintenancePersonnelVO.java
  5. 2
      src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java
  6. 128
      src/main/java/org/springblade/modules/business/service/IWorkOrderService.java
  7. 3
      src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java
  8. 511
      src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java
  9. 2
      src/main/java/org/springblade/modules/system/controller/DeptController.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.CollectionUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.pojo.entity.Device; 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.MaintenancePlan;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; import org.springblade.modules.business.pojo.entity.workorder.WorkOrder;
import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO;
import org.springblade.modules.business.pojo.vo.PieStatVO; 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.IDeviceService;
import org.springblade.modules.business.service.IMaintenancePlanService; import org.springblade.modules.business.service.IMaintenancePlanService;
import org.springblade.modules.business.service.IMaintenanceTaskService; import org.springblade.modules.business.service.IMaintenanceTaskService;
@ -110,39 +112,39 @@ public class WorkBenchesController extends BladeController {
*/ */
@GetMapping("/upkeepStat") @GetMapping("/upkeepStat")
public R<Map<String, Object>> upkeepStat(@RequestParam String startTime, @RequestParam String endTime) throws ParseException { public R<Map<String, Object>> upkeepStat(@RequestParam String startTime, @RequestParam String endTime) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
List<String> xData = new ArrayList<>(); List<String> xData = new ArrayList<>();
xData.add("报送维修"); xData.add("报送维修");
xData.add("巡检维修"); xData.add("巡检维修");
map.put("xData", xData); map.put("xData", xData);
LambdaQueryWrapper<WorkOrder> orderWrappers = Wrappers.lambdaQuery(WorkOrder.class); LambdaQueryWrapper<WorkOrder> orderWrappers = Wrappers.lambdaQuery(WorkOrder.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime)); orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime));
} }
LambdaQueryWrapper<MaintenanceTask> taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class); LambdaQueryWrapper<MaintenanceTask> taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) { if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime)); taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime));
} }
List<WorkOrder> workOrders = workOrderService.list(orderWrappers); List<WorkOrder> workOrders = workOrderService.list(orderWrappers);
List<MaintenanceTask> tasks = maintenanceTaskService.list(taskWrappers); List<MaintenanceTask> tasks = maintenanceTaskService.list(taskWrappers);
List<Integer> total = new ArrayList<>(); List<Integer> total = new ArrayList<>();
total.add(workOrders.size()); total.add(workOrders.size());
total.add(tasks.size()); total.add(tasks.size());
map.put("total", total); map.put("total", total);
List<Long> completed = new ArrayList<>(); List<Long> completed = new ArrayList<>();
completed.add(workOrders.stream().filter(plan -> plan.getStatus() == 8).count()); completed.add(workOrders.stream().filter(plan -> plan.getStatus() == 8).count());
completed.add(tasks.stream().filter(plan -> plan.getTaskStatus() == 4).count()); completed.add(tasks.stream().filter(plan -> plan.getTaskStatus() == 4).count());
map.put("completed", completed); map.put("completed", completed);
List<Long> unCompleted = new ArrayList<>(); List<Long> unCompleted = new ArrayList<>();
unCompleted.add(workOrders.stream().filter(plan -> plan.getStatus() != 8).count()); unCompleted.add(workOrders.stream().filter(plan -> plan.getStatus() != 8).count());
unCompleted.add(tasks.stream().filter(plan -> plan.getTaskStatus() != 4).count()); unCompleted.add(tasks.stream().filter(plan -> plan.getTaskStatus() != 4).count());
map.put("unCompleted", unCompleted); map.put("unCompleted", unCompleted);
return R.data(map); return R.data(map);
} }
/** /**
* 饼图数据 * 饼图数据
@ -296,6 +298,30 @@ public class WorkBenchesController extends BladeController {
return R.data(map); return R.data(map);
} }
/**
* 查询维修班组中维修人员的接单数量和满意度
*
* @param
* @return
*/
@GetMapping("/maintenancePersonnel")
public R<Map<String, Object>> searchMaintenancePersonnel(@RequestParam Long id) {
List<MaintenancePersonnel> list = workOrderService.searchMaintenancePersonnel(id);
Map<String, Object> map = new HashMap<>();
List<String> xData = new ArrayList<>();
List<Long> count = new ArrayList<>();
List<Double> 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) { public static Date getMonthStartAsDate(LocalDate date) {
LocalDate startOfMonth = date.with(TemporalAdjusters.firstDayOfMonth()); LocalDate startOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
return Date.from(startOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()); return Date.from(startOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());

@ -39,4 +39,6 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
List<WorkOrderExcel> exportWorkOrder(@Param("ew") Wrapper<WorkOrder> queryWrapper); List<WorkOrderExcel> exportWorkOrder(@Param("ew") Wrapper<WorkOrder> queryWrapper);
List<PieStatVO> selectDeptCount(String startTime, String endTime); List<PieStatVO> selectDeptCount(String startTime, String endTime);
} }

@ -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;
}

@ -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<MaintenancePersonnel> maintenancePersonnelList;
}

@ -3,8 +3,10 @@ package org.springblade.modules.business.service;
import cn.hutool.core.io.resource.InputStreamResource; import cn.hutool.core.io.resource.InputStreamResource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.springblade.core.mp.base.BaseService; 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.entity.maintenance.MaintenanceTask;
import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO;
import org.springblade.modules.business.pojo.vo.SearchMaintenancePersonnelVO;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import java.io.IOException; import java.io.IOException;

@ -1,6 +1,7 @@
package org.springblade.modules.business.service; package org.springblade.modules.business.service;
import org.springblade.core.mp.base.BaseService; 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.entity.workorder.WorkOrder;
import org.springblade.modules.business.pojo.vo.PieStatVO; import org.springblade.modules.business.pojo.vo.PieStatVO;
import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO; import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO;
@ -15,77 +16,70 @@ import java.util.List;
*/ */
public interface IWorkOrderService extends BaseService<WorkOrder> { public interface IWorkOrderService extends BaseService<WorkOrder> {
/** /**
* 查询工单明细 * 查询工单明细
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
WorkOrderVO detail(WorkOrder workOrder); WorkOrderVO detail(WorkOrder workOrder);
/** /**
* 保存工单为草稿状态 * 保存工单为草稿状态
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean saveDraft(List<WorkOrderVO> workOrder); boolean saveDraft(List<WorkOrderVO> workOrder);
/** /**
* 保存并提交工单 * 保存并提交工单
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean saveAndSubmit(List<WorkOrderVO> workOrder); boolean saveAndSubmit(List<WorkOrderVO> workOrder);
/** /**
* 客服保存工单 * 客服保存工单
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean serviceSave(List<WorkOrderVO> workOrder); boolean serviceSave(List<WorkOrderVO> workOrder);
/** /**
* 客服保存并提交工单 * 客服保存并提交工单
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean serviceSaveAndSubmit(List<WorkOrderVO> workOrder); boolean serviceSaveAndSubmit(List<WorkOrderVO> workOrder);
/** /**
* 工单签名 * 工单签名
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean evaluateSign(WorkOrderVO workOrder); boolean evaluateSign(WorkOrderVO workOrder);
/** /**
* 更新工单信息 * 更新工单信息
* *
* @param workOrder * @param workOrder
* @return * @return
*/ */
boolean updateAttach(WorkOrderVO workOrder); boolean updateAttach(WorkOrderVO workOrder);
List<PieStatVO> selectDeptCount(String startTime, String endTime); List<PieStatVO> selectDeptCount(String startTime, String endTime);
/** public List<MaintenancePersonnel> searchMaintenancePersonnel(Long id);
* 维修人员提交维修方案
*/ public void repairFinish(WorkOrder workOrder);
void repairPlanSubmit(WorkOrder workOrder);
/** public void repairPlanRefuse(WorkOrder workOrder);
* 运维主管审批拒绝维修方案
*/
void repairPlanRefuse(WorkOrder workOrder);
/** public void repairPlanSubmit(WorkOrder workOrder);
* 客户确认维修完成
*/
void repairFinish(WorkOrder workOrder);
} }

@ -10,9 +10,11 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl; 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.excel.MaintenanceTaskDetailExcel;
import org.springblade.modules.business.pojo.vo.MaintenanceTaskDetailVO; import org.springblade.modules.business.pojo.vo.MaintenanceTaskDetailVO;
import org.springblade.modules.business.pojo.vo.MaintenanceTaskVO; 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.service.IMaintenanceTaskService;
import org.springblade.modules.business.mapper.MaintenanceTaskMapper; import org.springblade.modules.business.mapper.MaintenanceTaskMapper;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask;
@ -139,4 +141,5 @@ public class MaintenanceTaskServiceImpl extends BaseServiceImpl<MaintenanceTaskM
} }
} }

@ -1,6 +1,8 @@
package org.springblade.modules.business.service.impl; package org.springblade.modules.business.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Synchronized; import lombok.Synchronized;
@ -12,24 +14,30 @@ import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.business.enums.WorkOrderStatusEnum; import org.springblade.modules.business.enums.WorkOrderStatusEnum;
import org.springblade.modules.business.mapper.WorkOrderMapper; import org.springblade.modules.business.mapper.WorkOrderMapper;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePersonnel;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; import org.springblade.modules.business.pojo.entity.workorder.WorkOrder;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval; import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderAttach; import org.springblade.modules.business.pojo.entity.workorder.WorkOrderAttach;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderRepairMaterial; import org.springblade.modules.business.pojo.entity.workorder.WorkOrderRepairMaterial;
import org.springblade.modules.business.pojo.vo.PieStatVO; import org.springblade.modules.business.pojo.vo.PieStatVO;
import org.springblade.modules.business.pojo.vo.SearchMaintenancePersonnelVO;
import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO; import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO;
import org.springblade.modules.business.service.*; import org.springblade.modules.business.service.*;
import org.springblade.modules.system.pojo.entity.Dept;
import org.springblade.modules.system.pojo.entity.User; import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.service.IUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -47,205 +55,207 @@ import static org.springblade.common.enums.DictBizEnum.GOODS_TYPE;
@AllArgsConstructor @AllArgsConstructor
public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkOrder> implements IWorkOrderService { public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkOrder> 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 IWorkOrderApprovalService approvalService;
private final IDeviceService deviceService; private final IDeptService deptService;
private final IWorkOrderFlowService flowService; private final IDeviceService deviceService;
@Override private final IWorkOrderFlowService flowService;
public WorkOrderVO detail(WorkOrder workOrder) {
WorkOrder detail = baseMapper.selectOne(Condition.getQueryWrapper(workOrder)); @Override
WorkOrderVO workOrderVO = Objects.requireNonNull(BeanUtil.copy(detail, WorkOrderVO.class)); public WorkOrderVO detail(WorkOrder workOrder) {
// 工单附件 WorkOrder detail = baseMapper.selectOne(Condition.getQueryWrapper(workOrder));
List<WorkOrderAttach> attaches = workOrderAttachService.list(Wrappers.lambdaQuery(WorkOrderAttach.class).eq(WorkOrderAttach::getOrderId, workOrder.getId())); WorkOrderVO workOrderVO = Objects.requireNonNull(BeanUtil.copy(detail, WorkOrderVO.class));
// 图片 // 工单附件
workOrderVO.setPicAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 1).collect(Collectors.toList())); List<WorkOrderAttach> attaches = workOrderAttachService.list(Wrappers.lambdaQuery(WorkOrderAttach.class).eq(WorkOrderAttach::getOrderId, workOrder.getId()));
// 视频 // 图片
workOrderVO.setVideoAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 2).collect(Collectors.toList())); workOrderVO.setPicAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 1).collect(Collectors.toList()));
// 维修材料 // 视频
List<WorkOrderRepairMaterial> materials = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); workOrderVO.setVideoAttaches(attaches.stream().filter(workOrderAttach -> workOrderAttach.getAttachType() == 2).collect(Collectors.toList()));
materials.forEach(material -> material.setBigClassName(DictBizCache.getValue(GOODS_TYPE, material.getBigClassId()))); // 维修材料
workOrderVO.setMaterials(materials); List<WorkOrderRepairMaterial> materials = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()));
User user = UserCache.getUser(workOrderVO.getInformant()); materials.forEach(material -> material.setBigClassName(DictBizCache.getValue(GOODS_TYPE, material.getBigClassId())));
workOrderVO.setInformantName(user != null ? user.getRealName() : ""); workOrderVO.setMaterials(materials);
// 维修班组 User user = UserCache.getUser(workOrderVO.getInformant());
workOrderVO.setMaintenanceTeamName(SysCache.getDeptName(workOrderVO.getMaintenanceTeam())); workOrderVO.setInformantName(user != null ? user.getRealName() : "");
// 维修人员 // 维修班组
User repairPerson = UserCache.getUser(workOrderVO.getRepairPerson()); workOrderVO.setMaintenanceTeamName(SysCache.getDeptName(workOrderVO.getMaintenanceTeam()));
workOrderVO.setRepairPersonName(repairPerson != null ? repairPerson.getRealName() : ""); // 维修人员
// 审批人员 User repairPerson = UserCache.getUser(workOrderVO.getRepairPerson());
User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson()); workOrderVO.setRepairPersonName(repairPerson != null ? repairPerson.getRealName() : "");
workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : ""); // 审批人员
return workOrderVO; User approvePerson = UserCache.getUser(workOrderVO.getApprovePerson());
} workOrderVO.setApprovePersonName(approvePerson != null ? approvePerson.getRealName() : "");
return workOrderVO;
@Override }
public boolean saveDraft(List<WorkOrderVO> workOrders) {
boolean save = false; @Override
for (WorkOrderVO workOrder : workOrders) { public boolean saveDraft(List<WorkOrderVO> workOrders) {
// 草稿状态 boolean save = false;
workOrder.setCreateUser(AuthUtil.getUserId()); for (WorkOrderVO workOrder : workOrders) {
workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); // 草稿状态
save = this.saveOrUpdate(workOrder); workOrder.setCreateUser(AuthUtil.getUserId());
workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue());
// 保存附件 save = this.saveOrUpdate(workOrder);
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} // 保存附件
return save; saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} }
return save;
/** }
* @param workOrders
* @return /**
*/ * @param workOrders
@Override * @return
@Transactional(rollbackFor = Exception.class) */
@Synchronized @Override
public boolean saveAndSubmit(List<WorkOrderVO> workOrders) { @Transactional(rollbackFor = Exception.class)
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); @Synchronized
Date now = DateUtil.date(); public boolean saveAndSubmit(List<WorkOrderVO> workOrders) {
String todayStr = format.format(now); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date now = DateUtil.date();
boolean save = false; String todayStr = format.format(now);
int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
boolean save = false;
User user = userService.getById(AuthUtil.getUserId()); int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
for (WorkOrderVO workOrder : workOrders) { User user = userService.getById(AuthUtil.getUserId());
// 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; for (WorkOrderVO workOrder : workOrders) {
String code = "WX-" + todayStr + "-" + hz; // 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + "";
workOrder.setFillingTime(now); String code = "WX-" + todayStr + "-" + hz;
workOrder.setRequirementCode(code);
// 待接单 workOrder.setFillingTime(now);
workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_SUBMIT.getValue()); workOrder.setRequirementCode(code);
// 待接单
if (user != null) { workOrder.setStatus(WorkOrderStatusEnum.KH_ORDER_SUBMIT.getValue());
workOrder.setInformant(user.getId());
workOrder.setInformantPhone(user.getPhone()); if (user != null) {
workOrder.setReportUnit(user.getDeptId()); workOrder.setInformant(user.getId());
workOrder.setCreateDept(Long.parseLong(user.getDeptId())); workOrder.setInformantPhone(user.getPhone());
} workOrder.setReportUnit(user.getDeptId());
save = this.saveOrUpdate(workOrder); workOrder.setCreateDept(Long.parseLong(user.getDeptId()));
count++; }
save = this.saveOrUpdate(workOrder);
// 保存附件 count++;
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} // 保存附件
return save; saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} }
return save;
/** }
* @param workOrders
* @return /**
*/ * @param workOrders
@Override * @return
@Transactional(rollbackFor = Exception.class) */
@Synchronized @Override
public boolean serviceSave(List<WorkOrderVO> workOrders) { @Transactional(rollbackFor = Exception.class)
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); @Synchronized
Date now = DateUtil.date(); public boolean serviceSave(List<WorkOrderVO> workOrders) {
String todayStr = format.format(now); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date now = DateUtil.date();
boolean save = false; String todayStr = format.format(now);
int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
boolean save = false;
for (WorkOrderVO workOrder : workOrders) { int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
// 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; for (WorkOrderVO workOrder : workOrders) {
String code = "WX-" + todayStr + "-" + hz; // 查询今天已提报数量
workOrder.setFillingTime(now); String hz = count < 9 ? "0" + (count + 1) : count + 1 + "";
workOrder.setRequirementCode(code); String code = "WX-" + todayStr + "-" + hz;
workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_DRAFT.getValue()); workOrder.setFillingTime(now);
workOrder.setCreateUser(AuthUtil.getUserId()); workOrder.setRequirementCode(code);
save = this.saveOrUpdate(workOrder); workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_DRAFT.getValue());
count++; workOrder.setCreateUser(AuthUtil.getUserId());
save = this.saveOrUpdate(workOrder);
// 保存附件 count++;
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} // 保存附件
return save; saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} }
return save;
/** }
* @param workOrders
* @return /**
*/ * @param workOrders
@Override * @return
@Transactional(rollbackFor = Exception.class) */
@Synchronized @Override
public boolean serviceSaveAndSubmit(List<WorkOrderVO> workOrders) { @Transactional(rollbackFor = Exception.class)
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); @Synchronized
Date now = DateUtil.date(); public boolean serviceSaveAndSubmit(List<WorkOrderVO> workOrders) {
String todayStr = format.format(now); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date now = DateUtil.date();
boolean save = false; String todayStr = format.format(now);
int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
boolean save = false;
for (WorkOrderVO workOrder : workOrders) { int count = (int) this.count(Wrappers.lambdaQuery(WorkOrder.class).between(WorkOrder::getCreateTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)));
// 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; for (WorkOrderVO workOrder : workOrders) {
String code = "WX-" + todayStr + "-" + hz; // 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + "";
workOrder.setFillingTime(now); String code = "WX-" + todayStr + "-" + hz;
workOrder.setRequirementCode(code);
workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_SUBMIT.getValue()); workOrder.setFillingTime(now);
workOrder.setCreateUser(AuthUtil.getUserId()); workOrder.setRequirementCode(code);
save = this.saveOrUpdate(workOrder); workOrder.setStatus(WorkOrderStatusEnum.KF_ORDER_SUBMIT.getValue());
count++; workOrder.setCreateUser(AuthUtil.getUserId());
save = this.saveOrUpdate(workOrder);
// 保存附件 count++;
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} // 保存附件
return save; saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
} }
return save;
@Override }
public boolean evaluateSign(WorkOrderVO workOrder) {
// 保存签名图片 @Override
WorkOrderAttach signAttach = workOrder.getSignAttach(); public boolean evaluateSign(WorkOrderVO workOrder) {
signAttach.setOrderId(workOrder.getId()); // 保存签名图片
signAttach.setAttachType(3); WorkOrderAttach signAttach = workOrder.getSignAttach();
workOrderAttachService.save(signAttach); signAttach.setOrderId(workOrder.getId());
signAttach.setAttachType(3);
workOrder.setSignatureUrl(signAttach.getLink()); workOrderAttachService.save(signAttach);
return this.updateById(workOrder);
} workOrder.setSignatureUrl(signAttach.getLink());
return this.updateById(workOrder);
@Override }
public boolean updateAttach(WorkOrderVO workOrder) {
// 保存附件 @Override
saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId()); public boolean updateAttach(WorkOrderVO workOrder) {
List<WorkOrderRepairMaterial> materials = workOrder.getMaterials(); // 保存附件
// 维修材料 saveFiles(workOrder.getVideoAttaches(), workOrder.getPicAttaches(), workOrder.getId());
if (CollectionUtil.isNotEmpty(materials)) { List<WorkOrderRepairMaterial> materials = workOrder.getMaterials();
// 需要新增的附件 // 维修材料
List<WorkOrderRepairMaterial> newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(materials)) {
// 不删除的附件ids // 需要新增的附件
List<Long> ids = materials.stream().filter(material -> material.getId() != null).map(WorkOrderRepairMaterial::getId).collect(Collectors.toList()); List<WorkOrderRepairMaterial> newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList());
// 删除 // 不删除的附件ids
workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class) List<Long> ids = materials.stream().filter(material -> material.getId() != null).map(WorkOrderRepairMaterial::getId).collect(Collectors.toList());
.eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId()) // 删除
.notIn(CollectionUtils.isNotEmpty(ids), WorkOrderRepairMaterial::getId, ids)); workOrderRepairMaterialService.remove(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class)
.eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())
newSave.forEach(material -> material.setOrderId(workOrder.getId())); .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderRepairMaterial::getId, ids));
workOrderRepairMaterialService.saveBatch(newSave);
} newSave.forEach(material -> material.setOrderId(workOrder.getId()));
return this.updateById(workOrder); workOrderRepairMaterialService.saveBatch(newSave);
} }
return this.updateById(workOrder);
@Override }
public List<PieStatVO> selectDeptCount(String startTime, String endTime) {
return baseMapper.selectDeptCount(startTime, endTime); @Override
} public List<PieStatVO> selectDeptCount(String startTime, String endTime) {
return baseMapper.selectDeptCount(startTime, endTime);
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
@ -311,42 +321,81 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId()); deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId());
} }
private void saveFiles(List<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) { private void saveFiles(List<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) {
// 保存视频附件 // 保存视频附件
if (CollectionUtils.isNotEmpty(videoAttaches)) { if (CollectionUtils.isNotEmpty(videoAttaches)) {
// 需要新增的附件 // 需要新增的附件
List<WorkOrderAttach> newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); List<WorkOrderAttach> newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids // 不删除的附件ids
List<Long> ids = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); List<Long> ids = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList());
workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class)
.eq(WorkOrderAttach::getOrderId, orderId) .eq(WorkOrderAttach::getOrderId, orderId)
.eq(WorkOrderAttach::getAttachType, 2) .eq(WorkOrderAttach::getAttachType, 2)
.notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids));
newSavePic.forEach(videoAttach -> { newSavePic.forEach(videoAttach -> {
videoAttach.setOrderId(orderId); videoAttach.setOrderId(orderId);
videoAttach.setAttachType(2); videoAttach.setAttachType(2);
}); });
workOrderAttachService.saveBatch(newSavePic); workOrderAttachService.saveBatch(newSavePic);
} }
// 保存图片附件 // 保存图片附件
if (CollectionUtils.isNotEmpty(picAttaches)) { if (CollectionUtils.isNotEmpty(picAttaches)) {
// 需要新增的附件 // 需要新增的附件
List<WorkOrderAttach> newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList()); List<WorkOrderAttach> newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids // 不删除的附件ids
List<Long> ids = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList()); List<Long> ids = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() != null).map(WorkOrderAttach::getId).collect(Collectors.toList());
workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class) workOrderAttachService.remove(Wrappers.lambdaQuery(WorkOrderAttach.class)
.eq(WorkOrderAttach::getOrderId, orderId) .eq(WorkOrderAttach::getOrderId, orderId)
.eq(WorkOrderAttach::getAttachType, 1) .eq(WorkOrderAttach::getAttachType, 1)
.notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids)); .notIn(CollectionUtils.isNotEmpty(ids), WorkOrderAttach::getId, ids));
newSaveVideo.forEach(picAttache -> { newSaveVideo.forEach(picAttache -> {
picAttache.setOrderId(orderId); picAttache.setOrderId(orderId);
picAttache.setAttachType(1); picAttache.setAttachType(1);
}); });
workOrderAttachService.saveBatch(newSaveVideo); workOrderAttachService.saveBatch(newSaveVideo);
} }
} }
@Override
public List<MaintenancePersonnel> searchMaintenancePersonnel(Long id) {
User maintenanceSupervisor = userService.getById(id);
String deptId = maintenanceSupervisor.getDeptId();
List<Dept> deptChild = deptService.getDeptChild(Long.parseLong(deptId));
Dept requiredDept = new Dept();
for (Dept dept : deptChild) {
if (dept.getDeptCategory() == 4) {
requiredDept = dept;
break;
}
}
List<User> maintenancePersonnelList = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getDeptId, requiredDept.getId()));
List<MaintenancePersonnel> 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<WorkOrder> 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;
}
} }

@ -71,7 +71,7 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@NonDS @NonDS
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "/dept") @RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "")
@Tag(name = "部门", description = "部门") @Tag(name = "部门", description = "部门")
public class DeptController extends BladeController { public class DeptController extends BladeController {

Loading…
Cancel
Save