【admin&front】 新增&优化 # 1、优化维修单报表、正常维修报表 2、优化后台管理和小程序详情取消的数据 3、修复客户联系人编辑报错 4、优化设备编辑 5、客户添加模块维修期限字段 6、优化后台管理重新派单 7、优化小程序功能测试

dev1.0
renfan 2024-10-24 01:45:58 +08:00
parent 90ac22fffb
commit f925be6248
31 changed files with 376 additions and 123 deletions

View File

@ -265,17 +265,18 @@ public class ClientContactsServiceImpl implements IClientContactsService {
.last("limit 1")), "账号已存在换一个吧!");
systemAuthAdmin.setUsername(clientContactsParam.getUsername());
}
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5(clientContactsParam.getPassword().trim() + salt);
if(StringUtil.isNotEmpty(clientContactsParam.getPassword())){
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5(clientContactsParam.getPassword().trim() + salt);
systemAuthAdmin.setSalt(salt);
systemAuthAdmin.setPassword(pwd);
// 修改用户管理的密码的时候,小程序也需要改
User user = userMapper.selectById(systemAuthAdmin.getUserId());
user.setPassword(pwd);// 用户密码
user.setSalt(salt);// 加密盐巴
userMapper.updateById(user);
}
// 修改用户管理的密码的时候,小程序也需要改
User user = userMapper.selectById(systemAuthAdmin.getUserId());
user.setPassword(pwd);// 用户密码
user.setSalt(salt);// 加密盐巴
userMapper.updateById(user);
systemAuthAdminMapper.updateById(systemAuthAdmin);
}

View File

@ -367,9 +367,13 @@ public class EquipmentServiceImpl implements IEquipmentService {
.eq("is_delete", 0)
.last("limit 1"));
if (ObjectUtil.isNotNull(model) && !model.getId().equals(bo.getId())) {
return false;
// 如果查询结果model为null或者查询到的记录的ID等于bo.getId()
// 则表示number是唯一的因此返回true。
if (ObjectUtil.isNull(model) || model.getId().equals(bo.getId())) {
return true;
}
// 否则返回false表示number不唯一。
return false;
}

View File

@ -535,12 +535,8 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService {
if(item.getRepairOrNot() != null){
excelRepairOrder.setIsRepair(item.getRepairOrNot() == 0 ? "是" : "否");
}
if(item.getMaintenanceResult() != null){
excelRepairOrder.setResult(item.getMaintenanceResult() == 0 ? "报废" : "OK");
}else{
//维修结论为空的话就是维修中,因为没走完流程
excelRepairOrder.setResult("维修中");
}
// 维修人员
if(item.getReceiverId() != null){
SystemAuthAdmin maintenanceMan = systemAuthAdminMapper.findSystemAuthAdminById(Math.toIntExact(item.getReceiverId()));
if(maintenanceMan != null){
@ -548,6 +544,16 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService {
}
}
if(item.getMaintenanceResult() != null){
excelRepairOrder.setResult(item.getMaintenanceResult() == 0 ? "报废" : "OK");
}else if(item.getReceiverId() == null){
//维修结论为空并且维修人员也是空的话,维修结论为待派单
excelRepairOrder.setResult("待派单");
} else{
//维修结论为空的话就是维修中,因为没走完流程
excelRepairOrder.setResult("维修中");
}
RepairOrderAudit repairOrderAudit = repairOrderAuditMapper.findRepairOrderAuditByRepairOrderIdAndTwoReviewRequest(item.getId(),2L, 3L);
if(repairOrderAudit != null){
Fault faultPhenomenon = faultMapper.findFaultById(repairOrderAudit.getFaultPhenomenonId());

View File

@ -185,19 +185,38 @@ public class RepairOrderAuditServiceImpl implements IRepairOrderAuditService {
List<OrderSparePartListVo> orderSparePartListVoList = new ArrayList<>();
List<OrderSparePart> orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderIdAndRepairOrderAuditId(
model.getRepairOrderId(), model.getId());
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
if(orderSparePartList != null && !orderSparePartList.isEmpty()){
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
//配件清单仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, orderSparePart.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
//配件清单仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, orderSparePart.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVoList.add(orderSparePartListVo);
orderSparePartListVoList.add(orderSparePartListVo);
number += orderSparePart.getCount();
number += orderSparePart.getCount();
}
}else{
orderSparePartList = orderSparePartMapper.selectList(new LambdaQueryWrapper<OrderSparePart>()
.eq(OrderSparePart::getRepairOrderId, model.getRepairOrderId()));
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
//配件清单仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, orderSparePart.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVoList.add(orderSparePartListVo);
number += orderSparePart.getCount();
}
}
vo.setOrderSparePartListVoList(orderSparePartListVoList); //订单配件
vo.setRecipientNumber(number); // 领用数量
@ -282,6 +301,7 @@ public class RepairOrderAuditServiceImpl implements IRepairOrderAuditService {
.eq(RepairOrderStepData::getRepairStep, RepairOrderStopEnum.GOOD_PRODUCTS_ARE_STORED.getStatus()));
if(img != null){
vo.setImg(img.getImg());
vo.setEnterRemark(img.getRemark());
}
//良品入库 - 配件使用列表
@ -308,6 +328,16 @@ public class RepairOrderAuditServiceImpl implements IRepairOrderAuditService {
}
vo.setReplaceDamagedParts(replaceDamagedPartsListVoList); //更换损坏配件清单
//退仓图片
RepairOrderStepData withdrawalImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper<RepairOrderStepData>()
.eq(RepairOrderStepData::getRepairOrderId, model.getRepairOrderId())
.eq(RepairOrderStepData::getTitle, RepairOrderAuditStatusEnum.CANCELLATION_REQUEST.getDesc())
.orderByDesc(RepairOrderStepData::getCreateTime)
.last("limit 1"));
if(withdrawalImg != null){
vo.setWithdrawalImg(withdrawalImg.getImg());
}
return vo;
}

