diff --git a/admin/src/main/java/com/hcy/admin/controller/order/MaintenanceOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/MaintenanceOrderController.java index 75218e2..2f4cfb1 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/MaintenanceOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/MaintenanceOrderController.java @@ -88,4 +88,29 @@ public class MaintenanceOrderController { return AjaxResult.success(); } + /** + * 更新服务报价 + * + * @param maintenanceOrderParam 参数 + * @return Object + */ + @Log(title = "更新服务报价") + @PostMapping("/updateServiceOfferPrice") + public Object updateServiceOfferPrice(@RequestBody MaintenanceOrderParam maintenanceOrderParam) { + iMaintenanceOrderService.updateServiceOfferPrice(maintenanceOrderParam); + return AjaxResult.success(); + } + + /** + * 退回检修 + * + * @param maintenanceOrderParam 参数 + * @return Object + */ + @Log(title = "退回检修") + @PostMapping("/returnMaintain") + public Object returnMaintain(@RequestBody MaintenanceOrderParam maintenanceOrderParam) { + iMaintenanceOrderService.returnMaintain(maintenanceOrderParam); + return AjaxResult.success(); + } } diff --git a/admin/src/main/java/com/hcy/admin/service/SparePartReceive/impl/SparePartReceiveServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/SparePartReceive/impl/SparePartReceiveServiceImpl.java index 3864e52..addfb5d 100644 --- a/admin/src/main/java/com/hcy/admin/service/SparePartReceive/impl/SparePartReceiveServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/SparePartReceive/impl/SparePartReceiveServiceImpl.java @@ -231,23 +231,8 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService { model.setHandlingTime(System.currentTimeMillis() / 1000); //经办时间 //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); - List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); - for (SparePartAudit sparePartAudit : sparePartAuditList) { - SparePartAudit insertSparePartAudit = new SparePartAudit(); - insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id - sb.append(sparePartAudit.getId()).append(","); - - insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 - insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id - insertSparePartAudit.setCreateTime(System.currentTimeMillis() / 1000); - sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 - } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setCreateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.insert(model); } @@ -285,11 +270,10 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService { model.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); //状态 未审核 //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); + List auditList = sparePartAuditMapper.selectList( new QueryWrapper() .eq("stock_audit_id", model.getId()) @@ -315,7 +299,6 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService { }else { insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); } - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -323,8 +306,6 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService { sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setUpdateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.updateById(model); } @@ -377,7 +358,7 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService { ); System.out.println("单据类型" + model.getReceiptType()); System.out.println(model.getPurchaseStatus()); - if(model.getReceiptType() == AuditStateEnum.OUTWAREHOUSE.getStatus() + if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() && model.getPurchaseStatus() == AuditStateEnum.CHECKPENDING.getStatus()){ // 通过审核的出库单 //获取备件信息 diff --git a/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java index 254087e..5fdeb82 100644 --- a/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/client/impl/EquipmentServiceImpl.java @@ -11,13 +11,18 @@ import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.client.EquipmentParam; import com.hcy.admin.vo.client.EquipmentListVo; import com.hcy.admin.vo.client.EquipmentDetailVo; +import com.hcy.admin.vo.client.EquipmentModelDetailVo; import com.hcy.admin.vo.sparePart.SparePartListVo; import com.hcy.common.core.PageResult; import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.client.EquipmentModel; +import com.hcy.common.entity.user.User; import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; +import com.hcy.common.mapper.client.EquipmentModelMapper; +import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.TimeUtil; import org.springframework.beans.BeanUtils; @@ -42,6 +47,12 @@ public class EquipmentServiceImpl implements IEquipmentService { @Resource IDevRegionService regionService; + @Resource + EquipmentModelMapper equipmentModelMapper; + + @Resource + UserMapper userMapper; + /** * 设备管理列表 * @@ -86,6 +97,19 @@ public class EquipmentServiceImpl implements IEquipmentService { if (client != null){ vo.setClientName(client.getClientName()); } + + //设置设备模块信息 + EquipmentModel equipmentModel = equipmentModelMapper.findEquipmentModelByEquipmentId(vo.getId()); + EquipmentModelDetailVo equipmentModelDetailVo = new EquipmentModelDetailVo(); + if(equipmentModel != null){ + BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); + + User insetallUser = userMapper.selectById(equipmentModel.getUserId()); + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } + //设置设备模块信息 + vo.setEquipmentModel(equipmentModelDetailVo); + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); list.add(vo); } diff --git a/admin/src/main/java/com/hcy/admin/service/order/IMaintenanceOrderService.java b/admin/src/main/java/com/hcy/admin/service/order/IMaintenanceOrderService.java index 968dc6a..cb8b1f9 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/IMaintenanceOrderService.java +++ b/admin/src/main/java/com/hcy/admin/service/order/IMaintenanceOrderService.java @@ -51,4 +51,18 @@ public interface IMaintenanceOrderService { */ void del(Long id); + /** + * 更新服务报价 + * + * @param maintenanceOrderParam 参数 + */ + void updateServiceOfferPrice(MaintenanceOrderParam maintenanceOrderParam); + + /** + * 更新服务报价 + * + * @param maintenanceOrderParam 参数 + */ + void returnMaintain(MaintenanceOrderParam maintenanceOrderParam); + } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java index 6899c2c..afa92d9 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/MaintenanceOrderServiceImpl.java @@ -9,13 +9,18 @@ import com.hcy.admin.service.order.IMaintenanceOrderService; import com.hcy.admin.service.region.IDevRegionService; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.order.MaintenanceOrderParam; +import com.hcy.admin.vo.client.EquipmentModelDetailVo; import com.hcy.admin.vo.order.MaintenanceOrderListVo; import com.hcy.admin.vo.order.MaintenanceOrderDetailVo; +import com.hcy.admin.vo.order.OrderSparePartListVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; import com.hcy.common.dto.order.MaintenanceOrderDto; +import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.entity.client.Client; +import com.hcy.common.entity.client.ClientContacts; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.client.EquipmentModel; import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.system.SystemAuthAdmin; @@ -24,10 +29,13 @@ import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.exception.OperateException; +import com.hcy.common.mapper.client.ClientContactsMapper; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; +import com.hcy.common.mapper.client.EquipmentModelMapper; import com.hcy.common.mapper.fault.FaultMapper; import com.hcy.common.mapper.order.MaintenanceOrderMapper; +import com.hcy.common.mapper.order.OrderSparePartMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; import org.springframework.beans.BeanUtils; @@ -35,6 +43,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -65,6 +74,15 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { @Resource UserMapper userMapper; + @Resource + OrderSparePartMapper orderSparePartMapper; + + @Resource + ClientContactsMapper clientContactsMapper; + + @Resource + EquipmentModelMapper equipmentModelMapper; + /** * 检修订单列表 * @@ -99,6 +117,25 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setReceiverName(user.getNickname()); } + //设置创建人姓名 + if(item.getOrderSource() == OrderStateEnum.CUSTOMER_REPORT.getStatus()){ + vo.setCreatorName(item.getClientCreatorName()); + }else{ + vo.setCreatorName(item.getCreatorName()); + } + + //设置设备模块信息 + EquipmentModel equipmentModel = equipmentModelMapper.findEquipmentModelByEquipmentId(item.getEquipmentId()); + EquipmentModelDetailVo equipmentModelDetailVo = new EquipmentModelDetailVo(); + if(equipmentModel != null){ + BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); + + User insetallUser = userMapper.selectById(equipmentModel.getUserId()); + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } + //设置设备模块信息 + vo.setEquipmentModel(equipmentModelDetailVo); + list.add(vo); } @@ -126,19 +163,28 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //设置客户信息 Client client = clientMapper.selectById(model.getClientId()); - vo.setClientName(client.getClientName()); + if (client != null) { + vo.setClientName(client.getClientName()); + + } //设置设备信息 Equipment equipment = equipmentMapper.selectById(model.getEquipmentId()); - vo.setEquipment(equipment); + if(equipment != null){ + vo.setEquipment(equipment); + } //设置创建人姓名 if(model.getOrderSource() == OrderStateEnum.CUSTOMER_REPORT.getStatus()){ - User user = userMapper.selectById(model.getReceiverId()); - vo.setCreatorName(user.getNickname()); + ClientContacts clientContacts = clientContactsMapper.findClientContactsByUserId(model.getCreatorId()); + if(clientContacts != null){ + vo.setCreatorName(clientContacts.getName()); + } }else{ SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectById(model.getCreatorId()); - vo.setCreatorName(systemAuthAdmin.getNickname()); + if(systemAuthAdmin != null){ + vo.setCreatorName(systemAuthAdmin.getNickname()); + } } //设置接单人名称 @@ -149,7 +195,20 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //设置故障名称 Fault fault = faultMapper.selectById(model.getFaultId()); - vo.setFaultName(fault.getName()); + if(fault != null){ + vo.setFaultName(fault.getName()); + } + + //设置配件清单 + List orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper() + .eq(OrderSparePart::getMaintenanceOrderId, model.getId())); + List orderSparePartListVos = new ArrayList<>(); + for (OrderSparePart item : orderSpareParts) { + OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo(); + BeanUtils.copyProperties(item, orderSparePartListVo); + orderSparePartListVos.add(orderSparePartListVo); + } + vo.setSparePartList(orderSparePartListVos); return vo; } @@ -283,4 +342,36 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrderMapper.updateById(model); } + @Override + public void updateServiceOfferPrice(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder model = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(model, "数据不存在!"); + Assert.notNull(maintenanceOrderParam.getActualAmount(),"服务报价不能为空"); + + if(model.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()){ + //更新服务报价 + BigDecimal actualAmount = maintenanceOrderParam.getActualAmount(); + model.setActualAmount(actualAmount); + maintenanceOrderMapper.updateById(model); + }else{ + throw new OperateException("当前工单状态,无法修改服务报价"); + } + } + + @Override + public void returnMaintain(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder model = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(model, "数据不存在!"); + Assert.notNull(maintenanceOrderParam.getReturnCause(),"退回原因不可为空"); + + if(model.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()){ + //更新服务报价 + model.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); + model.setReturnCause(maintenanceOrderParam.getReturnCause()); + maintenanceOrderMapper.updateById(model); + }else{ + throw new OperateException("当前工单状态,无法退回检修"); + } + } + } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartAllot/impl/SpareParAllotServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartAllot/impl/SpareParAllotServiceImpl.java index 78ec5ea..1ca45b8 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartAllot/impl/SpareParAllotServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartAllot/impl/SpareParAllotServiceImpl.java @@ -182,7 +182,7 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { model.setImportWarehouse(sparePartStockAuditParam.getImportWarehouse()); // 调入仓库 model.setRemark(sparePartStockAuditParam.getRemark()); // 备注 model.setReceiptNumber(generateOrderNumber()); // 单据编号 - model.setOutInWarehouseType(Long.valueOf(AuditStateEnum.STOCKTRANSFER.getStatus())); //入库类别(2=库存调拨) + model.setOutInWarehouseType(AuditStateEnum.STOCK_TRANSFER.getStatus()); //入库类别(2=库存调拨) // 获取当前的用户 Object username = AdminThreadLocal.get("username"); @@ -196,11 +196,9 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); for (SparePartAudit sparePartAudit : sparePartAuditList) { SparePartAudit insertSparePartAudit = new SparePartAudit(); insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件调拨数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -213,8 +211,6 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { insertSparePartAudit.setSparePartsCode(sparePart.getSparePartsCode()); //备件编码 sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setCreateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.insert(model); } @@ -240,8 +236,7 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { model.setRemark(sparePartStockAuditParam.getRemark()); // 备注 List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); + List auditList = sparePartAuditMapper.selectList( new QueryWrapper() .eq("stock_audit_id", model.getId()) @@ -267,7 +262,6 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { }else { insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); } - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件调拨数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -286,12 +280,10 @@ public class SpareParAllotServiceImpl implements ISparePartAllotService { } //已审核,但不通过的,重新编辑之后状态也要变成未审核,审核结果改成空 if(model.getAuditState() == AuditStateEnum.AUDITED.getStatus() - && model.getAuditResult() == AuditStateEnum.NOTPASS.getStatus()){ + && model.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); model.setAuditResult(null); } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setUpdateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.updateById(model); } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartInWarehouse/impl/SparePartInWarehouseServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartInWarehouse/impl/SparePartInWarehouseServiceImpl.java index 1536580..d3f24bd 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartInWarehouse/impl/SparePartInWarehouseServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartInWarehouse/impl/SparePartInWarehouseServiceImpl.java @@ -188,16 +188,14 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer // 审核状态 model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.INWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.IN_WAREHOUSE.getStatus()); //model.setSparePartAuditId(sparePartStockAuditParam.getSparePartAuditId()); // 备件审核id List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); for (SparePartAudit sparePartAudit : sparePartAuditList) { SparePartAudit insertSparePartAudit = new SparePartAudit(); insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件入库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -211,8 +209,6 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setCreateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.insert(model); } @@ -240,8 +236,6 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber()); // 单据编号 List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); List auditList = sparePartAuditMapper.selectList( new QueryWrapper() @@ -269,7 +263,6 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer }else { insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); } - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件入库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -283,13 +276,11 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer } //已审核,但不通过的,重新编辑之后状态也要变成未审核,审核结果改成空 if(model.getAuditState() == AuditStateEnum.AUDITED.getStatus() - && model.getAuditResult() == AuditStateEnum.NOTPASS.getStatus()){ + && model.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); model.setAuditResult(null); } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setUpdateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.updateById(model); } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartOutWarehouse/impl/SparePartOutWarehouseServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartOutWarehouse/impl/SparePartOutWarehouseServiceImpl.java index 9e098e7..9995cf3 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartOutWarehouse/impl/SparePartOutWarehouseServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartOutWarehouse/impl/SparePartOutWarehouseServiceImpl.java @@ -195,23 +195,20 @@ public class SparePartOutWarehouseServiceImpl implements ISparePartOutWarehouseS // 审核状态 model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); + for (SparePartAudit sparePartAudit : sparePartAuditList) { SparePartAudit insertSparePartAudit = new SparePartAudit(); insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id insertSparePartAudit.setCreateTime(System.currentTimeMillis() / 1000); sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id + model.setCreateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.insert(model); } @@ -239,8 +236,7 @@ public class SparePartOutWarehouseServiceImpl implements ISparePartOutWarehouseS model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber()); // 单据编号 List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); + List auditList = sparePartAuditMapper.selectList( new QueryWrapper() .eq("stock_audit_id", model.getId()) @@ -266,7 +262,6 @@ public class SparePartOutWarehouseServiceImpl implements ISparePartOutWarehouseS }else { insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); } - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -279,12 +274,10 @@ public class SparePartOutWarehouseServiceImpl implements ISparePartOutWarehouseS } //已审核,但不通过的,重新编辑之后状态也要变成未审核,审核结果改成空 if(model.getAuditState() == AuditStateEnum.AUDITED.getStatus() - && model.getAuditResult() == AuditStateEnum.NOTPASS.getStatus()){ + && model.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); model.setAuditResult(null); } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setUpdateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.updateById(model); } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java index 76c3d7c..0640f1c 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java @@ -285,23 +285,19 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { model.setHandlingTime(System.currentTimeMillis() / 1000); //经办时间 //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); for (SparePartAudit sparePartAudit : sparePartAuditList) { SparePartAudit insertSparePartAudit = new SparePartAudit(); insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setUnitPrice(sparePartAudit.getUnitPrice()); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id insertSparePartAudit.setCreateTime(System.currentTimeMillis() / 1000); sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setCreateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.insert(model); } @@ -350,11 +346,10 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { model.setConsignee((String) username); // 收货单位(人员) //单据类型(0=入库单,1=出库单,2=仓库调拨单) - model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus()); + model.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - // 使用StringBuilder来拼接id值 - StringBuilder sb = new StringBuilder(); + List auditList = sparePartAuditMapper.selectList( new QueryWrapper() .eq("stock_audit_id", model.getId()) @@ -380,7 +375,6 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { }else { insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); } - sb.append(sparePartAudit.getId()).append(","); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id @@ -388,8 +382,6 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息 } - sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号 - model.setSparePartAuditId(String.valueOf(sb));// 备件审核id model.setUpdateTime(System.currentTimeMillis() / 1000); sparePartStockAuditMapper.updateById(model); } @@ -511,7 +503,7 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { .eq("stock_audit_id", model.getId()) .eq("is_delete", 0) ); - if(model.getReceiptType() == AuditStateEnum.OUTWAREHOUSE.getStatus() + if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() && model.getPurchaseStatus() == AuditStateEnum.CHECKPENDING.getStatus()){ // 通过审核的出库单 //获取备件信息 diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java index 527c758..157b064 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/impl/SparePartStockAuditServiceImpl.java @@ -318,7 +318,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi model.setId(sparePartStockAuditParam.getId()); model.setAuditResult(sparePartStockAuditParam.getAuditResult()); // 审核结果(0=已通过,1=未通过) - if(sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOTPASS.getStatus()){ + if(sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ model.setPurchaseStatus(AuditStateEnum.NOTPASSSTATE.getStatus()); //审核未通过 } model.setAuditState(AuditStateEnum.AUDITED.getStatus()); // 审核状态(0=未审核,1=已审核,2=已取消) @@ -332,8 +332,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("stock_audit_id", model.getId()) .eq("is_delete", 0) ); - if(model.getReceiptType() == AuditStateEnum.INWAREHOUSE.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADYPASSED.getStatus()){ + if(model.getReceiptType() == AuditStateEnum.IN_WAREHOUSE.getStatus() + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ //已通过审核的入库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -345,8 +345,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi sparePart.setQuantity(sparePart.getQuantity() + sparePartAudit.getCount()); sparePartMapper.updateById(sparePart); } - }else if(model.getReceiptType() == AuditStateEnum.OUTWAREHOUSE.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADYPASSED.getStatus()){ + }else if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ // 通过审核的出库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -368,7 +368,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi } }else if(model.getReceiptType() == AuditStateEnum.ALLOT.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADYPASSED.getStatus()){ + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ //通过审核的调拨单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -455,7 +455,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("stock_audit_id", model.getId()) .eq("is_delete", 0) ); - if(model.getReceiptType() == AuditStateEnum.OUTWAREHOUSE.getStatus()){ + if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus()){ // 通过审核的出库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { diff --git a/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java b/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java index 215215b..8088a01 100644 --- a/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/order/MaintenanceOrderParam.java @@ -101,4 +101,5 @@ public class MaintenanceOrderParam implements Serializable { private String clientName; // 客户姓名 private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 + private String returnCause; //退回原因 } diff --git a/admin/src/main/java/com/hcy/admin/validate/order/OrderSparePartParam.java b/admin/src/main/java/com/hcy/admin/validate/order/OrderSparePartParam.java new file mode 100644 index 0000000..bebc78d --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/validate/order/OrderSparePartParam.java @@ -0,0 +1,63 @@ +package com.hcy.admin.validate.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 订单配件参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class OrderSparePartParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + private Long id; + + @NotNull(message = "sparePartsId参数缺失", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "sparePartsId参数值不能少于0", groups = {create.class, update.class}) + private Long sparePartsId; + + @NotNull(message = "sparePartsCode参数缺失", groups = {create.class, update.class}) + @Length(max = 100, message = "sparePartsCode参数不能超出100个字符", groups = {create.class, update.class}) + private String sparePartsCode; + + @NotNull(message = "sparePartsName参数缺失", groups = {create.class, update.class}) + @Length(max = 50, message = "sparePartsName参数不能超出50个字符", groups = {create.class, update.class}) + private String sparePartsName; + + @NotNull(message = "warehouseId参数缺失", groups = {create.class, update.class}) + @Length(max = 100, message = "warehouseId参数不能超出100个字符", groups = {create.class, update.class}) + private Long warehouseId; + + @NotNull(message = "specificationsModel参数缺失", groups = {create.class, update.class}) + @Length(max = 50, message = "specificationsModel参数不能超出50个字符", groups = {create.class, update.class}) + private String specificationsModel; + + @NotNull(message = "unit参数缺失", groups = {create.class, update.class}) + @Length(max = 20, message = "unit参数不能超出20个字符", groups = {create.class, update.class}) + private String unit; + + @NotNull(message = "price参数缺失", groups = {create.class, update.class}) + private BigDecimal price; + + @NotNull(message = "quantity参数缺失", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class}) + private Integer quantity; + + @NotNull(message = "totalPrice参数缺失", groups = {create.class, update.class}) + private BigDecimal totalPrice; + +} diff --git a/admin/src/main/java/com/hcy/admin/validate/sparePartStockAudit/SparePartStockAuditParam.java b/admin/src/main/java/com/hcy/admin/validate/sparePartStockAudit/SparePartStockAuditParam.java index 25a494a..44e86ad 100644 --- a/admin/src/main/java/com/hcy/admin/validate/sparePartStockAudit/SparePartStockAuditParam.java +++ b/admin/src/main/java/com/hcy/admin/validate/sparePartStockAudit/SparePartStockAuditParam.java @@ -84,7 +84,7 @@ public class SparePartStockAuditParam implements Serializable { private String sparePartAuditId; // 备件审核id private List sparePartAuditList; //待入库的备件 - private Long outInWarehouseType; //出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) + private Integer outInWarehouseType; //出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) private String workOrderId; //工单号 private String orderId; //订单编号 diff --git a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java index 7df0644..37343e0 100644 --- a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java @@ -1,5 +1,6 @@ package com.hcy.admin.vo.client; +import com.hcy.common.entity.client.EquipmentModel; import lombok.Data; import java.io.Serializable; @@ -35,4 +36,6 @@ public class EquipmentListVo implements Serializable { private String deviceCode; // 设备码 private String createTime; // 创建时间 private String clientName; // 客户名称 + + private EquipmentModelDetailVo equipmentModel; //设备模块信息 } diff --git a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelDetailVo.java new file mode 100644 index 0000000..8728947 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelDetailVo.java @@ -0,0 +1,25 @@ +package com.hcy.admin.vo.client; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * EquipmentModelVo + */ +@Data +public class EquipmentModelDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 备件模块id + private Long equipmentId; // 备件id + private String modelNo; // 模块编号 + private String brand; // 品牌 + private Integer replaceFrequency; // 更换次数 + private Long userId; //安装人 + private Date installationTime; //安装时间 + private String installationName; //安装人名称 + +} diff --git a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelListVo.java b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelListVo.java new file mode 100644 index 0000000..d1afd27 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentModelListVo.java @@ -0,0 +1,25 @@ +package com.hcy.admin.vo.client; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * EquipmentModelVo + */ +@Data +public class EquipmentModelListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 备件模块id + private Long equipmentId; // 备件id + private String modelNo; // 模块编号 + private String brand; // 品牌 + private Integer replaceFrequency; // 更换次数 + private Long userId; //安装人 + private Date installationTime; //安装时间 + private String installationName; //安装人名称 + +} diff --git a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java index ef762c3..1afb4eb 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderDetailVo.java @@ -7,6 +7,7 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * MaintenanceOrderVo @@ -18,8 +19,8 @@ public class MaintenanceOrderDetailVo implements Serializable { private Long id; // id private String orderNo; // 订单编号 - private Long orderSource; // 订单来源 0-客户上报;1-系统创建;2-维修员创建;3-检修员创建;4-客服创建;5-维修主管创建 - private Long orderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-检测中;4-待客户确认;5-维修中;6-已完成;7-已退单;8-已关闭 + 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 Long equipmentId; // 设备id private Long faultId; // 故障id @@ -44,10 +45,16 @@ public class MaintenanceOrderDetailVo implements Serializable { private Long familiarFaultId; // 常见维修结论id private String familiarFaultDescription; // 常见维修结论描述 private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 + private Date createTime; // 创建时间 private String clientName; // 客户姓名 + private String clientDirector; // 客户负责人姓名 + private String clientPhone; //客户电话 + private Equipment equipment; //设备信息 private String faultName; //故障名称 private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 + private String receiverPhone; //接单人手机 + private List sparePartList; // 备件清单 } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java index f9c8e83..90e8726 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/MaintenanceOrderListVo.java @@ -1,5 +1,7 @@ package com.hcy.admin.vo.order; +import com.hcy.admin.vo.client.EquipmentModelDetailVo; +import com.hcy.common.entity.client.EquipmentModel; import lombok.Data; import java.io.Serializable; @@ -53,6 +55,11 @@ public class MaintenanceOrderListVo implements Serializable { private String clientName; // 客户姓名 private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 +<<<<<<< Updated upstream private String shortName; //客户简称 +======= + + private EquipmentModelDetailVo equipmentModel; //设备模块信息 +>>>>>>> Stashed changes } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartDetailVo.java new file mode 100644 index 0000000..f95be5d --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartDetailVo.java @@ -0,0 +1,27 @@ +package com.hcy.admin.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * OrderSparePartVo + */ +@Data +public class OrderSparePartDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // id + private Long sparePartsId; // 备件id + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private String warehouseName; // 所属仓库名称 + private String specificationsModel; // 规格型号 + private String unit; // 单位 + private BigDecimal price; // 价格 + private Long quantity; // 数量 + private BigDecimal totalPrice; // 总价 + +} diff --git a/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java new file mode 100644 index 0000000..18b6cfd --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/order/OrderSparePartListVo.java @@ -0,0 +1,28 @@ +package com.hcy.admin.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * OrderSparePartVo + */ +@Data +public class OrderSparePartListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // id + private Long maintenanceOrderId; //检修单id + private Long sparePartsId; // 备件id + private String sparePartsCode; // 备件编码 + private String sparePartsName; // 备件名称 + private Long warehouseId; // 所属仓库名称 + private String specificationsModel; // 规格型号 + private String unit; // 单位 + private BigDecimal unitPrice; // 价格 + private Integer quantity; // 数量 + private BigDecimal totalPrice; // 总价 + +} diff --git a/common/src/main/java/com/hcy/common/dto/order/MaintenanceOrderDto.java b/common/src/main/java/com/hcy/common/dto/order/MaintenanceOrderDto.java index ef4461d..79d4321 100644 --- a/common/src/main/java/com/hcy/common/dto/order/MaintenanceOrderDto.java +++ b/common/src/main/java/com/hcy/common/dto/order/MaintenanceOrderDto.java @@ -47,6 +47,7 @@ public class MaintenanceOrderDto implements Serializable { private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 private Integer isMaintain; //是否维修 0-维修 1-不维修 private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 + private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String faultName; //故障名称 private String equipmentNo; //设备编号 @@ -54,6 +55,7 @@ public class MaintenanceOrderDto implements Serializable { private String detailedAddress; //设备详情地址 private String clientName; // 客户姓名 private String creatorName; // 创建人姓名 + private String clientCreatorName; //客户创建人姓名 private String receiverName; // 接单人姓名 private Long equipmentProvinceId; //设备省id private Long equipmentDistrictId; //设备区id diff --git a/common/src/main/java/com/hcy/common/entity/client/EquipmentModel.java b/common/src/main/java/com/hcy/common/entity/client/EquipmentModel.java new file mode 100644 index 0000000..338b3c3 --- /dev/null +++ b/common/src/main/java/com/hcy/common/entity/client/EquipmentModel.java @@ -0,0 +1,27 @@ +package com.hcy.common.entity.client; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 【请填写功能名称】实体 + */ +@Data +public class EquipmentModel implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Long id; // 备件模块id + private Long equipmentId; // 备件id + private String modelNo; // 模块编号 + private String brand; // 品牌 + private Integer replaceFrequency; // 更换次数 + private Long userId; //安装人 + private Date installationTime; //安装时间 + +} \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java b/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java index 2338628..48db168 100644 --- a/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java +++ b/common/src/main/java/com/hcy/common/entity/order/MaintenanceOrder.java @@ -43,6 +43,7 @@ public class MaintenanceOrder implements Serializable { private Date cancelOrderTime; // 取消订单时间 private String cancelCause; // 取消原因 private String refuseMaintenanceCause; // 拒绝维修原因 + private String returnCause; //退回原因 private String remark; // 备注 private Long creatorId; // 创建人id private Date orderAccomplishTime; // 订单完成时间 @@ -54,4 +55,5 @@ public class MaintenanceOrder implements Serializable { private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 private Integer isMaintain; //是否维修 0-维修 1-不维修 private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 + private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 } \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java b/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java index 7c618ed..2c35b23 100644 --- a/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java +++ b/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java @@ -40,10 +40,9 @@ public class SparePartStockAudit implements Serializable { private Long createTime; // 创建时间 private Long updateTime; // 更新时间 private Long deleteTime; // 删除时间 - private String sparePartAuditId; // 备件审核id - private Long outInWarehouseType; // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) - private String workOrderId; //工单号 - private String orderId; //订单编号 + private Integer outInWarehouseType; // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) + private Long orderId; //订单编号 + private Integer orderType; // 0-检修工单 1-维修工单 private String shippingAddress; //收货地址 private String consigner; //发货人 private String consignerPhone; //发货人联系电话 diff --git a/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java b/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java new file mode 100644 index 0000000..c7a1a06 --- /dev/null +++ b/common/src/main/java/com/hcy/common/enums/SparePartStockAuditEnum.java @@ -0,0 +1,43 @@ +package com.hcy.common.enums; + +import com.google.common.collect.Maps; + +import java.util.Map; + +public enum SparePartStockAuditEnum { + + MAINTENANCE_ORDER(0, "检修工单"), + REPAIR_ORDER(1, "维修工单"), + + EXPRESSAGE(1,"物流快递"), + SELF_TAKE(2,"自行取件"), + HOME_DELIVERY(3,"送货上门"); + + private final int status; + private final String desc; + + SparePartStockAuditEnum(int status, String desc) { + this.status = status; + this.desc = desc; + } + + /** + * 获取状态码 + * + * @return Long + * @author fzr + */ + public int getStatus() { + return this.status; + } + + /** + * 获取提示 + * + * @return String + * @author fzr + */ + public String getDesc() { + return this.desc; + } +} diff --git a/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java b/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java index dfefbba..f7c4410 100644 --- a/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java +++ b/common/src/main/java/com/hcy/common/enums/audit/AuditStateEnum.java @@ -23,19 +23,19 @@ public enum AuditStateEnum { OVERDUE(7, "收货超期"), //审核结果(0=已通过,1=未通过) - NOTPASS(1,"未通过"), - ALREADYPASSED(0, "已通过"), + NOT_PASS(1,"未通过"), + ALREADY_PASSED(0, "已通过"), // 单据类型(0=入库单,1=出库单,2=仓库调拨单) - INWAREHOUSE(0, "入库单"), - OUTWAREHOUSE(1, "出库单"), + IN_WAREHOUSE(0, "入库单"), + OUT_WAREHOUSE(1, "出库单"), ALLOT(2,"仓库调拨单"), // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) - STOCKIN(0,"采购入库"), - STOCKTRANSFER(1, "库存调拨"), - GETMATERIALS(2,"员工领料"), - SALESOUTBOUND(3, "销售出库"); + STOCK_IN(0,"采购入库"), + STOCK_TRANSFER(1, "库存调拨"), + STAFF_MATERIALS(2,"员工领料"), + SALE_OUT_OF_WAREHOUSE(3, "销售出库"); private final int status; private final String desc; diff --git a/common/src/main/java/com/hcy/common/enums/order/MaintenanceOrderStatusEnum.java b/common/src/main/java/com/hcy/common/enums/order/MaintenanceOrderStatusEnum.java index 41f0aaf..4e5b5ae 100644 --- a/common/src/main/java/com/hcy/common/enums/order/MaintenanceOrderStatusEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/MaintenanceOrderStatusEnum.java @@ -20,6 +20,7 @@ public enum MaintenanceOrderStatusEnum { FINISHED(6,"已完成"), CHARGEBACK(7,"已退单"), CLOSED(8,"已关闭"), + RETURNED(9,"已退回"), NEAREST_TO_ME(0,"离我最近"), TIME_PRIORITY(1,"时间优先"), @@ -31,7 +32,10 @@ public enum MaintenanceOrderStatusEnum { NOT_MAINTAIN(1,"不维修"), MY_WAREHOUSE(0,"我的仓库"), - PUBLIC_WAREHOUSE(1,"全部仓库"),; + PUBLIC_WAREHOUSE(1,"全部仓库"), + + NOT_RECEIPT(0,"未收货"), + CONFIRM_RECEIPT(1,"确认收货"); private final int status; private final String desc; diff --git a/common/src/main/java/com/hcy/common/mapper/address/UserAddressMapper.java b/common/src/main/java/com/hcy/common/mapper/address/UserAddressMapper.java index f932899..a17d0a6 100644 --- a/common/src/main/java/com/hcy/common/mapper/address/UserAddressMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/address/UserAddressMapper.java @@ -3,10 +3,20 @@ package com.hcy.common.mapper.address; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.entity.address.UserAddress; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * 用户地址Mapper */ @Mapper public interface UserAddressMapper extends IBaseMapper { + + /** + * 通过地址id获取地址信息 + * @param id 地址id + * @return UserAddress + */ + @Select("select * from la_user_address where is_delete = 0 and id = #{id}") + UserAddress findUserAddressById(@Param("id") Integer id); } diff --git a/common/src/main/java/com/hcy/common/mapper/client/ClientContactsMapper.java b/common/src/main/java/com/hcy/common/mapper/client/ClientContactsMapper.java index 676bb18..543def2 100644 --- a/common/src/main/java/com/hcy/common/mapper/client/ClientContactsMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/client/ClientContactsMapper.java @@ -12,4 +12,7 @@ import org.apache.ibatis.annotations.Select; @Mapper public interface ClientContactsMapper extends IBaseMapper { + @Select("select * from la_client_contacts where is_delete = 0 and user_id = #{userId}") + ClientContacts findClientContactsByUserId(@Param("userId") Long userId); + } diff --git a/common/src/main/java/com/hcy/common/mapper/client/EquipmentModelMapper.java b/common/src/main/java/com/hcy/common/mapper/client/EquipmentModelMapper.java new file mode 100644 index 0000000..f6d32fd --- /dev/null +++ b/common/src/main/java/com/hcy/common/mapper/client/EquipmentModelMapper.java @@ -0,0 +1,23 @@ +package com.hcy.common.mapper.client; + +import com.hcy.common.core.basics.IBaseMapper; +import com.hcy.common.entity.client.EquipmentModel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 备件模块Mapper + */ +@Mapper +public interface EquipmentModelMapper extends IBaseMapper { + + /** + * 根据设备id查询设备模块信息 + * @param equipmentId 设备id + * @return EquipmentModel + */ + @Select("select * from la_equipment_model where equipment_id = #{equipmentId}") + EquipmentModel findEquipmentModelByEquipmentId(@Param("equipmentId") Long equipmentId); +} + diff --git a/common/src/main/java/com/hcy/common/mapper/order/OrderSparePartMapper.java b/common/src/main/java/com/hcy/common/mapper/order/OrderSparePartMapper.java index ccf8e12..4902195 100644 --- a/common/src/main/java/com/hcy/common/mapper/order/OrderSparePartMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/order/OrderSparePartMapper.java @@ -3,10 +3,22 @@ package com.hcy.common.mapper.order; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.dto.order.OrderSparePart; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 订单配件Mapper */ @Mapper public interface OrderSparePartMapper extends IBaseMapper { + + /** + * 根据检修工单id查询工单 + * @param maintenanceOrderId 检修工单id + * @return 数量 + */ + @Select("SELECT * FROM la_order_spare_part WHERE maintenance_order_id = #{maintenanceOrderId}") + List findOrderSparePartByMaintenanceOrderId(@Param("maintenanceOrderId") Long maintenanceOrderId); } diff --git a/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java b/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java index 2df328a..4562c36 100644 --- a/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/sparePart/SparePartMapper.java @@ -2,7 +2,6 @@ package com.hcy.common.mapper.sparePart; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.github.pagehelper.page.PageParams; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.dto.SparePartDto; import com.hcy.common.entity.sparePart.SparePart; @@ -20,5 +19,7 @@ public interface SparePartMapper extends IBaseMapper { @Select("select * from la_spare_part where is_delete = 0 and id = #{id}") - SparePart findSparePart(@Param("id") Long id); + SparePart findSparePartById(@Param("id") Long id); + + } diff --git a/common/src/main/resources/mapper/MaintenanceOrderMapper.xml b/common/src/main/resources/mapper/MaintenanceOrderMapper.xml index afdf2e2..435bff0 100644 --- a/common/src/main/resources/mapper/MaintenanceOrderMapper.xml +++ b/common/src/main/resources/mapper/MaintenanceOrderMapper.xml @@ -12,6 +12,7 @@ le.name as equipmentName, le.detailed_address as detailedAddress, lsaa.nickname as creatorName, + lcc.`name` as clientCreatorName, lu.username as receiverName, le.province_id as equipmentProvinceId, le.district_id as equipmentDistrictId, @@ -25,6 +26,7 @@ LEFT JOIN la_fault AS lf On lf.id = lmo.fault_id LEFT JOIN la_system_auth_admin AS lsaa ON lsaa.id = lmo.creator_id LEFT JOIN la_user AS lu ON lu.id = lmo.receiver_id + LEFT JOIN la_client_contacts AS lcc ON lcc.user_id = lmo.creator_id lmo.is_delete = 0 @@ -37,7 +39,7 @@ and lc.client_name like concat('%',#{param.clientName},'%') - and lsaa.username like concat('%',#{param.creatorName},'%') + and (lsaa.username like concat('%',#{param.creatorName},'%') or lcc.name like concat('%',#{param.creatorName},'%')) and lu.username like concat('%',#{param.receiverName},'%') diff --git a/front/src/main/java/com/hcy/front/controller/order/MaintenanceOrderController.java b/front/src/main/java/com/hcy/front/controller/order/MaintenanceOrderController.java index 3c941bb..c9c83cb 100644 --- a/front/src/main/java/com/hcy/front/controller/order/MaintenanceOrderController.java +++ b/front/src/main/java/com/hcy/front/controller/order/MaintenanceOrderController.java @@ -116,4 +116,37 @@ public class MaintenanceOrderController { iMaintenanceOrderService.confirmServiceOfferPrice(maintenanceOrderParam); return AjaxResult.success(); } + + /** + * 备件领用申请 + * @param maintenanceOrderParam 参数 + * @return Object + */ + @PostMapping("/sparePartsRequisition") + public Object sparePartsRequisition(@RequestBody MaintenanceOrderParam maintenanceOrderParam) { + iMaintenanceOrderService.sparePartsRequisition(maintenanceOrderParam); + return AjaxResult.success(); + } + + /** + * 填写回单 + * @param maintenanceOrderParam 参数 + * @return Object + */ + @PostMapping("/fillInReceipt") + public Object fillInReceipt(@RequestBody MaintenanceOrderParam maintenanceOrderParam) { + iMaintenanceOrderService.fillInReceipt(maintenanceOrderParam); + return AjaxResult.success(); + } + + /** + * 更新备件模块 + * @param maintenanceOrderParam 参数 + * @return Object + */ + @PostMapping("/updateEquipmentModel") + public Object updateEquipmentModel(@RequestBody MaintenanceOrderParam maintenanceOrderParam) { + iMaintenanceOrderService.updateEquipmentModel(maintenanceOrderParam); + return AjaxResult.success(); + } } diff --git a/front/src/main/java/com/hcy/front/service/impl/LoginServiceImpl.java b/front/src/main/java/com/hcy/front/service/impl/LoginServiceImpl.java index 4a33332..4d2648f 100644 --- a/front/src/main/java/com/hcy/front/service/impl/LoginServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/impl/LoginServiceImpl.java @@ -150,14 +150,18 @@ public class LoginServiceImpl implements ILoginService { //第一次登录小程序 if(userAuth == null){ - UserAuth auth = new UserAuth(); - auth.setUserId(user.getId()); - auth.setOpenid(openId); - auth.setUnionid(unionId); - auth.setClient(client); - auth.setCreateTime(System.currentTimeMillis() / 1000); - auth.setUpdateTime(System.currentTimeMillis() / 1000); - userAuthMapper.insert(auth); + try{ + UserAuth auth = new UserAuth(); + auth.setUserId(user.getId()); + auth.setOpenid(openId); + auth.setUnionid(unionId); + auth.setClient(client); + auth.setCreateTime(System.currentTimeMillis() / 1000); + auth.setUpdateTime(System.currentTimeMillis() / 1000); + userAuthMapper.insert(auth); + }catch (Exception e){ + throw new OperateException("账号已存在"); + } }else{ // 更新微信标识 if (StringUtils.isNotEmpty(openId)) { diff --git a/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java b/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java index f244572..3df30da 100644 --- a/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java +++ b/front/src/main/java/com/hcy/front/service/order/IMaintenanceOrderService.java @@ -65,4 +65,22 @@ public interface IMaintenanceOrderService { * @param maintenanceOrderParam 参数 */ void confirmServiceOfferPrice(MaintenanceOrderParam maintenanceOrderParam); + + /** + * 备件领用申请 + * @param maintenanceOrderParam 参数 + */ + void sparePartsRequisition(MaintenanceOrderParam maintenanceOrderParam); + + /** + * 填写回单 + * @param maintenanceOrderParam 参数 + */ + void fillInReceipt(MaintenanceOrderParam maintenanceOrderParam); + + /** + * 更新备件模块 + * @param maintenanceOrderParam 参数 + */ + void updateEquipmentModel(MaintenanceOrderParam maintenanceOrderParam); } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java index 3ced18a..b871364 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/MaintenanceOrderServiceImpl.java @@ -1,36 +1,40 @@ package com.hcy.front.service.order.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; import com.hcy.common.dto.order.MaintenanceOrderDto; import com.hcy.common.dto.order.OrderSparePart; +import com.hcy.common.entity.address.UserAddress; import com.hcy.common.entity.client.Client; +import com.hcy.common.entity.client.ClientContacts; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.client.EquipmentModel; import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.sparePart.SparePart; +import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; -import com.hcy.common.entity.warehouse.Warehouse; -import com.hcy.common.enums.ClientEnum; import com.hcy.common.enums.ClientStatusEnum; +import com.hcy.common.enums.SparePartStockAuditEnum; +import com.hcy.common.enums.audit.AuditStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.exception.OperateException; +import com.hcy.common.mapper.address.UserAddressMapper; +import com.hcy.common.mapper.client.ClientContactsMapper; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; +import com.hcy.common.mapper.client.EquipmentModelMapper; import com.hcy.common.mapper.fault.FaultMapper; import com.hcy.common.mapper.order.MaintenanceOrderMapper; import com.hcy.common.mapper.order.OrderSparePartMapper; import com.hcy.common.mapper.sparePart.SparePartMapper; +import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; -import com.hcy.common.mapper.warehouse.WarehouseMapper; -import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.ToolsUtil; import com.hcy.front.FrontThreadLocal; import com.hcy.front.service.order.IMaintenanceOrderService; @@ -38,19 +42,19 @@ import com.hcy.front.service.region.IDevRegionService; import com.hcy.front.validate.PageParam; import com.hcy.front.validate.order.MaintenanceOrderParam; import com.hcy.front.validate.warehouse.SparePartParam; +import com.hcy.front.vo.client.EquipmentDetailVo; +import com.hcy.front.vo.client.EquipmentModelDetailVo; import com.hcy.front.vo.order.MaintenanceOrderDetailVo; import com.hcy.front.vo.order.MaintenanceOrderListVo; import com.hcy.front.vo.order.OrderSparePartListVo; -import com.hcy.front.vo.order.OrderStaffVo; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; -import java.sql.ClientInfoStatus; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -84,10 +88,22 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { SparePartMapper sparePartMapper; @Resource - WarehouseMapper warehouseMapper; + OrderSparePartMapper orderSparePartMapper; @Resource - OrderSparePartMapper orderSparePartMapper; + ClientContactsMapper clientContactsMapper; + + @Resource + UserAddressMapper userAddressMapper; + + @Resource + IDevRegionService regionService; + + @Resource + SparePartStockAuditMapper sparePartStockAuditMapper; + + @Resource + EquipmentModelMapper equipmentModelMapper; private final DecimalFormat df = new DecimalFormat ("#.#"); @@ -104,7 +120,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); model.setOrderNo(getOrderNo()); - model.setCreatorId(maintenanceOrderParam.getClientId()); + model.setCreatorId(FrontThreadLocal.getUserId().longValue()); maintenanceOrderMapper.insert(model); } @@ -120,6 +136,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { .like(MaintenanceOrder::getOrderNo, formatDate) .orderByDesc(MaintenanceOrder::getOrderNo) .last("limit 1")); + //当天日期加第一条流水号,如果数据库不存在,则代表今天第一条数据 if (lastmMaintenanceOrder == null) { return currentOrderNo.toString(); @@ -219,10 +236,14 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { if(maintenanceOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){ maintenanceOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue()); - maintenanceOrderDto.setOrderStatusIds("1,2,7,8"); + if(StringUtils.isEmpty(maintenanceOrderParam.getOrderStatusIds())){ + maintenanceOrderDto.setOrderStatusIds("1,2,7,8"); + } }else{ + if(StringUtils.isEmpty(maintenanceOrderParam.getOrderStatusIds())){ + maintenanceOrderDto.setOrderStatusIds("0,1,2,7,8"); + } maintenanceOrderDto.setClientId(maintenanceOrderDto.getClientId()); - maintenanceOrderDto.setOrderStatusIds("0,1,2,7,8"); } List returnData = new LinkedList<>(); @@ -314,19 +335,34 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { //设置客户信息 Client client = clientMapper.selectById(maintenanceOrder.getClientId()); - vo.setClientName(client.getClientName()); + if(client != null){ + vo.setClientName(client.getClientName()); + } //设置设备信息 Equipment equipment = equipmentMapper.selectById(maintenanceOrder.getEquipmentId()); - vo.setEquipment(equipment); + if(equipment != null){ + vo.setEquipment(equipment); + } //设置故障信息 Fault fault = faultMapper.findFaultById(maintenanceOrder.getFaultId()); - vo.setFaultName(fault.getName()); + if(fault != null){ + vo.setFaultName(fault.getName()); + } - //设置接收人姓名 - SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectById(maintenanceOrder.getCreatorId()); - vo.setCreatorName(systemAuthAdmin.getNickname()); + //设置创建人姓名 + if(maintenanceOrder.getOrderSource() == OrderStateEnum.CUSTOMER_REPORT.getStatus()){ + ClientContacts clientContacts = clientContactsMapper.findClientContactsByUserId(maintenanceOrder.getCreatorId()); + if(clientContacts != null){ + vo.setCreatorName(clientContacts.getName()); + } + }else{ + SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectById(maintenanceOrder.getCreatorId()); + if(systemAuthAdmin != null){ + vo.setCreatorName(systemAuthAdmin.getNickname()); + } + } //设置接单人名称 User user = userMapper.selectById(maintenanceOrder.getReceiverId()); @@ -334,6 +370,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setReceiverName(user.getNickname()); } + Fault familiarFault = faultMapper.findFaultById(maintenanceOrder.getFamiliarFaultId()); + if(familiarFault != null){ + vo.setFamiliarFaultName(familiarFault.getName()); + } + //设置配件清单 List orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper() .eq(OrderSparePart::getMaintenanceOrderId, maintenanceOrder.getId())); @@ -345,6 +386,17 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { } vo.setSparePartList(orderSparePartListVos); + EquipmentModel equipmentModel = equipmentModelMapper.findEquipmentModelByEquipmentId(maintenanceOrder.getEquipmentId()); + EquipmentModelDetailVo equipmentModelDetailVo = new EquipmentModelDetailVo(); + if(equipmentModel != null){ + BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo); + + User insetallUser = userMapper.selectById(equipmentModel.getUserId()); + equipmentModelDetailVo.setInstallationName(insetallUser.getUsername()); + } + //设置设备模块信息 + vo.setEquipmentModel(equipmentModelDetailVo); + return vo; } @@ -369,8 +421,15 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { BigDecimal actualAmount = new BigDecimal("0"); + //判断是否已经服务报价过了 + List orderSpareParts = orderSparePartMapper.findOrderSparePartByMaintenanceOrderId(maintenanceOrder.getId()); + for (OrderSparePart orderSparePart : orderSpareParts) { + //已经报过价就将之前的报价信息删除 + orderSparePartMapper.deleteById(orderSparePart); + } + for (SparePartParam item : maintenanceOrderParam.getSparePartParams()) { - SparePart sparePart = sparePartMapper.findSparePart(item.getId()); + SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); OrderSparePart orderSparePart = new OrderSparePart(); BeanUtils.copyProperties(sparePart, orderSparePart); @@ -416,4 +475,105 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { maintenanceOrderMapper.updateById(maintenanceOrder); } + + @Override + @Transactional + public void sparePartsRequisition(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(maintenanceOrder, "数据不存在"); + + //我的仓库领用 + if(maintenanceOrder.getWarehouseType() == MaintenanceOrderStatusEnum.MY_WAREHOUSE.getStatus()){ + //获取领用备件列表 + List orderSpareParts = orderSparePartMapper.findOrderSparePartByMaintenanceOrderId(maintenanceOrder.getId()); + for (OrderSparePart item : orderSpareParts) { + //获取备件信息 + SparePart sparePart = sparePartMapper.findSparePartById(item.getSparePartsId()); + if(sparePart.getQuantity() >= item.getQuantity()){ + //扣除对应的数量 + sparePart.setQuantity(sparePart.getQuantity() - item.getQuantity()); + sparePartMapper.updateById(sparePart); + }else{ + throw new OperateException("仓库中【" + sparePart.getSparePartsName() + "】备件数量不足" + item.getQuantity() + sparePart.getUnit() + ",配件领用失败"); + } + } + maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); + maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); + maintenanceOrderMapper.updateById(maintenanceOrder); + }else{ + User user = userMapper.selectById(FrontThreadLocal.getUserId()); + UserAddress userAddress = userAddressMapper.findUserAddressById(maintenanceOrderParam.getAddressId()); + + SparePartStockAudit sparePartStockAudit = new SparePartStockAudit(); + sparePartStockAudit.setOrderId(maintenanceOrderParam.getId()); + sparePartStockAudit.setOrderType(SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()); + sparePartStockAudit.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus()); + sparePartStockAudit.setOutInWarehouseType(AuditStateEnum.STAFF_MATERIALS.getStatus()); + sparePartStockAudit.setConsignee(user.getUsername()); + sparePartStockAudit.setPhone(user.getMobile()); + //获取检修员选择地址 + Map regionMap = regionService.getRegionMap(); + sparePartStockAudit.setShippingAddress(regionMap.get(userAddress.getProvinceId()) + + regionMap.get(userAddress.getCityId()) + + regionMap.get(userAddress.getDistrictId()) + + userAddress.getAddress()); + sparePartStockAudit.setDeliveryMethod(maintenanceOrderParam.getDeliveryMethod()); + sparePartStockAudit.setRemark(maintenanceOrderParam.getRemark()); + + sparePartStockAuditMapper.insert(sparePartStockAudit); + } + } + + @Override + public void fillInReceipt(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(maintenanceOrder, "数据不存在"); + Assert.notNull(maintenanceOrderParam.getFamiliarFaultId(), "结论类型不可为空"); + Assert.notNull(maintenanceOrderParam.getFamiliarFaultDescription(), "结论描述不可为空"); + + if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus() && + maintenanceOrder.getIsConfirmReceipt() == MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()){ + + maintenanceOrder.setFamiliarFaultId(maintenanceOrderParam.getFamiliarFaultId()); + maintenanceOrder.setFamiliarFaultDescription(maintenanceOrderParam.getFamiliarFaultDescription()); + maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); + maintenanceOrder.setOrderAccomplishTime(new Date()); + maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); + + maintenanceOrderMapper.updateById(maintenanceOrder); + }else{ + throw new OperateException("当前订单状态无法进行填写回单操作"); + } + } + + @Override + public void updateEquipmentModel(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(maintenanceOrder, "数据不存在"); + Assert.notNull(maintenanceOrderParam.getModelNo(), "模块编码不可为空"); + Assert.notNull(maintenanceOrderParam.getBrand(), "品牌不可为空"); + + if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()){ + EquipmentModel equipmentModel = equipmentModelMapper.findEquipmentModelByEquipmentId(maintenanceOrder.getEquipmentId()); + //未替换过创建设备模块信息 + if(equipmentModel == null){ + equipmentModel = new EquipmentModel(); + equipmentModel.setEquipmentId(maintenanceOrder.getEquipmentId()); + equipmentModel.setModelNo(maintenanceOrderParam.getModelNo()); + equipmentModel.setBrand(maintenanceOrderParam.getBrand()); + equipmentModel.setReplaceFrequency(1); + equipmentModel.setUserId(FrontThreadLocal.getUserId().longValue()); + equipmentModelMapper.insert(equipmentModel); + }else{ + //替换过则设备模块替换次数加1 + equipmentModel.setModelNo(maintenanceOrderParam.getModelNo()); + equipmentModel.setBrand(maintenanceOrderParam.getBrand()); + equipmentModel.setReplaceFrequency(equipmentModel.getReplaceFrequency() + 1); + equipmentModelMapper.updateById(equipmentModel); + } + }else{ + throw new OperateException("当前订单状态无法进行模块替换"); + } + } + } diff --git a/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java b/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java index fa30632..6151c27 100644 --- a/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java +++ b/front/src/main/java/com/hcy/front/validate/order/MaintenanceOrderParam.java @@ -102,10 +102,15 @@ public class MaintenanceOrderParam implements Serializable { private double latitude; // 纬度 private Integer queryType; // 查询类型 0-离我最近 1-时间优先 private String likeWork; //关键字 + private String orderStatusIds; //订单状态ids //服务报价列表 private List sparePartParams; private Integer isClient; //是否客户 0-客户端 1-检修员端 private Integer isMaintain; //是否维修 0-维修 1-不维修 private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 + private Integer deliveryMethod; //配送方式 0-物流 1-上门取件 2-送货上门 + private Integer addressId; //地址id + private String modelNo; //模块编码 + private String brand; //品牌 } diff --git a/front/src/main/java/com/hcy/front/vo/client/EquipmentModelDetailVo.java b/front/src/main/java/com/hcy/front/vo/client/EquipmentModelDetailVo.java new file mode 100644 index 0000000..2c9622e --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/client/EquipmentModelDetailVo.java @@ -0,0 +1,25 @@ +package com.hcy.front.vo.client; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * EquipmentModelVo + */ +@Data +public class EquipmentModelDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 备件模块id + private Long equipmentId; // 备件id + private String modelNo; // 模块编号 + private String brand; // 品牌 + private Integer replaceFrequency; // 更换次数 + private Long userId; //安装人 + private Date installationTime; //安装时间 + private String installationName; //安装人名称 + +} diff --git a/front/src/main/java/com/hcy/front/vo/client/EquipmentModelListVo.java b/front/src/main/java/com/hcy/front/vo/client/EquipmentModelListVo.java new file mode 100644 index 0000000..e08006d --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/client/EquipmentModelListVo.java @@ -0,0 +1,24 @@ +package com.hcy.front.vo.client; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * EquipmentModelVo + */ +@Data +public class EquipmentModelListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 备件模块id + private Long equipmentId; // 备件id + private String modelNo; // 模块编号 + private String brand; // 品牌 + private Integer replaceFrequency; // 更换次数 + private Long userId; //安装人 + private Date installationTime; //安装时间 + +} diff --git a/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderDetailVo.java b/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderDetailVo.java index dbe3a24..d0198b2 100644 --- a/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderDetailVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderDetailVo.java @@ -1,6 +1,8 @@ package com.hcy.front.vo.order; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.client.EquipmentModel; +import com.hcy.front.vo.client.EquipmentModelDetailVo; import lombok.Data; import java.io.Serializable; @@ -38,6 +40,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private Date cancelOrderTime; // 取消订单时间 private String cancelCause; // 取消原因 private String refuseMaintenanceCause; // 拒绝维修原因 + private String returnCause; //退回原因 private String remark; // 备注 private Long creatorId; // 创建人id private Date orderAccomplishTime; // 订单完成时间 @@ -46,6 +49,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 private Integer isMaintain; //是否维修 0-维修 1-不维修 private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 + private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private Date createTime; // 创建时间 private String clientName; // 客户姓名 @@ -54,5 +58,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 + private String familiarFaultName; //结论名称 private List sparePartList; // 备件清单 + private EquipmentModelDetailVo equipmentModel; //设备模块信息 } diff --git a/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderListVo.java b/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderListVo.java index 21f62b1..afb7d0a 100644 --- a/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderListVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/MaintenanceOrderListVo.java @@ -36,6 +36,7 @@ public class MaintenanceOrderListVo implements Serializable { private Date cancelOrderTime; // 取消订单时间 private String cancelCause; // 取消原因 private String refuseMaintenanceCause; // 拒绝维修原因 + private String returnCause; //退回原因 private String remark; // 备注 private Long creatorId; // 创建人id private Date orderAccomplishTime; // 订单完成时间 @@ -48,6 +49,7 @@ public class MaintenanceOrderListVo implements Serializable { private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库 private Double distance; //距离 private String practicalDistance; //实际距离 + private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货 private String faultName; //故障名称 private String equipmentNo; //设备编号 diff --git a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java index b209dcb..53459fc 100644 --- a/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/OrderSparePartListVo.java @@ -14,13 +14,14 @@ public class OrderSparePartListVo implements Serializable { private static final long serialVersionUID = 1L; private Long id; // id + private Long maintenanceOrderId; //检修单id private Long sparePartsId; // 备件id private String sparePartsCode; // 备件编码 private String sparePartsName; // 备件名称 - private String warehouseName; // 所属仓库名称 + private Long warehouseId; // 所属仓库名称 private String specificationsModel; // 规格型号 private String unit; // 单位 - private BigDecimal price; // 价格 + private BigDecimal unitPrice; // 价格 private Integer quantity; // 数量 private BigDecimal totalPrice; // 总价