diff --git a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java index d04ad0a..4afe607 100644 --- a/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java +++ b/admin/src/main/java/com/hcy/admin/controller/order/RepairOrderController.java @@ -186,19 +186,19 @@ public class RepairOrderController { return AjaxResult.success(); } - /** - * 维修模块派单 - 重新派单 - * - * @author hcy - * @param repairOrderParam 参数 - * @return Object - */ - @Log(title = "维修模块派单 - 重新派单") - @PostMapping("/reorder") - public Object reorder(@Validated(value = RepairOrderParam.update.class) @RequestBody RepairOrderParam repairOrderParam) { - iRepairOrderService.reorder(repairOrderParam); - return AjaxResult.success(); - } +// /** +// * 维修模块派单 - 重新派单 +// * +// * @author hcy +// * @param repairOrderParam 参数 +// * @return Object +// */ +// @Log(title = "维修模块派单 - 重新派单") +// @PostMapping("/reorder") +// public Object reorder(@Validated(value = RepairOrderParam.update.class) @RequestBody RepairOrderParam repairOrderParam) { +// iRepairOrderService.reorder(repairOrderParam); +// return AjaxResult.success(); +// } /** * 维修模块 - 返修确认 diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderShippingServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderShippingServiceImpl.java index 0311261..2e95a9f 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderShippingServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/RepairOrderShippingServiceImpl.java @@ -36,6 +36,7 @@ import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.order.RepairOrderShippingMapper; import com.hcy.common.mapper.setting.DictDataMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; +import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.excel.EasyExcelUtil; import com.hcy.common.utils.excel.LocalImageModifyStrategy; @@ -352,6 +353,7 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi OfferDetailEntity offerDetail = new OfferDetailEntity(); //送货单 List releaseRecordListExcelList = new LinkedList<>(); + Map releaseRecordListExcelMap = new HashMap<>(); int index = 1; //功率字典 @@ -367,66 +369,167 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi offerDetail.setCreator(contentAdmin.getUsername()); } - List repairOrderShippings = repairOrderShippingMapper.selectList(new LambdaQueryWrapper() - .in(RepairOrderShipping::getId, params.getIds()) - .orderByDesc(RepairOrderShipping::getDeliveryTime)); +// List repairOrderShippings = repairOrderShippingMapper.selectList(new LambdaQueryWrapper() +// .in(RepairOrderShipping::getId, params.getIds()) +// .orderByDesc(RepairOrderShipping::getDeliveryTime)); - repairOrderMapper.selectList(new LambdaQueryWrapper() +// for (RepairOrderShipping item : repairOrderShippings) { +// ReleaseRecordListExcel releaseRecordListExcel = new ReleaseRecordListExcel(); +// BeanUtils.copyProperties(item, releaseRecordListExcel); +// //序号 +// releaseRecordListExcel.setIndex(index); +// //规格型号 +// RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper() +// .eq(RepairOrder::getShippingId, item.getId()) +// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) +// .orderByDesc(RepairOrder::getCreateTime) +// .last("limit 1")); +// releaseRecordListExcel.setModuleNumber(repairOrder.getModuleNumber()); +// releaseRecordListExcel.setModelCode(repairOrder.getModuleCode()); // 料号 +// //工单编号 +// ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper() +// .eq(ParentRepairOrder::getId, repairOrder.getParentRepairOrderId())); +// releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo()); +// +// //单位 +// releaseRecordListExcel.setUnit("PCS"); +// +// //备注 功率 + 本次交货数量 + 返修结论 例如:20KW,5台OK +// //模块功率(0=10kw,1=20kw,2=30kw,3=40kw,4=50kw,5=60kw,6=70kw) +// String modulePower = distMap.get(repairOrder.getModulePower().toString()); +// +// //1、查询出维修结论报废的数量 +// Integer scrapCount = repairOrderMapper.selectCount(new LambdaQueryWrapper() +// .eq(RepairOrder::getShippingId, item.getId()) +// .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.SCRAP.getStatus()) +// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)); +// +// //2、查询出维修结论ok的数量 +// Integer okCount = repairOrderMapper.selectCount(new LambdaQueryWrapper() +// .eq(RepairOrder::getShippingId, item.getId()) +// .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.OK.getStatus()) +// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)); +// +// if(scrapCount != 0 && okCount != 0){ +// releaseRecordListExcel.setRemark(modulePower + "," + scrapCount + "台报废," + okCount + "台OK"); +// }else if(scrapCount != 0){ +// releaseRecordListExcel.setRemark(modulePower + "," + scrapCount + "台报废"); +// }else if(okCount != 0){ +// releaseRecordListExcel.setRemark(modulePower + "," + okCount + "台OK"); +// } +// +// //送货日期 +// releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(item.getDeliveryTime(), TimeConstant.DATE_FORMAT)); +// +// releaseRecordListExcelList.add(releaseRecordListExcel); +// index++; // 序号累计 +// offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计 +// } + + List repairOrders = repairOrderMapper.selectList(new LambdaQueryWrapper() .in(RepairOrder::getShippingId, params.getIds()) .orderByDesc(RepairOrder::getCreateTime)); - - for (RepairOrderShipping item : repairOrderShippings) { - ReleaseRecordListExcel releaseRecordListExcel = new ReleaseRecordListExcel(); - BeanUtils.copyProperties(item, releaseRecordListExcel); - //序号 - releaseRecordListExcel.setIndex(index); - //规格型号 - RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper() - .eq(RepairOrder::getShippingId, item.getId()) - .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE) - .orderByDesc(RepairOrder::getCreateTime) - .last("limit 1")); - releaseRecordListExcel.setModuleNumber(repairOrder.getModuleNumber()); - releaseRecordListExcel.setModelCode(repairOrder.getModuleCode()); // 料号 - //工单编号 - ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper() - .eq(ParentRepairOrder::getId, repairOrder.getParentRepairOrderId())); - releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo()); - //单位 - releaseRecordListExcel.setUnit("PCS"); + for (RepairOrder item : repairOrders) { + ReleaseRecordListExcel releaseRecordListExcel = null; - //备注 功率 + 本次交货数量 + 返修结论 例如:20KW,5台OK - //模块功率(0=10kw,1=20kw,2=30kw,3=40kw,4=50kw,5=60kw,6=70kw) - String modulePower = distMap.get(repairOrder.getModulePower().toString()); - - //1、查询出维修结论报废的数量 - Integer scrapCount = repairOrderMapper.selectCount(new LambdaQueryWrapper() - .eq(RepairOrder::getShippingId, item.getId()) - .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.SCRAP.getStatus()) - .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)); - - //2、查询出维修结论ok的数量 - Integer okCount = repairOrderMapper.selectCount(new LambdaQueryWrapper() - .eq(RepairOrder::getShippingId, item.getId()) - .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.OK.getStatus()) - .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)); - - if(scrapCount != 0 && okCount != 0){ - releaseRecordListExcel.setRemark(modulePower + "," + scrapCount + "台报废," + okCount + "台OK"); - }else if(scrapCount != 0){ - releaseRecordListExcel.setRemark(modulePower + "," + scrapCount + "台报废"); - }else if(okCount != 0){ - releaseRecordListExcel.setRemark(modulePower + "," + okCount + "台OK"); + String key = item.getModuleNumber() + item.getModulePower(); + if(releaseRecordListExcelMap.get(key) != null){ + releaseRecordListExcel = releaseRecordListExcelMap.get(key); } - //送货日期 - releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(item.getDeliveryTime(), TimeConstant.DATE_FORMAT)); + //客户名称 + Client client = clientMapper.selectOne(new LambdaQueryWrapper() + .eq(Client::getId, item.getClientId())); + if(client != null){ + offerDetail.setClientName(client.getClientName()); + } - releaseRecordListExcelList.add(releaseRecordListExcel); - index++; // 序号累计 - offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计 + if(releaseRecordListExcel == null){ + releaseRecordListExcel = new ReleaseRecordListExcel(); + //序号 + releaseRecordListExcel.setIndex(index); + //单位 + releaseRecordListExcel.setUnit("PCS"); + //工单编号 + ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper() + .eq(ParentRepairOrder::getId, item.getParentRepairOrderId())); + releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo()); + //型号 + releaseRecordListExcel.setModuleNumber(item.getModuleNumber()); + //功率 + releaseRecordListExcel.setPower(distMap.get(item.getModulePower().toString())); + //订单数量 + releaseRecordListExcel.setOrderAmount(1); + //本次交货数量 + releaseRecordListExcel.setTheQuantityShipped(1); + + //发货记录 + RepairOrderShipping repairOrderShipping = repairOrderShippingMapper.selectOne(new LambdaQueryWrapper() + .eq(RepairOrderShipping::getId, item.getShippingId())); + //累计交货数量 + releaseRecordListExcel.setAccumulativeQuantityShipped(repairOrderShipping.getAccumulativeQuantityShipped()); + //未交数量 + releaseRecordListExcel.setUndeliveredQuantity(repairOrderShipping.getUndeliveredQuantity()); + + //维修结论 + if(item.getMaintenanceResult() != null){ + String result; + if(item.getMaintenanceResult() == 0){ + result = "报废"; + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc(),1); + }else{ + result = "OK"; + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc(),1); + } + releaseRecordListExcel.setRemark(1 + "台" + result); + }else{ + //备注 功率 + 本次交货数量 + 返修结论 例如:20KW,5台OK + releaseRecordListExcel.setRemark(1 + "台"); + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc(),1); + } + + //送货日期 + releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(repairOrderShipping.getDeliveryTime(), TimeConstant.DATE_FORMAT)); + releaseRecordListExcelList.add(releaseRecordListExcel); + releaseRecordListExcelMap.put(key,releaseRecordListExcel); + index++; // 序号累计 + }else{ + releaseRecordListExcel.setOrderAmount(releaseRecordListExcel.getOrderAmount() + 1); + releaseRecordListExcel.setTheQuantityShipped(releaseRecordListExcel.getTheQuantityShipped() + 1); + if(item.getMaintenanceResult() != null){ + String result; + if(item.getMaintenanceResult() == 0){ + result = "报废"; + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc() + ,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) + 1); + }else{ + result = "OK"; + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc() + ,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) + 1); + } + releaseRecordListExcel.setRemark(1 + "台" + result); + }else{ + //备注 功率 + 本次交货数量 + 返修结论 例如:20KW,5台OK + releaseRecordListExcel.setRemark(1 + "台"); + releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc() + ,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) + 1); + } + StringBuilder builder = new StringBuilder(); + for (String flag : releaseRecordListExcel.getRemarkMap().keySet()) { + if(RepairOrderStatusEnum.SCRAP.getDesc().equals(flag)){ + builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台报废" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台报废"); + }else if(RepairOrderStatusEnum.OK.getDesc().equals(flag)){ + builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台OK" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台OK"); + }else if(RepairOrderStatusEnum.EMPTY.getDesc().equals(flag)){ + builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台"); + } + } + releaseRecordListExcel.setRemark(builder.toString()); + } + offerDetail.setTotalQty(offerDetail.getTotalQty() + 1); // 合计 } + WriteSheet sheet = EasyExcel.writerSheet(0).build(); writer.fill(offerDetail, sheet); writer.fill(releaseRecordListExcelList, fillConfig, sheet); diff --git a/admin/src/main/java/com/hcy/admin/vo/excel/ReleaseRecordListExcel.java b/admin/src/main/java/com/hcy/admin/vo/excel/ReleaseRecordListExcel.java index 390707b..870ad1b 100644 --- a/admin/src/main/java/com/hcy/admin/vo/excel/ReleaseRecordListExcel.java +++ b/admin/src/main/java/com/hcy/admin/vo/excel/ReleaseRecordListExcel.java @@ -9,7 +9,9 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Data @Builder @@ -43,4 +45,13 @@ public class ReleaseRecordListExcel implements Serializable { private String remark; //备注 @ApiModelProperty(value = "送货日期") private String deliveryTime; + + private Map remarkMap; + + public Map getRemarkMap() { + if(remarkMap == null){ + remarkMap = new HashMap<>(); + } + return remarkMap; + } } diff --git a/admin/src/main/resources/templates/excel/deliveryNote.xlsx b/admin/src/main/resources/templates/excel/deliveryNote.xlsx index 70915c2..cf07a0d 100644 Binary files a/admin/src/main/resources/templates/excel/deliveryNote.xlsx and b/admin/src/main/resources/templates/excel/deliveryNote.xlsx differ diff --git a/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java b/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java index f917a6b..d13d365 100644 --- a/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/RepairOrderStatusEnum.java @@ -40,6 +40,7 @@ public enum RepairOrderStatusEnum { // 维修结论(0=报废,1=OK) SCRAP(0, "报废"), OK(1, "OK"), + EMPTY(2, "空"), // 事项(0=派单事项、1=发货事项) DISPATCH_ITEM(0,"派单事项"),