From f68344087c3819a5f1fe914fe2262c500386c0e0 Mon Sep 17 00:00:00 2001 From: dabin <2827029098@qq.com> Date: Thu, 29 Aug 2024 10:46:47 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90admin=E3=80=91=E6=96=B0=E5=A2=9E&?= =?UTF-8?q?=E4=BC=98=E5=8C=96#=201.=E6=96=B0=E5=A2=9E=E6=A3=80=E4=BF=AE?= =?UTF-8?q?=E5=8D=95=E9=85=8D=E4=BB=B6=E9=A2=86=E7=94=A8=202.=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=87=BA=E5=85=A5=E5=BA=93=E5=8D=95=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SparePartStockAuditController.java | 12 + .../impl/MaintenanceOrderServiceImpl.java | 22 +- .../ISparePartStockAuditService.java | 6 + .../impl/SparePartStockAuditServiceImpl.java | 331 ++++++++++++------ .../SparePartStockAuditParam.java | 6 +- .../vo/order/MaintenanceOrderDetailVo.java | 3 + .../SparePartStockAuditDetailVo.java | 9 +- .../SparePartStockAuditListVo.java | 4 +- .../common/dto/order/MaintenanceOrderDto.java | 1 + .../SparePartStockAudit.java | 2 +- .../common/enums/audit/AuditStateEnum.java | 9 +- .../SparePartAudit/SparePartAuditMapper.java | 5 +- .../SparePartStockAuditMapper.java | 8 + .../order/MaintenanceOrderController.java | 11 + .../order/IMaintenanceOrderService.java | 8 +- .../impl/MaintenanceOrderServiceImpl.java | 101 ++++-- .../vo/order/MaintenanceOrderDetailVo.java | 3 + .../vo/order/MaintenanceOrderListVo.java | 2 + .../SparePartStockAuditDetailVo.java | 59 ++++ .../SparePartStockAuditListVo.java | 57 +++ 20 files changed, 522 insertions(+), 137 deletions(-) create mode 100644 front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java create mode 100644 front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditListVo.java diff --git a/admin/src/main/java/com/hcy/admin/controller/sparePartStockAudit/SparePartStockAuditController.java b/admin/src/main/java/com/hcy/admin/controller/sparePartStockAudit/SparePartStockAuditController.java index 35244ab..b7cfd5b 100644 --- a/admin/src/main/java/com/hcy/admin/controller/sparePartStockAudit/SparePartStockAuditController.java +++ b/admin/src/main/java/com/hcy/admin/controller/sparePartStockAudit/SparePartStockAuditController.java @@ -121,6 +121,18 @@ public class SparePartStockAuditController { return AjaxResult.success(); } + /** + * 备件采购审核 + * @param sparePartStockAuditParam + * @return + */ + @Log(title = "备件采购审核") + @PostMapping("/purchaseAudit") + public Object purchaseAudit(@RequestBody SparePartStockAuditParam sparePartStockAuditParam) { + iSparePartStockAuditService.purchaseAudit(sparePartStockAuditParam); + return AjaxResult.success(); + } + /** * 库存比对接口,就是每次出入库审核的时候前端都要请求,如果库存不够就不审核了 * @param id 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 d820898..eb460ca 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 @@ -15,6 +15,7 @@ import com.hcy.admin.vo.order.MaintenanceOrderListVo; import com.hcy.admin.vo.order.MaintenanceOrderDetailVo; import com.hcy.admin.vo.order.OrderSparePartListVo; import com.hcy.admin.vo.order.repair.MaintenanceRepairDetailVo; +import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; import com.hcy.common.dto.order.MaintenanceOrderDto; @@ -27,6 +28,7 @@ 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.order.repair.MaintenanceRepair; +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; @@ -43,6 +45,7 @@ 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.order.repair.MaintenanceRepairMapper; +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; @@ -102,6 +105,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { @Resource WarehouseMapper warehouseMapper; + @Resource + SparePartStockAuditMapper sparePartStockAuditMapper; + /** * 检修订单列表 * @@ -222,6 +228,20 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { vo.setFaultName(fault.getName()); } + //设置常见维修结论 + Fault familiarFault = faultMapper.findFaultById(model.getFamiliarFaultId()); + if(familiarFault != null){ + vo.setFamiliarFaultName(familiarFault.getName()); + } + + //设置配件领用明细 + SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(model.getId()); + if(sparePartStockAudit != null){ + SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo(); + BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo); + vo.setSparePartStockAuditDetailVo(sparePartStockAuditDetailVo); + } + //设置配件清单 List orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper() .eq(OrderSparePart::getMaintenanceOrderId, model.getId())); @@ -286,7 +306,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { } MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findLastMaintenanceOrderByTime(TimeUtil.getCurrentTimeYYYYMMDD()); - model.setOrderNo(OrderUtil.getOrderNo(maintenanceOrder.getOrderNo())); + model.setOrderNo(OrderUtil.getOrderNo(maintenanceOrder == null ? "" :maintenanceOrder.getOrderNo())); model.setCreatorId(AdminThreadLocal.getAdminId().longValue()); maintenanceOrderMapper.insert(model); diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/ISparePartStockAuditService.java b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/ISparePartStockAuditService.java index 46cd35f..a46c8ac 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/ISparePartStockAuditService.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartStockAudit/ISparePartStockAuditService.java @@ -70,6 +70,12 @@ public interface ISparePartStockAuditService { */ void cancelAudit(Integer id); + /** + * 备件采购审核 + * @param sparePartStockAuditParam + */ + void purchaseAudit(SparePartStockAuditParam sparePartStockAuditParam); + /** * 库存对比 * @param id 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 1905578..30d4d6d 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 @@ -24,6 +24,7 @@ import com.hcy.common.entity.user.User; import com.hcy.common.entity.warehouse.Warehouse; import com.hcy.common.enums.SparePartStockAuditEnum; import com.hcy.common.enums.audit.AuditStateEnum; +import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper; import com.hcy.common.mapper.order.MaintenanceOrderMapper; @@ -49,7 +50,7 @@ import java.util.*; */ @Service public class SparePartStockAuditServiceImpl implements ISparePartStockAuditService { - + @Resource SparePartStockAuditMapper sparePartStockAuditMapper; @@ -77,48 +78,79 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库审核列表 * - * @author hcy * @param pageParam 分页参数 - * @param params 搜索参数 + * @param params 搜索参数 * @return PageResult + * @author hcy */ @Override public PageResult list(PageParam pageParam, SparePartStockAuditParam params) { - Integer page = pageParam.getPageNo(); + Integer page = pageParam.getPageNo(); Integer limit = pageParam.getPageSize(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(SparePartStockAudit::getIsDelete, GlobalConstant.NOT_DELETE) .eq(params.getReceiptType() != null, SparePartStockAudit::getReceiptType, params.getReceiptType()) .eq(params.getOutInWarehouseType() != null, SparePartStockAudit::getOutInWarehouseType, params.getOutInWarehouseType()) - .eq(StringUtils.isNotEmpty(params.getReceiptNumber()), SparePartStockAudit::getReceiptNumber, params.getReceiptNumber()) + .like(StringUtils.isNotEmpty(params.getReceiptNumber()), SparePartStockAudit::getReceiptNumber, params.getReceiptNumber()) .eq(params.getAuditState() != null, SparePartStockAudit::getAuditState, params.getAuditState()) - .eq(params.getWarehouseId() != null,SparePartStockAudit::getWarehouseId,params.getWarehouseId()) + .eq(params.getWarehouseId() != null, SparePartStockAudit::getWarehouseId, params.getWarehouseId()) + .eq(params.getDeliveryMethod() != null, SparePartStockAudit::getDeliveryMethod, params.getDeliveryMethod()) + .eq(params.getPurchaseStatus() != null, SparePartStockAudit::getPurchaseStatus, params.getPurchaseStatus()) + .ge(StringUtils.isNotEmpty(params.getCreateTimeStart()), SparePartStockAudit::getCreateTime, params.getCreateTimeStart()) + .le(StringUtils.isNotEmpty(params.getCreateTimeEnd()), SparePartStockAudit::getCreateTime, params.getCreateTimeEnd()) .orderByDesc(SparePartStockAudit::getCreateTime); + if(params.getOrderType() == null){ + //如果当前不是配件采购则将配件采购出入库单排除 + if (params.getOutInWarehouseType() == null) { + if (params.getReceiptType() == null) { + queryWrapper.isNull(SparePartStockAudit::getPurchaseStatus) + .or(orQuery -> orQuery.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.UNREVIEWED.getStatus()) + .ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.AUDITED.getStatus()) + .ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.CANCELED_AUDIT.getStatus()) + .ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.FILLING_OUT.getStatus())); + } else { + queryWrapper.isNull(SparePartStockAudit::getPurchaseStatus); + } + }else{ + if(StringUtils.isEmpty(params.getConsignee())){ + queryWrapper.and(query -> query.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.FILLING_OUT.getStatus()) + .ne(SparePartStockAudit::getPurchaseStatus,AuditStateEnum.CANCELED_AUDIT.getStatus())); + }else{ + queryWrapper.isNotNull(SparePartStockAudit::getPurchaseStatus); + } + } + } + //领用时间范围,配送方式查询 IPage iPage = sparePartStockAuditMapper.selectPage(new Page<>(page, limit), queryWrapper); List list = new ArrayList<>(); - for(SparePartStockAudit item : iPage.getRecords()) { + for (SparePartStockAudit item : iPage.getRecords()) { SparePartStockAuditListVo vo = new SparePartStockAuditListVo(); BeanUtils.copyProperties(item, vo); - vo.setRecipientAndPhone(item.getRecipient() + "/" + item.getRecipientPhone()); //领料员工/联系电话 - vo.setSupplierPhone(item.getSupplier() + "/" + item.getPhone()); //领料员工/联系电话 + vo.setSupplierPhone(item.getSupplier() + "/" + item.getPhone()); //供应商/电话 - if(item.getOrderType() != null){ + if (item.getOrderType() != null) { User user = userMapper.selectById(item.getCreatorId()); vo.setCreator(user.getUsername()); - }else{ + item.setConsignee(user.getUsername()); + vo.setConsignerPhone(user.getUsername() + "/" + item.getPhone()); + vo.setRecipientAndPhone(user.getUsername() + "/" + item.getPhone()); //领料员工/联系电话 + } else { SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(item.getCreatorId()); - if(systemAuthAdmin != null){ + if (systemAuthAdmin != null) { vo.setCreator(systemAuthAdmin.getUsername()); + item.setConsignee(systemAuthAdmin.getUsername()); + vo.setConsignerPhone(systemAuthAdmin.getUsername() + "/" + item.getPhone()); + vo.setRecipientAndPhone(systemAuthAdmin.getUsername() + "/" + item.getPhone()); //领料员工/联系电话 } } int number = 0; //领用数量 - if(item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + if (item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()) { MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(item.getOrderId()); User user = userMapper.selectById(maintenanceOrder.getReceiverId()); @@ -129,7 +161,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi BeanUtils.copyProperties(orderSparePart, orderSparePartListVo); orderSparePartListVoList.add(orderSparePartListVo); - number += orderSparePart.getQuantity(); + number += orderSparePart.getQuantity(); } vo.setOrderSparePartListVoList(orderSparePartListVoList); @@ -137,7 +169,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi vo.setRecipient(user.getUsername()); vo.setRecipientPhone(user.getMobile()); vo.setRecipientNumber(number); - }else{ + } else { //获取待审核备件信息 List stockAuditId = sparePartAuditMapper.selectList( new QueryWrapper() @@ -158,27 +190,27 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi } //设置仓库名称 - if(AuditStateEnum.ALLOT.getStatus() == item.getOutInWarehouseType()){ + if (AuditStateEnum.ALLOT.getStatus() == item.getReceiptType()) { // 调入仓库名 Warehouse importWarehouseName = warehouseMapper.findWarehouseById(item.getImportWarehouse()); - if(importWarehouseName != null){ + if (importWarehouseName != null) { vo.setImportWarehouseName(importWarehouseName.getWarehouseName()); } // 调出仓库名 Warehouse exportWarehouseName = warehouseMapper.findWarehouseById(item.getExportWarehouse()); - if(exportWarehouseName != null){ + if (exportWarehouseName != null) { vo.setExportWarehouseName(exportWarehouseName.getWarehouseName()); } - }else{ + } else { Long warehouseId = item.getWarehouseId(); - if(item.getImportWarehouse() != null){ - warehouseId = item.getImportWarehouse(); - }else{ - warehouseId = item.getExportWarehouse(); + if (item.getImportWarehouse() != null) { + warehouseId = item.getImportWarehouse(); + } else { + warehouseId = item.getExportWarehouse(); } Warehouse warehouse = warehouseMapper.findWarehouseById(warehouseId); - if(warehouse != null){ + if (warehouse != null) { vo.setWarehouseName(warehouse.getWarehouseName()); } } @@ -192,9 +224,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库审核详情 * - * @author hcy * @param id 主键参数 * @return SparePartStockAudit + * @author hcy */ @Override public SparePartStockAuditDetailVo detail(Long id) { @@ -204,8 +236,18 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi SparePartStockAuditDetailVo vo = new SparePartStockAuditDetailVo(); BeanUtils.copyProperties(model, vo); + if (model.getOrderType() != null) { + User user = userMapper.selectById(model.getCreatorId()); + vo.setCreator(user.getUsername()); + } else { + SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(model.getCreatorId()); + if (systemAuthAdmin != null) { + vo.setCreator(systemAuthAdmin.getUsername()); + } + } + //获取待审核备件信息 - if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){ + if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()) { MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(model.getOrderId()); User user = userMapper.selectById(maintenanceOrder.getReceiverId()); @@ -220,7 +262,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi vo.setWorkOrderNo(maintenanceOrder.getOrderNo()); vo.setRecipient(user.getUsername()); vo.setRecipientPhone(user.getMobile()); - }else{ + } else { //获取待审核备件信息 List sparePartAuditList = sparePartAuditMapper.findSparePartAuditByStockAuditId(model.getId()); //获取备件信息 @@ -228,34 +270,33 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi for (SparePartAudit sparePartAudit : sparePartAuditList) { SparePartAuditListVo sparePartAuditListVo = new SparePartAuditListVo(); BeanUtils.copyProperties(sparePartAudit, sparePartAuditListVo); - listVo.add(sparePartAuditListVo); } vo.setSparePartAuditList(listVo); } //设置仓库名称 - if(AuditStateEnum.ALLOT.getStatus() == model.getOutInWarehouseType()){ + if (AuditStateEnum.ALLOT.getStatus() == model.getReceiptType()) { // 调入仓库名 Warehouse importWarehouseName = warehouseMapper.findWarehouseById(model.getImportWarehouse()); - if(importWarehouseName != null){ + if (importWarehouseName != null) { vo.setImportWarehouseName(importWarehouseName.getWarehouseName()); } // 调出仓库名 Warehouse exportWarehouseName = warehouseMapper.findWarehouseById(model.getExportWarehouse()); - if(exportWarehouseName != null){ + if (exportWarehouseName != null) { vo.setExportWarehouseName(exportWarehouseName.getWarehouseName()); } - }else{ - Long warehouseId = model.getWarehouseId(); - if(model.getImportWarehouse() != null){ - warehouseId = model.getImportWarehouse(); - }else{ - warehouseId = model.getExportWarehouse(); + } else { + Long warehouseId; + if (model.getImportWarehouse() != null) { + warehouseId = model.getImportWarehouse(); + } else { + warehouseId = model.getExportWarehouse(); } Warehouse warehouse = warehouseMapper.findWarehouseById(warehouseId); - if(warehouse != null){ + if (warehouse != null) { vo.setWarehouseName(warehouse.getWarehouseName()); } } @@ -266,8 +307,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库审核新增 * - * @author hcy * @param sparePartStockAuditParam 参数 + * @author hcy */ @Override @Transactional @@ -281,15 +322,6 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi // 获取当前的用户 model.setCreatorId(AdminThreadLocal.getAdminId()); - if(sparePartStockAuditParam.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus()){ - model.setExportWarehouse(sparePartStockAuditParam.getWarehouseId()); - }else if(sparePartStockAuditParam.getReceiptType() == AuditStateEnum.IN_WAREHOUSE.getStatus()){ - model.setImportWarehouse(sparePartStockAuditParam.getWarehouseId()); - }else if(sparePartStockAuditParam.getReceiptType() == AuditStateEnum.ALLOT.getStatus()){ - model.setExportWarehouse(sparePartStockAuditParam.getWarehouseId()); - model.setImportWarehouse(sparePartStockAuditParam.getWarehouseId()); - } - sparePartStockAuditMapper.insert(model); List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); @@ -297,8 +329,10 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi SparePart sparePart = sparePartMapper.findSparePartById(item.getId()); SparePartAudit sparePartAudit = new SparePartAudit(); BeanUtils.copyProperties(sparePart, sparePartAudit); + sparePartAudit.setId(null); sparePartAudit.setStockAuditId(model.getId()); + sparePartAudit.setSparePartsId(sparePart.getId()); sparePartAudit.setCount(item.getCount()); sparePartAuditMapper.insert(sparePartAudit);//插入备件审核信息 } @@ -307,49 +341,73 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库审核编辑 * - * @author hcy * @param sparePartStockAuditParam 参数 + * @author hcy */ @Override + @Transactional public void edit(SparePartStockAuditParam sparePartStockAuditParam) { - SparePartStockAudit model = sparePartStockAuditMapper.findSparePartStockAuditById(sparePartStockAuditParam.getId()); - Assert.notNull(model, "数据不存在!"); + SparePartStockAudit orlModel = sparePartStockAuditMapper.findSparePartStockAuditById(sparePartStockAuditParam.getId()); + Assert.notNull(orlModel, "数据不存在!"); + + SparePartStockAudit model = new SparePartStockAudit(); + BeanUtils.copyProperties(sparePartStockAuditParam, model); //删除已保存的备件信息 - List sparePartAudits = sparePartAuditMapper.findSparePartAuditByStockAuditId(model.getId()); + List sparePartAudits = sparePartAuditMapper.findSparePartAuditByStockAuditId(orlModel.getId()); for (SparePartAudit sparePartAudit : sparePartAudits) { sparePartAudit.setIsDelete(GlobalConstant.DELETE); sparePartAuditMapper.updateById(sparePartAudit); } - //新增新编辑备件信息 + //新增出入库审核备件信息 List sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); - for (SparePartAudit sparePartAudit : sparePartAuditList) { - sparePartAudit.setStockAuditId(model.getId()); - sparePartAuditMapper.insert(sparePartAudit); - } + for (SparePartAudit item : sparePartAuditList) { + SparePart sparePart; + if (item.getSparePartsId() != null) { + sparePart = sparePartMapper.findSparePartById(item.getSparePartsId()); + } else { + sparePart = sparePartMapper.findSparePartById(item.getId()); + } + SparePartAudit sparePartAudit = new SparePartAudit(); + BeanUtils.copyProperties(sparePart, sparePartAudit); - BeanUtils.copyProperties(model,sparePartStockAuditParam); + sparePartAudit.setId(null); + sparePartAudit.setStockAuditId(orlModel.getId()); + sparePartAudit.setSparePartsId(sparePart.getId()); + sparePartAudit.setCount(item.getCount()); + sparePartAuditMapper.insert(sparePartAudit);//插入备件审核信息 + } //如果是已取消状态编辑改成未审核 - if(model.getAuditState() == AuditStateEnum.CANCELED.getStatus()){ + if (orlModel.getAuditState() == AuditStateEnum.CANCELED.getStatus()) { model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); } + + if (orlModel.getPurchaseStatus() != null && orlModel.getPurchaseStatus() == AuditStateEnum.CANCELED_AUDIT.getStatus()) { + model.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + } + //已审核,但不通过的,重新编辑之后状态也要变成未审核,审核结果改成空 - if(model.getAuditState() == AuditStateEnum.AUDITED.getStatus() - && model.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ + if (orlModel.getAuditState() == AuditStateEnum.AUDITED.getStatus() + && orlModel.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()) { model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); model.setAuditResult(null); } + if (orlModel.getPurchaseStatus() != null && orlModel.getPurchaseStatus() == AuditStateEnum.AUDITED.getStatus()) { + model.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + model.setAuditResult(null); + } + sparePartStockAuditMapper.updateById(model); } /** * 备件出入库审核删除 * - * @author hcy * @param id 主键ID + * @author hcy */ @Override public void del(Long id) { @@ -364,14 +422,15 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库审核 * - * @author hcy * @param sparePartStockAuditParam 参数 + * @author hcy */ @Override + @Transactional public void audit(SparePartStockAuditParam sparePartStockAuditParam) { SparePartStockAudit model = sparePartStockAuditMapper.selectOne( new QueryWrapper() - .eq("id", sparePartStockAuditParam.getId()) + .eq("id", sparePartStockAuditParam.getId()) .eq("is_delete", 0) .last("limit 1")); @@ -379,11 +438,11 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi model.setId(sparePartStockAuditParam.getId()); model.setAuditResult(sparePartStockAuditParam.getAuditResult()); // 审核结果(0=已通过,1=未通过) - if(sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ - model.setPurchaseStatus(AuditStateEnum.NOTPASSSTATE.getStatus()); //审核未通过 + if (model.getPurchaseStatus() != null && sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()) { + model.setPurchaseStatus(AuditStateEnum.NOT_PASS_STATE.getStatus()); //审核未通过 } model.setAuditState(AuditStateEnum.AUDITED.getStatus()); // 审核状态(0=未审核,1=已审核,2=已取消) - model.setAuditTime(System.currentTimeMillis() / 1000); // 审核时间 + model.setAuditTime(new Date()); // 审核时间 model.setAuditIdea(sparePartStockAuditParam.getAuditIdea()); // 审核意见 // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 @@ -393,8 +452,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("stock_audit_id", model.getId()) .eq("is_delete", 0) ); - if(model.getReceiptType() == AuditStateEnum.IN_WAREHOUSE.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ + if (model.getReceiptType() == AuditStateEnum.IN_WAREHOUSE.getStatus() + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()) { //已通过审核的入库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -406,8 +465,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi sparePart.setQuantity(sparePart.getQuantity() + sparePartAudit.getCount()); sparePartMapper.updateById(sparePart); } - }else if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ + } else if (model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()) { // 通过审核的出库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -417,19 +476,18 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if(sparePart.getQuantity() >= sparePartAudit.getCount()){ + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { sparePart.setQuantity(sparePart.getQuantity() - sparePartAudit.getCount()); - if(model.getPurchaseStatus() != null && model.getPurchaseStatus() == AuditStateEnum.CHECKPENDING.getStatus()){ - model.setPurchaseStatus(AuditStateEnum.WAITDELIVER.getStatus()); //审核通过改成待发货 - } - }else{ + } else { throw new OperateException("备件库存数量不足,请联系客服人员!"); } sparePartMapper.updateById(sparePart); } - - }else if(model.getReceiptType() == AuditStateEnum.ALLOT.getStatus() - && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()){ + if (model.getPurchaseStatus() != null && model.getPurchaseStatus() == AuditStateEnum.CHECK_PENDING.getStatus()) { + model.setPurchaseStatus(AuditStateEnum.WAITDELIVER.getStatus()); //审核通过改成待发货 + } + } else if (model.getReceiptType() == AuditStateEnum.ALLOT.getStatus() + && model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()) { //通过审核的调拨单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -441,9 +499,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if(sparePart.getQuantity() >= sparePartAudit.getCount()){ + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { sparePart.setQuantity(sparePart.getQuantity() - sparePartAudit.getCount()); - }else{ + } else { throw new OperateException("备件库存数量不足,请联系客服人员!"); } sparePartMapper.updateById(sparePart); @@ -456,10 +514,10 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); //入库时判断入库仓库是否有该备件,没有就新增新的配件 - if(inSparePart != null){ + if (inSparePart != null) { inSparePart.setQuantity(inSparePart.getQuantity() + sparePartAudit.getCount()); sparePartMapper.updateById(inSparePart); - }else{ + } else { SparePart addSparePart = new SparePart(); addSparePart.setSparePartsCode(sparePart.getSparePartsCode());//备件编码 addSparePart.setSparePartsName(sparePart.getSparePartsName());//备件名称 @@ -472,7 +530,19 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi } } + } + //管理员检修单审核不通过 + if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus() && + sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()){ + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(model.getOrderId()); + if(maintenanceOrder != null){ + maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); + maintenanceOrder.setReturnCause(sparePartStockAuditParam.getAuditIdea()); + maintenanceOrderMapper.updateById(maintenanceOrder); + } + model.setAuditResult(null); // 审核结果(0=已通过,1=未通过) + model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); } sparePartStockAuditMapper.updateById(model); @@ -481,8 +551,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi /** * 备件出入库取消审核 * - * @author hcy * @param id 主键ID + * @author hcy */ @Override public void cancelAudit(Integer id) { @@ -493,16 +563,79 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .last("limit 1")); Assert.notNull(model, "数据不存在!"); - model.setAuditState(AuditStateEnum.CANCELED.getStatus()); //取消审核 + + if (model.getPurchaseStatus() != null) { + model.setPurchaseStatus(AuditStateEnum.CANCELED_AUDIT.getStatus()); //取消审核 + } else { + model.setAuditState(AuditStateEnum.CANCELED.getStatus()); //取消审核 + } + + sparePartStockAuditMapper.updateById(model); + } + + @Override + @Transactional + public void purchaseAudit(SparePartStockAuditParam sparePartStockAuditParam) { + SparePartStockAudit model = sparePartStockAuditMapper.selectOne( + new QueryWrapper() + .eq("id", sparePartStockAuditParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + // 配件领用状态 1=未通过,2=待管理员审核 + model.setPurchaseStatus(sparePartStockAuditParam.getPurchaseStatus()); + model.setPurchaseIdea(sparePartStockAuditParam.getPurchaseIdea()); // 采购意见 + + //仓管员检修单审核不通过 + if(model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus() && + sparePartStockAuditParam.getPurchaseStatus() == AuditStateEnum.NOT_PASS_STATE.getStatus()){ + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(model.getOrderId()); + if(maintenanceOrder != null){ + maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus()); + maintenanceOrder.setReturnCause(sparePartStockAuditParam.getPurchaseIdea()); + maintenanceOrderMapper.updateById(maintenanceOrder); + } + } + + // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 + //获取待审核备件信息 + List stockAuditId = sparePartAuditMapper.selectList( + new QueryWrapper() + .eq("stock_audit_id", model.getId()) + .eq("is_delete", 0) + ); + if (model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() + && model.getPurchaseStatus() == AuditStateEnum.CHECK_PENDING.getStatus()) { + // 通过审核的出库单 + //获取备件信息 + for (SparePartAudit sparePartAudit : stockAuditId) { + SparePart sparePart = sparePartMapper.selectOne( + new QueryWrapper() + .eq("id", sparePartAudit.getSparePartsId()) + .eq("is_delete", 0) + .last("limit 1")); + // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { + model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); + } else { + throw new OperateException("备件库存数量不足,请联系客服人员!"); + } + sparePartMapper.updateById(sparePart); + } + } + sparePartStockAuditMapper.updateById(model); } //库存比对接口,就是每次出入库审核的时候前端都要请求,如果库存不够就不审核了 - public void inventoryComparison(Integer id){ + @Override + public void inventoryComparison(Integer id) { SparePartStockAudit model = sparePartStockAuditMapper.selectOne( new QueryWrapper() - .eq("id", id) + .eq("id", id) .eq("is_delete", 0) .last("limit 1")); @@ -515,7 +648,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("stock_audit_id", model.getId()) .eq("is_delete", 0) ); - if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus()){ + if (model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus()) { // 通过审核的出库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -525,13 +658,13 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if(sparePart.getQuantity() >= sparePartAudit.getCount()){ - }else{ + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { + } else { throw new OperateException(sparePart.getSparePartsName() + "备件库存数量不足,请联系客服人员!"); } } - }else if(model.getReceiptType() == AuditStateEnum.ALLOT.getStatus()){ + } else if (model.getReceiptType() == AuditStateEnum.ALLOT.getStatus()) { //通过审核的调拨单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -543,8 +676,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if(sparePart.getQuantity() >= sparePartAudit.getCount()){ - }else{ + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { + } else { throw new OperateException(sparePart.getSparePartsName() + "备件库存数量不足,请联系客服人员!"); } @@ -577,8 +710,8 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi ); - if(model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() - && model.getPurchaseStatus() == AuditStateEnum.CHECKPENDING.getStatus()){ + if (model.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus() + && model.getPurchaseStatus() == AuditStateEnum.CHECK_PENDING.getStatus()) { // 通过审核的出库单 //获取备件信息 for (SparePartAudit sparePartAudit : stockAuditId) { @@ -588,9 +721,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi .eq("is_delete", 0) .last("limit 1")); // 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足 - if(sparePart.getQuantity() >= sparePartAudit.getCount()){ + if (sparePart.getQuantity() >= sparePartAudit.getCount()) { model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus()); - }else{ + } else { throw new OperateException("备件库存数量不足,请联系客服人员!"); } sparePartMapper.updateById(sparePart); @@ -609,7 +742,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi public void logisticsSending(SparePartStockAuditParam sparePartStockAuditParam) { SparePartStockAudit model = sparePartStockAuditMapper.selectOne( new QueryWrapper() - .eq("id", sparePartStockAuditParam.getId()) + .eq("id", sparePartStockAuditParam.getId()) .eq("is_delete", 0) .last("limit 1")); @@ -634,7 +767,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi public void receiving(SparePartStockAuditParam sparePartStockAuditParam) { SparePartStockAudit model = sparePartStockAuditMapper.selectOne( new QueryWrapper() - .eq("id", sparePartStockAuditParam.getId()) + .eq("id", sparePartStockAuditParam.getId()) .eq("is_delete", 0) .last("limit 1")); 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 44e86ad..4117f76 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 @@ -56,8 +56,6 @@ public class SparePartStockAuditParam implements Serializable { // @NotNull(message = "handlingTime参数缺失", groups = {create.class, update.class}) private Date handlingTime; - - //@NotNull(message = "consignee参数缺失", groups = {create.class, update.class}) @Length(max = 255, message = "consignee参数不能超出255个字符", groups = {create.class, update.class}) private String consignee; @@ -101,4 +99,8 @@ public class SparePartStockAuditParam implements Serializable { private Integer recipientNumber; //领用数量 private Integer purchaseStatus; //配件领用状态(0=待审核,1=未通过,2=待管理员审核,3=待发货,4=待收货,5=已完成) private String purchaseIdea; //采购意见 + private String orderType; // 0-检修工单 1-维修工单 + + private String createTimeStart; //创建时间 + private String createTimeEnd; //创建时间 } 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 c65d474..674321c 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 @@ -2,6 +2,7 @@ package com.hcy.admin.vo.order; import com.hcy.admin.vo.client.EquipmentDetailVo; import com.hcy.admin.vo.order.repair.MaintenanceRepairDetailVo; +import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.common.entity.client.Equipment; import lombok.Data; @@ -56,6 +57,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private String clientPhone; //客户电话 private EquipmentDetailVo equipment; //设备信息 + private String familiarFaultName; //常见维修结论名称 private String faultName; //故障名称 private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 @@ -63,4 +65,5 @@ public class MaintenanceOrderDetailVo implements Serializable { private Integer clientType; //维修类型 private List sparePartList; // 备件清单 private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息 + private SparePartStockAuditDetailVo sparePartStockAuditDetailVo; //备件领用申请 } diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java index 7a67718..4f2def9 100644 --- a/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java @@ -26,17 +26,15 @@ public class SparePartStockAuditDetailVo implements Serializable { private Long warehouseId; // 所属仓库 private Long importWarehouse; // 调入仓库 private Long exportWarehouse; // 调出仓库 - private Long supplier; // 供应商 - private String responsiblePerson; // 经办人 - private String handlingTime; // 经办时间 + private String supplier; // 供应商 private String consignee; // 收货单位(人员) private Integer auditState; // 审核状态(0=未审核,1=已审核,2=已取消) private Integer auditResult; // 审核结果(0=已通过,1=未通过) - private String auditTime; // 审核时间 + private Date auditTime; // 审核时间 private String auditIdea; // 审核意见 private String phone; // 联系电话 private String remark; // 备注 - private String sparePartAuditId; // 备件审核id + private Integer sparePartAuditId; // 备件审核id private String warehouseName; // 所属仓库名 private String importWarehouseName; // 调入仓库名 private String exportWarehouseName; // 调出仓库名 @@ -63,4 +61,5 @@ public class SparePartStockAuditDetailVo implements Serializable { private List sparePartAuditList; //待入库的备件 private List orderSparePartListVoList; //订单配件 private String recipientAndPhone; //领用员工/联系电话 + private String creator; // 创建人 } diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditListVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditListVo.java index 4b4ab4c..bb90bd6 100644 --- a/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/sparePartStockAudit/SparePartStockAuditListVo.java @@ -26,7 +26,6 @@ public class SparePartStockAuditListVo implements Serializable { private Long exportWarehouse; // 调出仓库 private String supplier; // 供应商 private String responsiblePerson; // 经办人 - private String handlingTime; // 经办时间 private String consignee; // 收货单位(人员) private Integer auditState; // 审核状态(0=未审核,1=已审核,2=已取消) private Integer auditResult; // 审核结果(0=已通过,1=未通过) @@ -41,7 +40,8 @@ public class SparePartStockAuditListVo implements Serializable { private Integer outInWarehouseType; // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) private String workOrderId; //工单号 - private String orderId; //订单编号 + 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/dto/order/MaintenanceOrderDto.java b/common/src/main/java/com/hcy/common/dto/order/MaintenanceOrderDto.java index d171178..396703f 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 @@ -36,6 +36,7 @@ public class MaintenanceOrderDto implements Serializable { private Date cancelOrderTime; // 取消订单时间 private String cancelCause; // 取消原因 private String refuseMaintenanceCause; // 拒绝维修原因 + private String returnCause; //退回原因 private String remark; // 备注 private Long creatorId; // 创建人id private Date orderAccomplishTime; // 订单完成时间 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 a50067c..0073314 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 @@ -31,7 +31,7 @@ public class SparePartStockAudit implements Serializable { private Integer auditState; // 审核状态(0=未审核,1=已审核,2=已取消) @TableField(updateStrategy = FieldStrategy.IGNORED) private Integer auditResult; // 审核结果(0=已通过,1=未通过) - private Long auditTime; // 审核时间 + private Date auditTime; // 审核时间 private String auditIdea; // 审核意见 private String phone; // 联系电话 private String remark; // 备注 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 f7c4410..a352d66 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 @@ -14,13 +14,16 @@ public enum AuditStateEnum { UNREVIEWED(0, "待审核"), AUDITED(1, "已审核"), CANCELED(2,"已取消"), - NOTPASSSTATE(1, "未通过"), - CHECKPENDING(2, "待管理员审核"), + + + NOT_PASS_STATE(1, "未通过"), + CHECK_PENDING(2, "待管理员审核"), WAITDELIVER(3, "待发货"), WAITFORRECEIVING(4, "待收货"), DONE(5, "已完成"), - FILLINGOUT(6, "填写中"), + FILLING_OUT(6, "填写中"), OVERDUE(7, "收货超期"), + CANCELED_AUDIT(8, "已取消"), //审核结果(0=已通过,1=未通过) NOT_PASS(1,"未通过"), diff --git a/common/src/main/java/com/hcy/common/mapper/SparePartAudit/SparePartAuditMapper.java b/common/src/main/java/com/hcy/common/mapper/SparePartAudit/SparePartAuditMapper.java index 6f01999..6b0e2b7 100644 --- a/common/src/main/java/com/hcy/common/mapper/SparePartAudit/SparePartAuditMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/SparePartAudit/SparePartAuditMapper.java @@ -15,6 +15,9 @@ import java.util.List; @Mapper public interface SparePartAuditMapper extends IBaseMapper { - @Select("select * from la_spare_part_audit where stock_audit_id = #{id}") + @Select("select * from la_spare_part_audit where is_delete = 0 and stock_audit_id = #{id}") List findSparePartAuditByStockAuditId(@Param("id") Long id); + + @Select("select * from la_spare_part_audit where is_delete = 0 and id = #{id}") + SparePartAudit findSparePartAuditById(@Param("id") Long id); } diff --git a/common/src/main/java/com/hcy/common/mapper/sparePartStockAudit/SparePartStockAuditMapper.java b/common/src/main/java/com/hcy/common/mapper/sparePartStockAudit/SparePartStockAuditMapper.java index 9ee4af9..96eccdc 100644 --- a/common/src/main/java/com/hcy/common/mapper/sparePartStockAudit/SparePartStockAuditMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/sparePartStockAudit/SparePartStockAuditMapper.java @@ -24,4 +24,12 @@ public interface SparePartStockAuditMapper extends IBaseMapper 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); + SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(maintenanceOrder.getId()); + if(resultSps != null){ + //已有领取记录但被拒绝则重新审核 + resultSps.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + resultSps.setCreateTime(new Date()); + sparePartStockAuditMapper.updateById(resultSps); + }else{ + //没领过配件则创建新的领用单 + SparePartStockAudit lastSparePartStockAudit = sparePartStockAuditMapper.findLastSparePartStockAuditByTime(TimeUtil.getCurrentTimeYYYYMMDD()); + SparePartStockAudit sparePartStockAudit = new SparePartStockAudit(); + sparePartStockAudit.setReceiptNumber(OrderUtil.getOrderNo(lastSparePartStockAudit == null ? "" :lastSparePartStockAudit.getReceiptNumber())); + 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()); + sparePartStockAudit.setCreatorId(FrontThreadLocal.getUserId()); + sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); + //获取检修员选择地址 + if(maintenanceOrderParam.getAddressId() != null){ + UserAddress userAddress = userAddressMapper.findUserAddressById(maintenanceOrderParam.getAddressId()); + 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); + } } } @@ -624,6 +657,30 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService { } } + @Override + @Transactional + public void confirmReceipt(MaintenanceOrderParam maintenanceOrderParam) { + MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId()); + Assert.notNull(maintenanceOrder, "数据不存在"); + + SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(maintenanceOrder.getId()); + if(resultSps != null){ + if(resultSps.getPurchaseStatus() == AuditStateEnum.WAITFORRECEIVING.getStatus()){ + //确认收货后可进行填写回单操作 + maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); + maintenanceOrderMapper.updateById(maintenanceOrder); + + //将对应的配件领用订单改成已完成 + resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus()); + sparePartStockAuditMapper.updateById(resultSps); + }else{ + throw new OperateException("当前订单状态无法进行确认收货"); + } + }else{ + throw new OperateException("配件领用订单未生成,不可进行确认收货"); + } + } + /** * 统计工单状态数量 * 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 4424c3d..7219ce3 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 @@ -3,7 +3,9 @@ package com.hcy.front.vo.order; import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.client.EquipmentModel; import com.hcy.common.entity.order.repair.MaintenanceRepair; +import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit; import com.hcy.front.vo.client.EquipmentModelDetailVo; +import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import lombok.Data; import java.io.Serializable; @@ -63,6 +65,7 @@ public class MaintenanceOrderDetailVo implements Serializable { private List sparePartList; // 备件清单 private EquipmentModelDetailVo equipmentModel; //设备模块信息 private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息 + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 private String completeImg; // 完工照片 } 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 754a53c..16b79c0 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 @@ -1,6 +1,7 @@ package com.hcy.front.vo.order; import com.hcy.common.entity.order.repair.MaintenanceRepair; +import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import lombok.Data; import java.io.Serializable; @@ -60,6 +61,7 @@ public class MaintenanceOrderListVo implements Serializable { private String creatorName; // 创建人姓名 private String receiverName; // 接单人姓名 private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息 + private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息 private Integer pendingOrderCount; // 待接单数量 private Integer checkingCount; // 检测中数量 diff --git a/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java b/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java new file mode 100644 index 0000000..df340be --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditDetailVo.java @@ -0,0 +1,59 @@ +package com.hcy.front.vo.sparePartStockAudit; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * SparePartStockAuditVo + */ +@Data +public class SparePartStockAuditDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private String receiptNumber; // 单据编号 + private Long orderId; //订单编 + private Integer receiptType; // 单据类型(0=入库单,1=出库单,2=仓库调拨单) + private Long warehouseId; // 所属仓库 + private Long importWarehouse; // 调入仓库 + private Long exportWarehouse; // 调出仓库 + private String supplier; // 供应商 + private String consignee; // 收货单位(人员) + private Integer auditState; // 审核状态(0=未审核,1=已审核,2=已取消) + private Integer auditResult; // 审核结果(0=已通过,1=未通过) + private Date auditTime; // 审核时间 + private String auditIdea; // 审核意见 + private String phone; // 联系电话 + private String remark; // 备注 + private Integer sparePartAuditId; // 备件审核id + private String warehouseName; // 所属仓库名 + private String importWarehouseName; // 调入仓库名 + private String exportWarehouseName; // 调出仓库名 + private Integer outInWarehouseType; // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) + private String supplierPhone; // 供应商/电话 + private String consigneePhone; // 收货单位(人员)/电话 + private String workOrderId; //工单号 + private String shippingAddress; //收货地址 + private String consigner; //发货人 + private String consignerPhone; //发货人联系电话 + private String shipAddress; //发货地址 + private String logisticsCompany; //物流公司 + private String trackingNumber; //物流编号 + private Integer deliveryMethod; //配送方式(0=物流快递,1=上门取件,2=送货上门) + private BigDecimal salesPrice; //销售价 + private String recipient; //领用员工 + private String recipientPhone; //领用员工联系电话 + private Integer recipientNumber; //领用数量 + private Integer purchaseStatus; //配件领用状态(0=待审核,1=未通过,2=待管理员审核,3=待发货,4=待收货,5=已完成) + private Date createTime; // 创建时间 + private Integer orderType; // 0-检修工单 1-维修工单 + + private String workOrderNo; //工单号 + private String recipientAndPhone; //领用员工/联系电话 + private String creator; // 创建人 +} diff --git a/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditListVo.java b/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditListVo.java new file mode 100644 index 0000000..7804e1f --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/sparePartStockAudit/SparePartStockAuditListVo.java @@ -0,0 +1,57 @@ +package com.hcy.front.vo.sparePartStockAudit; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * SparePartStockAuditVo + */ +@Data +public class SparePartStockAuditListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private String receiptNumber; // 单据编号 + private Integer receiptType; // 单据类型(0=入库单,1=出库单,2=仓库调拨单) + private Long warehouseId; // 所属仓库 + private Long importWarehouse; // 调入仓库 + private Long exportWarehouse; // 调出仓库 + private String supplier; // 供应商 + private String responsiblePerson; // 经办人 + private String consignee; // 收货单位(人员) + private Integer auditState; // 审核状态(0=未审核,1=已审核,2=已取消) + private Integer auditResult; // 审核结果(0=已通过,1=未通过) + private Date auditTime; // 审核时间 + private Date createTime; // 创建时间 + private Date updateTime; // 更新时间 + private String sparePartAuditId; // 备件审核id + private String consigneePhone; // 收货单位(人员)/电话 + private String warehouseName; // 所属仓库名 + private String importWarehouseName; // 调入仓库名 + private String exportWarehouseName; // 调出仓库名 + private Integer outInWarehouseType; // 出入库类别(0=采购入库,1=库存调拨,2=员工领料,3=销售出库) + + private String workOrderId; //工单号 + private String orderId; //订单编号 + private String shippingAddress; //收货地址 + private String consigner; //发货人 + private String consignerPhone; //发货人联系电话 + private String shipAddress; //发货地址 + private String logisticsCompany; //物流公司 + private String trackingNumber; //物流编号 + private Integer deliveryMethod; //配送方式(0=物流快递,1=上门取件,2=送货上门) + private BigDecimal salesPrice; //销售价 + private String recipient; //领用员工 + private String recipientPhone; //领用员工联系电话 + private Integer recipientNumber; //领用数量 + private Integer purchaseStatus; //配件领用状态(0=待审核,1=未通过,2=待管理员审核,3=待发货,4=待收货,5=已完成) + + private String workOrderNo; //工单号 + private String recipientAndPhone; //领用员工/联系电话 + private String supplierPhone; // 供应商/电话 + private String creator; // 创建人 +}