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.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<Map<String, Object>> upkeepStat(@RequestParam String startTime, @RequestParam String endTime) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> map = new HashMap<>();
List<String> xData = new ArrayList<>();
xData.add("报送维修");
xData.add("巡检维修");
map.put("xData", xData);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> map = new HashMap<>();
List<String> xData = new ArrayList<>();
xData.add("报送维修");
xData.add("巡检维修");
map.put("xData", xData);
LambdaQueryWrapper<WorkOrder> orderWrappers = Wrappers.lambdaQuery(WorkOrder.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime));
}
LambdaQueryWrapper<WorkOrder> orderWrappers = Wrappers.lambdaQuery(WorkOrder.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
orderWrappers.between(WorkOrder::getCreateTime, format.parse(startTime), format.parse(endTime));
}
LambdaQueryWrapper<MaintenanceTask> taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime));
}
LambdaQueryWrapper<MaintenanceTask> taskWrappers = Wrappers.lambdaQuery(MaintenanceTask.class);
if (Func.isNotEmpty(startTime) && Func.isNotEmpty(endTime)) {
taskWrappers.between(MaintenanceTask::getCreateTime, format.parse(startTime), format.parse(endTime));
}
List<WorkOrder> workOrders = workOrderService.list(orderWrappers);
List<MaintenanceTask> tasks = maintenanceTaskService.list(taskWrappers);
List<Integer> total = new ArrayList<>();
total.add(workOrders.size());
total.add(tasks.size());
map.put("total", total);
List<Long> 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<Long> 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<WorkOrder> workOrders = workOrderService.list(orderWrappers);
List<MaintenanceTask> tasks = maintenanceTaskService.list(taskWrappers);
List<Integer> total = new ArrayList<>();
total.add(workOrders.size());
total.add(tasks.size());
map.put("total", total);
List<Long> 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<Long> 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<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) {
LocalDate startOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
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<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 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;

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

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

@ -1,6 +1,8 @@
package org.springblade.modules.business.service.impl;
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 lombok.AllArgsConstructor;
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.support.Condition;
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.CollectionUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.business.enums.WorkOrderStatusEnum;
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.WorkOrderApproval;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderAttach;
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderRepairMaterial;
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.service.*;
import org.springblade.modules.system.pojo.entity.Dept;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@ -47,205 +55,207 @@ import static org.springblade.common.enums.DictBizEnum.GOODS_TYPE;
@AllArgsConstructor
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 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<WorkOrderAttach> 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<WorkOrderRepairMaterial> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderRepairMaterial> materials = workOrder.getMaterials();
// 维修材料
if (CollectionUtil.isNotEmpty(materials)) {
// 需要新增的附件
List<WorkOrderRepairMaterial> newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<PieStatVO> 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<WorkOrderAttach> 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<WorkOrderRepairMaterial> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderVO> 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<WorkOrderRepairMaterial> materials = workOrder.getMaterials();
// 维修材料
if (CollectionUtil.isNotEmpty(materials)) {
// 需要新增的附件
List<WorkOrderRepairMaterial> newSave = materials.stream().filter(material -> material.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<PieStatVO> selectDeptCount(String startTime, String endTime) {
return baseMapper.selectDeptCount(startTime, endTime);
}
@Transactional(rollbackFor = Exception.class)
@Override
@ -311,42 +321,81 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId());
}
private void saveFiles(List<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) {
// 保存视频附件
if (CollectionUtils.isNotEmpty(videoAttaches)) {
// 需要新增的附件
List<WorkOrderAttach> newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<WorkOrderAttach> newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) {
// 保存视频附件
if (CollectionUtils.isNotEmpty(videoAttaches)) {
// 需要新增的附件
List<WorkOrderAttach> newSavePic = videoAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<WorkOrderAttach> newSaveVideo = picAttaches.stream().filter(workOrderAttach -> workOrderAttach.getId() == null).collect(Collectors.toList());
// 不删除的附件ids
List<Long> 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<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
@RestController
@AllArgsConstructor
@RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "/dept")
@RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "")
@Tag(name = "部门", description = "部门")
public class DeptController extends BladeController {

Loading…
Cancel
Save