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