View File

@ -503,38 +503,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
vo.setFaultPointImg(troubleshooting.getImg());
}
// //故障现象
// Fault faultPhenomenonName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
// .eq(Fault::getId, model.getFaultPhenomenonId()));
// if(faultPhenomenonName != null){
// vo.setFaultPhenomenonName(faultPhenomenonName.getName());
// }
// //故障原因
// Fault faultCauseName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
// .eq(Fault::getId, model.getFaultCauseId()));
// if(faultCauseName != null){
// vo.setFaultCauseName(faultCauseName.getName());
// }
// //损坏原因
// Fault sourceOfDamageName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
// .eq(Fault::getId, model.getSourceOfDamageId()));
// if(sourceOfDamageName != null){
// vo.setSourceOfDamageName(sourceOfDamageName.getName());
// }
// //维修结论
// Fault operationsSuggestName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
// .eq(Fault::getId, model.getOperationsSuggestId()));
// if(operationsSuggestName != null){
// vo.setOperationsSuggestName(operationsSuggestName.getName());
// }
// //申请人员名称
// User applicantName = userMapper.selectOne(
// new QueryWrapper<User>()
// .eq("id", model.getApplicantId()));
// if(applicantName != null){
// vo.setApplicantName(applicantName.getUsername());
// }
//配件编码
List<OrderPartCode> orderPartCodes = orderPartCodeMapper.selectList(new LambdaQueryWrapper<OrderPartCode>()
.eq(OrderPartCode::getRepairOrderId, vo.getId()));
@ -543,6 +511,43 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
//是否报废
//返回报废的故障现象,故障原因,损坏原因,运维建议,报废图片,报废标图片字段。
RepairOrderAudit scrapAudit = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
.eq(RepairOrderAudit::getRepairOrderId, model.getId())
.eq(RepairOrderAudit::getReviewRequest, RepairOrderAuditStatusEnum.APPLICATION_FOR_SCRAP.getStatus())
.orderByDesc(RepairOrderAudit::getCreateTime)
.last("limit 1"));
if(scrapAudit != null){
RepairOrderAuditDetailVo repairOrderAuditDetailVo = new RepairOrderAuditDetailVo();
BeanUtils.copyProperties(scrapAudit,repairOrderAuditDetailVo);
//故障现象
Fault faultPhenomenonName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getFaultPhenomenonId()));
if(faultPhenomenonName != null){
repairOrderAuditDetailVo.setFaultPhenomenonName(faultPhenomenonName.getName());
}
//故障原因
Fault faultCauseName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getFaultCauseId()));
if(faultCauseName != null){
repairOrderAuditDetailVo.setFaultCauseName(faultCauseName.getName());
}
//损坏原因
Fault sourceOfDamageName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getSourceOfDamageId()));
if(sourceOfDamageName != null){
repairOrderAuditDetailVo.setSourceOfDamageName(sourceOfDamageName.getName());
}
//运维建议名
Fault operationsSuggestName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getOperationsSuggestId()));
if(operationsSuggestName != null){
repairOrderAuditDetailVo.setOperationsSuggestName(operationsSuggestName.getName());
}
vo.setScrapDate(repairOrderAuditDetailVo);
}
// 维修信息
RepairOrderAudit repairOrderAudit1 = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
@ -597,7 +602,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
//退仓申请信息
RepairOrderAudit repairOrderAudit2 = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
.eq(RepairOrderAudit::getRepairOrderId, model.getId())
.eq(RepairOrderAudit::getReviewRequest, RepairOrderAuditStatusEnum.CANCELLATION_REQUEST.getStatus()));
.eq(RepairOrderAudit::getReviewRequest, RepairOrderAuditStatusEnum.CANCELLATION_REQUEST.getStatus())
.orderByDesc(RepairOrderAudit::getCreateTime)
.last("limit 1"));
if(repairOrderAudit2 != null){
RepairOrderAuditListVo repairOrderAuditListVo = new RepairOrderAuditListVo();
BeanUtils.copyProperties(repairOrderAudit2,repairOrderAuditListVo);
@ -1108,13 +1115,27 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
Assert.notNull(modelList, "数据不存在!");
for (RepairOrder repairOrder : modelList) {
//获取原维修员名称
SystemAuthAdmin previousMaintenanceStaffName = systemAuthAdminMapper.selectOne(new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getId, repairOrder.getPreviousMaintenanceStaffId()));
//获取现维修员名称
SystemAuthAdmin authAdmin1 = systemAuthAdminMapper.selectOne(new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getId, repairOrderParam.getReceiverId()));
//第一次派单维修人员为空,就将第一次派单的人给原维修人员,第二次就获取第一次的维修员为原维修人员
if(repairOrder.getReceiverId() == null){
repairOrder.setPreviousMaintenanceStaffId(repairOrderParam.getReceiverId()); // 原维修人员id
}else{
repairOrder.setPreviousMaintenanceStaffId(repairOrder.getReceiverId());
}
repairOrder.setReceiverId(repairOrderParam.getReceiverId()); // 接单人id
repairOrder.setReceiverTime(new Date());//receiverTime; // 接单时间
repairOrder.setOrderStatus(RepairOrderStatusEnum.AWAITING_REPAIR.getStatus()); // 工单状态为待维修
//拆机之前才能重新改派,否则需要去小程序操作退仓申请
if(repairOrder.getRepairNextStep() != null && repairOrder.getRepairNextStep() != RepairOrderStopEnum.DISMANTLE.getStatus()){
throw new OperateException("拆机之前才能重新改派,否则需要去小程序操作退仓申请!");
}
//批量派单
if(repairOrder.getRepairNextStep() == null){
repairOrder.setRepairStep(RepairOrderStopEnum.DISMANTLE.getStatus()); // 当前步骤1、拆机
@ -1128,6 +1149,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
repairOrderStepData.setRemark("派单给维修员:" + authAdmin1.getUsername());
repairOrderStepDataMapper.insert(repairOrderStepData);
}else{
//获取原维修员名称
SystemAuthAdmin previousMaintenanceStaffName = systemAuthAdminMapper.selectOne(new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getId, repairOrder.getPreviousMaintenanceStaffId()));
//新增维修单操作记录
RepairOrderStepData repairOrderStepData = new RepairOrderStepData();
repairOrderStepData.setRepairOrderId(repairOrder.getId());
@ -1137,17 +1161,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
repairOrderStepData.setRemark("原维修员:" + previousMaintenanceStaffName.getUsername() + ",现维修员:" + authAdmin1.getUsername());
repairOrderStepDataMapper.insert(repairOrderStepData);
}
repairOrder.setReceiverId(repairOrderParam.getReceiverId()); // 接单人id
repairOrder.setReceiverTime(new Date());//receiverTime; // 接单时间
repairOrder.setOrderStatus(RepairOrderStatusEnum.AWAITING_REPAIR.getStatus()); // 工单状态为待维修
//拆机之前才能重新改派,否则需要去小程序操作退仓申请
if(repairOrder.getRepairNextStep() != RepairOrderStopEnum.DISMANTLE.getStatus()){
throw new OperateException("拆机之前才能重新改派,否则需要去小程序操作退仓申请!");
}
repairOrderMapper.updateById(repairOrder);
}
}
@ -1339,6 +1353,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
for(RepairOrderDto item : iPage.getRecords()) {
MaintenanceReportOrderListVo vo = new MaintenanceReportOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setSpecificationsModel(item.getModuleNumber()); // 模块型号
vo.setModelCode(item.getModuleCode()); // 模块代码
vo.setPower(distMap.get(item.getModulePower().toString()));// 功率
@ -1530,10 +1545,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
//正常维修
List<NormalMaintenanceExcel> normalMaintenanceExcelList = new ArrayList<>();
Integer index0 = 1;
//返修
List<RerepairExcel> rerepairExcelList = new ArrayList<>();
Integer index1 = 1;
//报废
List<ScrapExcel> scrapExcelList = new ArrayList<>();
Integer index2 = 1;
for (String ids : typeIdList) {
if(ids.equals("0")){
@ -1546,7 +1564,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
for(RepairOrderDto item : repairOrderDtoList) {
NormalMaintenanceExcel vo = new NormalMaintenanceExcel();
BeanUtils.copyProperties(item, vo);
vo.setIndex(index0); // 序号
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
if(parentRepairOrder != null){
vo.setOrderNo(parentRepairOrder.getOrderNo());
}
vo.setSpecificationsModel(item.getModuleNumber()); // 模块型号
vo.setModelCode(item.getModuleCode()); // 模块代码
vo.setPower(distMap.get(item.getModulePower().toString()));// 功率
vo.setDeliveryTime(TimeUtil.dateToString(item.getCreateTime(), TimeConstant.DATE_FORMAT)); // 维修日期(返修日期)
if(item.getMaintenanceResult() != null){// 维修结论
@ -1648,6 +1674,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
normalMaintenanceExcelList.add(vo);
index0++;
}
}
if(ids.equals("1")){
@ -1660,6 +1687,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
for(RepairOrderDto item : repairOrderDtoList) {
RerepairExcel vo = new RerepairExcel();
BeanUtils.copyProperties(item, vo);
vo.setIndex(index1); // 序号
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
if(parentRepairOrder != null){
vo.setOrderNo(parentRepairOrder.getOrderNo());
}
vo.setSpecificationsModel(item.getModuleNumber()); // 模块型号
vo.setModelCode(item.getModuleCode()); // 模块代码
vo.setPower(distMap.get(item.getModulePower().toString()));// 功率
@ -1683,8 +1717,6 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
}
//返回前中后照片
//返回维修前照片
RepairOrderStepData preMaintenanceImg = repairOrderStepDataMapper.selectOne(new LambdaQueryWrapper<RepairOrderStepData>()
@ -1809,6 +1841,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
rerepairExcelList.add(vo);
index1++;
}
}
if(ids.equals("2")){
@ -1821,6 +1854,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
for(RepairOrderDto item : repairOrderDtoList) {
ScrapExcel vo = new ScrapExcel();
BeanUtils.copyProperties(item, vo);
vo.setIndex(index2); // 序号
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
if(parentRepairOrder != null){
vo.setOrderNo(parentRepairOrder.getOrderNo());
}
vo.setSpecificationsModel(item.getModuleNumber()); // 模块型号
vo.setModelCode(item.getModuleCode()); // 模块代码
vo.setPower(distMap.get(item.getModulePower().toString()));// 功率
@ -1885,6 +1925,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
// vo.setReplacementDetail(detail);
// }
scrapExcelList.add(vo);
index2++;
}
}
}

View File

@ -84,5 +84,5 @@ public class ClientParam implements Serializable {
private Long creatorId;
private String shortName; // 客户简称
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -35,5 +35,5 @@ public class ClientDetailVo implements Serializable {
private String remark; // 备注
private Long creatorId; // 创建人id
private String shortName; // 客户简称
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -43,5 +43,6 @@ public class ClientListVo implements Serializable {
private Date updateTime; // 更新时间
private List<Equipment> equipmentList; //设备列表
private String shortName; // 客户简称
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -38,4 +38,5 @@ public class EquipmentListVo implements Serializable {
private String clientName; // 客户名称
private String shortName; // 客户简称
private EquipmentModelDetailVo equipmentModel; //设备模块信息
}

View File

@ -22,6 +22,12 @@ import java.util.List;
*/
public class NormalMaintenanceExcel {
@ApiModelProperty(value = "序号")
private Integer index;
@ApiModelProperty(value = "单据编号")
private String orderNo;
@ApiModelProperty(value = "维修人员")
private String maintenanceMan; //维修人员
@ -31,6 +37,9 @@ public class NormalMaintenanceExcel {
@ApiModelProperty(value = "型号/规格")
private String specificationsModel;
@ApiModelProperty(value = "代码模块")
private String modelCode;
@ApiModelProperty(value = "功率")
private String power;

View File

@ -21,6 +21,11 @@ import java.util.List;
*
*/
public class RerepairExcel {
@ApiModelProperty(value = "序号")
private Integer index;
@ApiModelProperty(value = "单据编号")
private String orderNo;
@ApiModelProperty(value = "保修责任人")
private String previousMaintenanceStaffName; // 保修责任人(原维修人员名称)

View File

@ -21,6 +21,11 @@ import java.util.List;
*
*/
public class ScrapExcel {
@ApiModelProperty(value = "序号")
private Integer index;
@ApiModelProperty(value = "单据编号")
private String orderNo;
@ApiModelProperty(value = "维修人员")
private String maintenanceMan; //维修人员

View File

@ -21,6 +21,8 @@ public class MaintenanceReportOrderListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String orderNo; // 订单编号
private String maintenanceMan; //维修人员
private String clientName; //客户名称
private String specificationsModel; //型号/规格

View File

@ -69,5 +69,7 @@ public class RepairOrderAuditDetailVo implements Serializable {
private List<OrderSparePartUseVo> replaceDamagedParts; //更换损坏配件清单
private String withdrawalImg; // 退仓图片
}

View File

@ -175,4 +175,5 @@ public class RepairOrderDetailVo implements Serializable {
private Integer returning; //是否在退仓中0=是1=否)
private RepairOrderAuditListVo cancellationRequestListVo; // 退仓申请信息
private RepairOrderAuditDetailVo scrapDate;//报废审核信息
}

View File

@ -16,14 +16,15 @@ public class RepairOrderDto implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String orderNo; // 订单编号
// private Integer orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Integer reviewRequest; // 审核申请0-退仓申请、1-领料申请、2-良品入库、3-报废申请)
private Long parentRepairOrderId; // 总维修单id
private Long shippingId; // 发货记录id
private Integer deliverStatus; // 发货状态0=未发货1=已发货)
private Integer orderStatus; // 订单状态 0-待派单1-待维修2-排查中3-审核中4-维修中5-测试中6-已完成;
private Long clientId; // 客户id
private String orderNo; // 订单编号
// private Integer orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Integer reviewRequest; // 审核申请0-退仓申请、1-领料申请、2-良品入库、3-报废申请)
private String moduleCode; // 模块代码
private String moduleNumber; // 模块型号

View File

@ -39,4 +39,5 @@ public class Client implements Serializable {
private Date updateTime; // 更新时间
private Integer isDelete; // 是否删除 0-未删除 1-删除
private String shortName; // 客户简称
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -32,7 +32,7 @@ public class RepairOrderAudit implements Serializable {
private Integer changeAccessory; // 是否已更换配件0=是1=否)
private Long applicantId; // 申请人员id
private Date applyForTime; // 申请时间
private Integer auditStatus; // 审核状态0=待审核、1=待入库、2=审核未通过、3=已完成4=待领取、5=待确认
private Integer auditStatus; // 审核状态0=待审核、1=待入库、2=审核未通过、3=已完成4=待领取、5=待确认、6=已取消
@TableField(value = "audit_result",updateStrategy = FieldStrategy.IGNORED)
private Integer auditResult; // 审核结果0=通过1=不通过)
private String auditOpinion; // 审核意见

View File

@ -36,7 +36,7 @@ public interface OrderSparePartMapper extends IBaseMapper<OrderSparePart> {
"\troa.applicant_id AS applicantId \n" +
"FROM\n" +
"\tla_order_spare_part AS osp\n" +
"\tLEFT JOIN la_repair_order_audit AS roa ON osp.repair_order_id = roa.repair_order_id \n" +
"\tLEFT JOIN la_repair_order_audit AS roa ON osp.repair_order_audit_id = roa.id \n" +
"WHERE\n" +
"\troa.repair_order_id = #{moduleId} \n" +
"\tAND roa.review_request = 1\n" +

View File

@ -33,10 +33,11 @@
</if>
<if test="param.likeWork != null and param.likeWork != ''">
and (pro.order_no like concat('%', #{param.likeWork}, '%')
</if>
<if test="param.likeWork != null and param.likeWork != ''">
OR c.client_name LIKE concat('%', #{param.likeWork}, '%'))
</if>
<if test="param.ids != null and param.ids != ''">
and FIND_IN_SET(pro.id,#{param.ids})
</if>
order by pro.create_time desc
</select>
</mapper>

View File

@ -283,16 +283,18 @@
<select id="maintenanceReportList" resultType="com.hcy.common.dto.order.RepairOrderDto">
SELECT
ro.*,
saa.username AS maintenanceMan,
c.client_name AS clientName,
c.short_name
ro.*,
saa.username AS maintenanceMan,
c.client_name AS clientName,
c.short_name ,
pro.order_no
FROM
la_repair_order AS ro
LEFT JOIN la_client AS c ON ro.client_id = c.id
LEFT JOIN la_system_auth_admin AS saa ON ro.receiver_id = saa.id
la_repair_order AS ro
LEFT JOIN la_client AS c ON ro.client_id = c.id
LEFT JOIN la_system_auth_admin AS saa ON ro.receiver_id = saa.id
LEFT JOIN la_parent_repair_order as pro on ro.parent_repair_order_id = pro.id
WHERE
ro.is_delete = 0
ro.is_delete = 0
<if test="param.repairOrNot != null">
and ro.repair_or_not = #{param.repairOrNot}
</if>
@ -305,6 +307,9 @@
<if test="param.maintenanceMan != null and param.maintenanceMan != ''">
and saa.username LIKE concat('%', #{param.maintenanceMan}, '%')
</if>
<if test="param.orderNo != null and param.orderNo != ''">
and pro.order_no LIKE concat('%', #{param.orderNo}, '%')
</if>
<if test="param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''">
and ro.create_time BETWEEN #{param.startTime} and #{param.endTime}
</if>

View File

@ -671,10 +671,20 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
List<OrderSparePart> orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper<OrderSparePart>()
.eq(OrderSparePart::getRepairOrderId, model.getId())
.eq(OrderSparePart::getIsDelete, GlobalConstant.NOT_DELETE));
List<OrderSparePartListVo> orderSparePartListVos = new ArrayList<>();
Map<String,OrderSparePartListVo> orderSparePartListVosMap = new HashMap<>();
for (OrderSparePart item : orderSpareParts) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(item, orderSparePartListVo);
//将相同的数据合并
OrderSparePartListVo orderSparePartList = null;
String key = String.valueOf(item.getRepairOrderId() + item.getSparePartsId());
if(orderSparePartListVosMap.get(key) != null){
orderSparePartList = orderSparePartListVosMap.get(key);
}
//仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, item.getWarehouseId()));
@ -755,14 +765,11 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
.orderByDesc(RepairOrderAudit::getCreateTime)
.last("limit 1"));
//reviewRequest; // 审核申请0-退仓申请、1-领料申请、2-良品入库、3-报废申请)
if(repairOrderAudit != null){
vo.setReviewRequest(repairOrderAudit.getReviewRequest());
}
//审核状态
if(repairOrderAudit != null){
vo.setAuditStatus(repairOrderAudit.getAuditStatus());
vo.setReviewRequest(repairOrderAudit.getReviewRequest()); // 审核申请0-退仓申请、1-领料申请、2-良品入库、3-报废申请)
vo.setAuditStatus(repairOrderAudit.getAuditStatus()); //审核状态
vo.setAuditResult(repairOrderAudit.getAuditResult()); // 审核结果0=通过1=不通过)
vo.setAuditOpinion(repairOrderAudit.getAuditOpinion()); // 审核意见
}
//故障现象
@ -810,6 +817,45 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
}
//是否报废
//返回报废的故障现象,故障原因,损坏原因,运维建议,报废图片,报废标图片字段。
RepairOrderAudit scrapAudit = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
.eq(RepairOrderAudit::getRepairOrderId, model.getId())
.eq(RepairOrderAudit::getReviewRequest, RepairOrderAuditStatusEnum.APPLICATION_FOR_SCRAP.getStatus())
.orderByDesc(RepairOrderAudit::getCreateTime)
.last("limit 1"));
if(scrapAudit != null){
RepairOrderAuditDetailVo repairOrderAuditDetailVo = new RepairOrderAuditDetailVo();
BeanUtils.copyProperties(scrapAudit,repairOrderAuditDetailVo);
//故障现象
Fault faultPhenomenonName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getFaultPhenomenonId()));
if(faultPhenomenonName != null){
repairOrderAuditDetailVo.setFaultPhenomenonName(faultPhenomenonName.getName());
}
//故障原因
Fault faultCauseName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getFaultCauseId()));
if(faultCauseName != null){
repairOrderAuditDetailVo.setFaultCauseName(faultCauseName.getName());
}
//损坏原因
Fault sourceOfDamageName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getSourceOfDamageId()));
if(sourceOfDamageName != null){
repairOrderAuditDetailVo.setSourceOfDamageName(sourceOfDamageName.getName());
}
//运维建议名
Fault operationsSuggestName = faultMapper.selectOne(new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, repairOrderAuditDetailVo.getOperationsSuggestId()));
if(operationsSuggestName != null){
repairOrderAuditDetailVo.setOperationsSuggestName(operationsSuggestName.getName());
}
vo.setScrapDate(repairOrderAuditDetailVo);
}
// 维修信息
RepairOrderAudit repairOrderAudit1 = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
.eq(RepairOrderAudit::getRepairOrderId, model.getId())
@ -1128,12 +1174,19 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
//批量添加配件编码
List<OrderPartCode> orderPartCodeList = repairOrderParam.getOrderPartCodeList();
for (OrderPartCode orderPartCode : orderPartCodeList) {
//部件编码不能和模块号一样
if(Objects.equals(orderPartCode.getPartCode(), repairOrder.getModuleCode())){
throw new OperateException("部件编码不能和模块号一样!");
//判断当前配件编码是否在数据已存在,已存在就提示已存在
Integer count = orderPartCodeMapper.selectCount(new LambdaQueryWrapper<OrderPartCode>()
.eq(OrderPartCode::getPartCode, orderPartCode.getPartCode())
.eq(OrderPartCode::getRepairOrderId, repairOrder.getId()));
if(count == 0){
//部件编码不能和模块号一样
if(Objects.equals(orderPartCode.getPartCode(), repairOrder.getModuleCode())){
throw new OperateException("部件编码不能和模块号一样!");
}
orderPartCode.setRepairOrderId(repairOrder.getId()); // 维修单号
orderPartCodeMapper.insert(orderPartCode);
}
orderPartCode.setRepairOrderId(repairOrder.getId()); // 维修单号
orderPartCodeMapper.insert(orderPartCode);
}
RepairOrderStepData repairOrderStepData = new RepairOrderStepData();
@ -1530,31 +1583,39 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.PRE_MAINTENANCE_IMG.getStatus()) {
// 上传维修前图片
repairOrder.setRepairNextStep(RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus()); // 下个步骤
// 更新不更新步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus()); // 下个步骤
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.IN_MAINTENANCE_IMG.getStatus()) {
// 上传维修中图片
// 更新不更新步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.AFTER_REPAIR_IMG.getStatus()); // 下个步骤
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.AFTER_REPAIR_IMG.getStatus()) {
// 上传维修后图片
// 更新不更新步骤
repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤8、功能测试
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤8、功能测试
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()) {
// 功能测试
// 更新不更新步骤
repairOrder.setFunctionalTestPassed(repairOrderParam.getFunctionalTestPassed()); // 功能测试是否通过0=是1=否)
if(repairOrderParam.getFunctionalTestPassed() == RepairOrderStatusEnum.YES.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.DC_AND_PFC_ASSEMBLE.getStatus()); // 下个步骤
}else{
repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
if(repairOrderParam.getFunctionalTestPassed() == RepairOrderStatusEnum.YES.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.DC_AND_PFC_ASSEMBLE.getStatus()); // 下个步骤
}else{
repairOrder.setRepairNextStep(RepairOrderStopEnum.FUNCTIONAL_TEST.getStatus()); // 下个步骤
}
}
repairOrderMapper.updateById(repairOrder); // 更新维修单
if(repairOrderStepData1 != null){
@ -1584,27 +1645,34 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
} else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.DC_AND_PFC_ASSEMBLE.getStatus()) {
// DC&PFC组装
// 更新不更新步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.REINFORCING_THREE_ANTI_PAINT_AND_DISPENSING.getStatus()); // 下个步骤
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.REINFORCING_THREE_ANTI_PAINT_AND_DISPENSING.getStatus()) {
// 补强三防漆和点胶
// 更新不更新步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setRepairNextStep(RepairOrderStopEnum.MODULE_ASSEMBLY.getStatus()); // 下个步骤
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.MODULE_ASSEMBLY.getStatus()) {
// 模块装配
//模块装配完变成测试中
// 更新不更新步骤
if(repairOrderParam.getChangeStepOrNot() != RepairOrderStatusEnum.NO.getStatus()){
repairOrder.setOrderStatus(RepairOrderStatusEnum.TEST_IN_PROCESS.getStatus());
repairOrder.setRepairNextStep(RepairOrderStopEnum.AGING_TEST.getStatus()); // 下个步骤12、老化测试
}
}else if (repairOrderParam.getRepairStep() == RepairOrderStopEnum.AGING_TEST.getStatus()) {
// 老化测试
// 更新不更新步骤
repairOrder.setAgingTestPassed(repairOrderParam.getAgingTestPassed()); // 老化测试是否通过0=是1=否)
if (repairOrderParam.getAgingTestPassed() == RepairOrderStatusEnum.YES.getStatus()) {
repairOrder.setRepairNextStep(RepairOrderStopEnum.FILL_IN_MAINTENANCE_INFORMATION.getStatus()); // 下个步骤13、填写维修信息
} else {
@ -2072,7 +2140,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
.eq(RepairOrderStepData::getRepairOrderId, order.getId())
.eq(RepairOrderStepData::getIsDelete, GlobalConstant.NOT_DELETE));
for (RepairOrderStepData repairOrderStepDatum : repairOrderStepData) {
if(!Objects.equals(repairOrderStepDatum.getTitle(), "创建维修工单")){
if(!Objects.equals(repairOrderStepDatum.getTitle(), "创建维修工单") && !Objects.equals(repairOrderStepDatum.getTitle(), "退仓已完成")){
repairOrderStepDatum.setIsDelete(GlobalConstant.DELETE);
repairOrderStepDataMapper.updateById(repairOrderStepDatum);
}
@ -2121,7 +2189,14 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
sparePartMapper.updateById(sparePart);
}
//维修单步骤数据
RepairOrderStepData requestRepairOrderStepData = new RepairOrderStepData();
requestRepairOrderStepData.setRepairOrderId(order.getId());// 维修单id
requestRepairOrderStepData.setRemark("退仓申请已完成,退仓原因:" + repairOrderAudit.getReasonForWithdrawal());// 备注
requestRepairOrderStepData.setTitle("退仓已完成"); // 标题
requestRepairOrderStepData.setCreatorId(FrontThreadLocal.getUserId().longValue()); //创建人
requestRepairOrderStepData.setCreateTime(new Date()); // 创建时间
repairOrderStepDataMapper.insert(requestRepairOrderStepData);
}
if(repairOrderAudit.getReviewRequest() == RepairOrderAuditStatusEnum.GOOD_PRODUCTS_ARE_STORED.getStatus()){
//如果是良品入库维修结论为OK
@ -2273,10 +2348,24 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
repairOrderMapper.updateById(repairOrder); // 更新维修模块单信息
}
//取消领料的时候把最新补料申请的配件删除
RepairOrderAudit repairOrderAudit1 = repairOrderAuditMapper.selectOne(new LambdaQueryWrapper<RepairOrderAudit>()
.eq(RepairOrderAudit::getRepairOrderId, repairOrder.getId())
.eq(RepairOrderAudit::getReviewRequest, RepairOrderAuditStatusEnum.STORES_REQUISITION.getStatus())
.orderByDesc(RepairOrderAudit::getCreateTime)
.last("limit 1"));
if(repairOrderAudit1 != null){
List<OrderSparePart> orderSpareParts1 = orderSparePartMapper.selectList(new LambdaQueryWrapper<OrderSparePart>()
.eq(OrderSparePart::getRepairOrderAuditId, repairOrderAudit1.getId()));
for (OrderSparePart orderSparePart : orderSpareParts1) {
//把最新补料申请的配件删除
orderSparePartMapper.deleteById(orderSparePart);
}
}
//维修单步骤数据
RepairOrderStepData repairOrderStepData = new RepairOrderStepData();
repairOrderStepData.setRepairOrderId(repairOrderParam.getId());
repairOrderStepData.setRepairStep(repairOrder.getRepairStep());
repairOrderStepData.setRemark(repairOrderParam.getRepairOrderStepRemark());
repairOrderStepData.setTitle("取消领料");
repairOrderStepData.setCreatorId(FrontThreadLocal.getUserId().longValue());

View File

@ -39,5 +39,5 @@ public class ParentRepairOrderParam implements Serializable {
ArrayList<RepairOrder> repairOrderList; // 维修模块
private String likeWork; // 模糊查询(工单编号/客户名称
private String likeWork; // 模糊查询(工单编号/客户名称/模块代码
}

View File

@ -169,5 +169,5 @@ public class RepairOrderParam implements Serializable {
private String withdrawalImg; // 退仓图片
private Long repairOrderAuditId; //维修单审核id
private Integer feedingOrNot; //是否在补料中0=是1=否)
private Integer changeStepOrNot; //是否改步骤0=是1=否)
}

View File

@ -35,5 +35,5 @@ public class ClientDetailVo implements Serializable {
private String remark; // 备注
private Long creatorId; // 创建人id
private String shortName; // 客户简称
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -43,4 +43,5 @@ public class ClientListVo implements Serializable {
private List<Equipment> equipmentList; //设备列表
private String shortName; // 客户简称
private List<ClientContacts> clientContactsList; //联系人列表
private Integer moduleRepairPeriod; // 模块维修期限
}

View File

@ -4,6 +4,8 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
/**
* OrderSparePartVo
@ -28,4 +30,12 @@ public class OrderSparePartListVo implements Serializable {
private Integer count; // 出入库数量
private BigDecimal totalPrice; // 总价
private Map<String,Integer> remarkMap; // 合并重复的配件
public Map<String, Integer> getRemarkMap() {
if(remarkMap == null){
remarkMap = new HashMap<>();
}
return remarkMap;
}
}

View File

@ -4,6 +4,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* RepairOrderAuditVo
@ -14,6 +15,11 @@ public class RepairOrderAuditDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String orderNo; // 订单编号
private String moduleCode; // 模块代码
private String moduleNumber; // 模块型号
private String clientName; // 客户名称
private Long repairOrderId; // 维修模块id
private Long reviewRequest; // 审核申请0-退仓申请、1-领料申请、2-良品入库、3-报废申请)
private Long faultPhenomenonId; // 故障现象id
@ -32,5 +38,36 @@ public class RepairOrderAuditDetailVo implements Serializable {
private String auditOpinion; // 审核意见
private Date auditTime; // 审核时间
private Long auditorId; // 审核人id经办人
private Date createTime; // 创建时间
private String faultPhenomenonName; // 故障现象名称
private String faultCauseName; // 故障原因名称
private String sourceOfDamageName; // 损坏原因名称
private String operationsSuggestName; // 运维建议名称
private String applicantName; // 申请人员名称
private Integer recipientNumber; //领用数量
private List<OrderSparePartListVo> orderSparePartListVoList; //订单配件
private Integer repairOrNot; // 是否返修0=是1=否)
private Integer maintenanceResult; // 维修结论0=报废1=OK
private String faultPhenomenon; // 维修信息-故障现象
private String faultCause; // 维修信息-故障原因
private String sourceOfDamage; // 维修信息-损坏原因
private String operationsSuggest; // 维修信息-运维建议
private String preMaintenanceImg; // 维修前照片
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private String receiveRemark; // 配件领料备注
private String enterRemark; // 良品入库备注
private String img; // 照片
private List<OrderSparePartUseVo> sparePartUseParams; //配件使用列表
private List<OrderSparePartUseVo> replaceDamagedParts; //更换损坏配件清单
private String withdrawalImg; // 退仓图片
}

View File

@ -164,5 +164,5 @@ public class RepairOrderDetailVo implements Serializable {
private RepairOrderAuditListVo cancellationRequestListVo; // 退仓申请信息
private Integer feedingOrNot; //是否在补料中0=是1=否)
private RepairOrderAuditDetailVo scrapDate;//报废审核信息
}