From 6a1666ee1b0279734fa26989500ef3b212b0a06b Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Sat, 23 May 2026 15:17:04 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/wms/feign/WmsTaskClient.java | 12 +++++- .../wms/feign/WmsTaskClientImpl.java | 8 ++++ .../service/IStOtherReceiptRecordService.java | 4 ++ .../wms/service/impl/StGoodsServiceImpl.java | 30 +-------------- .../impl/StOtherReceiptRecordServiceImpl.java | 38 +++++++++++++++++++ 5 files changed, 62 insertions(+), 30 deletions(-) diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java index 732370305..3386bd723 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java @@ -26,6 +26,8 @@ public interface WmsTaskClient { String BUY_ORDER_APPLY = API_PREFIX + "/buyOrderApply"; + String SAVE_SUB_ORDER_WAREHOUSING = API_PREFIX + "/saveSubOrderWarehousing"; + /** * 物料状态监控同步erp */ @@ -40,4 +42,12 @@ public interface WmsTaskClient { @RequestParam("buyDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date buyDate, @RequestParam("checkUserId")Long checkUserId, @RequestParam("checkDate") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date checkDate) throws Exception; -} + + /** + * 子件入库 + */ + @PostMapping(SAVE_SUB_ORDER_WAREHOUSING) + void saveSubOrderWarehousing(@RequestParam("goodsCode")String goodsCode, @RequestParam("batchNo")String batchNo, @RequestParam("quantity")Double quantity, + @RequestParam("shId")Long shId, @RequestParam("slId")Long slId, @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date date, + @RequestParam("userId")Long userId) throws Exception; + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java index 01916a448..8466243d1 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java @@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.wms.service.IStBuyOrderService; import org.springblade.wms.service.IStGoodsExtService; +import org.springblade.wms.service.IStOtherReceiptRecordService; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @@ -29,6 +30,8 @@ public class WmsTaskClientImpl implements WmsTaskClient{ private final IStBuyOrderService stBuyOrderService; + private final IStOtherReceiptRecordService stOtherReceiptRecordService; + @Override public boolean executeGoodsStatusUpdate() { stGoodsExtService.executeGoodsStatusUpdate(); @@ -39,4 +42,9 @@ public class WmsTaskClientImpl implements WmsTaskClient{ public Long buyOrderApply(String goodsCode, Double buyQty, Long userId, Date buyDate, Long checkUserId, Date checkDate) throws Exception { return stBuyOrderService.buyOrderApplyFor(goodsCode, buyQty, userId, buyDate, checkUserId, checkDate); } + + @Override + public void saveSubOrderWarehousing(String goodsCode, String batchNo, Double quantity, Long shId, Long slId, Date date, Long userId) throws Exception { + stOtherReceiptRecordService.saveSubOrderWarehousing(goodsCode, batchNo, quantity, shId, slId, date, userId); + } } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStOtherReceiptRecordService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStOtherReceiptRecordService.java index e1a8a6c85..15abf1792 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStOtherReceiptRecordService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStOtherReceiptRecordService.java @@ -10,6 +10,7 @@ import org.springblade.wms.pojo.entity.StOtherReceiptRecord; import org.springblade.wms.pojo.entity.StStockInoutRecord; import org.springblade.wms.pojo.vo.StOtherReceiptRecordVO; +import java.util.Date; import java.util.List; /** @@ -45,5 +46,8 @@ public interface IStOtherReceiptRecordService extends BaseService public StGoods saveGoodsInfo(List prtnoList) throws Exception { StGoods goods = null; //查询物料信息 -// List pdmPartInfo = stHttpRequestService.getPdmPartInfo(prtnoList); - - List pdmPartInfo = new ArrayList<>(); - - StPdmPartDTO dto1 = new StPdmPartDTO(); - dto1.setPrtno("TEST-MAT-001"); - dto1.setReleaseno("V1.0"); - dto1.setDrwpartno("DWG-TEST-001"); - dto1.setPrtdesc("测试物料_环规"); - dto1.setMtlsgrt(7.85); - dto1.setPrttype("PART"); - dto1.setSource("自制"); - dto1.setMtlspcf("45#钢"); - dto1.setPrtum("PCS"); - dto1.setCavityno("1"); - dto1.setCplb("机械部件"); - dto1.setEcnno("ECN-TEST-001"); - dto1.setEnditem((short) 123); - dto1.setMtltmrk("45#钢"); - dto1.setPartLink("/pdm/part/TEST-MAT-001"); - dto1.setPriority("1"); - dto1.setPrtrevedit("Released"); - dto1.setPrtstd("GB/T 1234-2020"); - dto1.setPrtwt(0.5); - dto1.setRemark("测试物料"); - dto1.setTrademark("测试"); - dto1.setRcdchgdatd(new Date()); - - pdmPartInfo.add(dto1); + List pdmPartInfo = stHttpRequestService.getPdmPartInfo(prtnoList); log.debug("pdmPartInfo:{}", pdmPartInfo); if (CollectionUtils.isEmpty(pdmPartInfo)) { diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherReceiptRecordServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherReceiptRecordServiceImpl.java index 324654907..894cc75fc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherReceiptRecordServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherReceiptRecordServiceImpl.java @@ -7,13 +7,16 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; +import org.springblade.common.exception.BusinessException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.desk.dashboard.feign.IPartClient; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.system.feign.IUserClient; import org.springblade.wms.excel.StOtherReceiptRecordExcel; import org.springblade.wms.mapper.StOtherReceiptRecordMapper; import org.springblade.wms.pojo.dto.InitStockDTO; @@ -52,6 +55,8 @@ public class StOtherReceiptRecordServiceImpl extends BaseServiceImpl inoutList = new ArrayList<>(); + StStockInoutRecord stockInoutRecord = new StStockInoutRecord(); + stockInoutRecord.setGoodsId(goods.getId()); + stockInoutRecord.setPiNo(batchNo); + stockInoutRecord.setQuantity(quantity); + stockInoutRecord.setShId(shId); + stockInoutRecord.setSlId(slId); + stockInoutRecord.setInOutDate(date); + stockInoutRecord.setCreateUser(userId); + inoutList.add(stockInoutRecord); + + otherReceiptRecord.setInoutList(inoutList); + + this.otherWarehousing(otherReceiptRecord, user); + } + @Override public List exportStOtherReceiptRecord(Wrapper queryWrapper) { List stOtherReceiptRecordList = baseMapper.exportStOtherReceiptRecord(queryWrapper); From b91f9071315ec645a69a9303ea1afb811671076a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Sat, 23 May 2026 15:33:37 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=AD=90=E4=BB=B6=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E8=B0=83=E7=94=A8wms=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MacToolUseServiceImpl.java | 4 +++- .../produce/service/impl/PdaSaveServiceImpl.java | 16 ++++++++++++---- .../service/impl/WorkOrderServiceImpl.java | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index 31ed781d6..8d6869515 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -36,6 +36,8 @@ import org.springframework.transaction.annotation.Transactional; import java.text.DecimalFormat; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -348,7 +350,7 @@ public class MacToolUseServiceImpl extends BaseServiceImpl listByNoFinished() { - return this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getFinished, 0).orderByAsc(MacToolUse::getMtnCode)); + return this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getFinished, 0).ge(MacToolUse::getCreateTime, Date.from(LocalDateTime.now().minusDays(2).atZone(ZoneId.systemDefault()).toInstant())).orderByAsc(MacToolUse::getMtnCode)); } private Double setMaxHeat(Map eUMap, JSONObject jsonObject, Double heat) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 276731934..19cf8fd6d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -61,6 +61,7 @@ import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.enums.DictEnum; +import org.springblade.wms.feign.WmsTaskClient; import org.springblade.wms.pojo.entity.StClassRequest; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -128,6 +129,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl Date: Sat, 23 May 2026 17:19:02 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E7=83=AD=E8=A1=A8=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E5=AD=97=E6=AE=B5=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/pojo/vo/WorkOrderVO.java | 9 +++++++++ .../desk/produce/mapper/WorkOrderMapper.xml | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java index a1e6d3e24..c7ca531e7 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java @@ -88,6 +88,12 @@ public class WorkOrderVO extends WorkOrder { @Schema(description = "下序名称") private String ppsNameNext; + @Schema(description = "上序id") + private Long ppsIdUp; + + @Schema(description = "上序名称") + private String ppsNameUp; + @Schema(description = "下一班组id") private Long makeTeamNext; @@ -106,4 +112,7 @@ public class WorkOrderVO extends WorkOrder { @Schema(description = "优先级;1.正常,2.项目要求日期急件,3.合同急件,4.绩效零件,5.调度标注急件") private String priorityName; + @Schema(description = "生产数量") + private String makeQty; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml index 9b1f47875..fb7f38113 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml @@ -34,7 +34,9 @@ mwo.ID woId, mwo.YO_ID yoId, mwo.TS_ID tsId, + bts.TS_NAME mainTsName, mwo.OC_ID ocId, + bo.OC_NAME mainOcName, mwp.MAKE_TEAM makeTeam, mwp.OC_ID ppsOcId, bpe.NAME ppsName, @@ -66,16 +68,24 @@ mwo.INVENTORY_QTY inventoryQty, mwo.MAKE_QTY - mwo.INVENTORY_QTY notInQty, nmwp.PPS_ID ppsIdNext, + nbpe.NAME ppsNameNext, + umwp.PPS_ID ppsIdUp, + ubpe.NAME ppsNameUp, nmwp.MAKE_TEAM makeTeamNext, mwo.PICKING_STATUS pickingStatus, myo.RECEIVE_USER receiveUser, mwo.COLLABORATE collaborate, mwo.MEMO memo FROM MES_WORK_ORDER mwo - LEFT JOIN MES_YIELD_ORDER myo ON mwo.YO_ID = myo.ID + INNER JOIN MES_YIELD_ORDER myo ON mwo.YO_ID = myo.ID LEFT JOIN MES_WORK_PLAN mwp ON mwo.WP_ID = mwp.ID LEFT JOIN MES_WORK_PLAN nmwp ON mwp.NEXT_WP_ID = nmwp.ID + LEFT JOIN MES_WORK_PLAN umwp ON mwp.FRONT_WP_ID = umwp.ID LEFT JOIN BS_PROCESS_SET bpe ON mwp.PPS_ID = bpe.ID + LEFT JOIN BS_PROCESS_SET nbpe ON nmwp.PPS_ID = nbpe.ID + LEFT JOIN BS_PROCESS_SET ubpe ON umwp.PPS_ID = ubpe.ID + LEFT JOIN BS_TEAM_SET bts ON mwo.TS_ID = bts.ID + LEFT JOIN BS_OEM bo ON mwo.OC_ID = bo.ID mwo.is_deleted = 0 From 7e30a1405b28d4637fd10de15e3fe4d1e0b1c12c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Sat, 23 May 2026 18:01:52 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E7=83=AD=E8=A1=A8=E8=BD=A6=E9=97=B4?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E5=AD=97=E6=AE=B5=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/desk/produce/pojo/vo/WorkOrderVO.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java index c7ca531e7..a1a7941cb 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java @@ -111,8 +111,4 @@ public class WorkOrderVO extends WorkOrder { @Schema(description = "优先级;1.正常,2.项目要求日期急件,3.合同急件,4.绩效零件,5.调度标注急件") private String priorityName; - - @Schema(description = "生产数量") - private String makeQty; - } From f20680d12351174d17e1c68e07a2d6b574fd6373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Sat, 23 May 2026 18:08:23 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E8=BF=94=E5=B7=A5=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8E=9F=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/desk/order/pojo/entity/YieldOrder.java | 3 +++ .../scheduling/pojo/entity/YieldOrderEntity.java | 2 ++ .../desk/produce/service/impl/PdaSaveServiceImpl.java | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index aaa753981..0f92fef5b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -510,6 +510,9 @@ public class YieldOrder extends BaseEntity { @Schema(description = "责任部门") private String resDept; + @Schema(description = "原生产订单ID") + private Long oldYoId; + @JsonSerialize(nullsUsing = NullSerializer.class) private Double plateThickness1; diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java index 9dd0812d9..f070cf162 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/YieldOrderEntity.java @@ -377,5 +377,7 @@ public class YieldOrderEntity extends TenantEntity { private String tjtNum; @Schema(description = "责任部门") private String resDept; + @Schema(description = "原生产订单ID") + private Long oldYoId; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 19cf8fd6d..f0683855a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -665,6 +665,14 @@ public class PdaSaveServiceImpl extends BaseServiceImpl Date: Sat, 23 May 2026 18:36:44 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/pojo/entity/StGoodsExt.java | 2 +- .../wms/pojo/entity/StStockInoutRecord.java | 10 ++++- .../wms/mapper/StGlassCakeOutMapper.java | 3 ++ .../wms/mapper/StGlassCakeOutMapper.xml | 6 +++ .../wms/mapper/StGoodsExtMapper.java | 4 ++ .../wms/mapper/StGoodsExtMapper.xml | 32 +++++++++++++++ .../wms/mapper/StRealtimeStockMapper.java | 4 ++ .../wms/mapper/StRealtimeStockMapper.xml | 14 +++++++ .../wms/service/IStRealtimeStockService.java | 2 + .../impl/StGlassCakeOutServiceImpl.java | 10 +++-- .../service/impl/StGoodsExtServiceImpl.java | 5 ++- .../impl/StRealtimeStockServiceImpl.java | 40 +++++++++++++++++-- 12 files changed, 120 insertions(+), 12 deletions(-) diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGoodsExt.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGoodsExt.java index 4030e2d50..bfad6a1f3 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGoodsExt.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGoodsExt.java @@ -32,7 +32,7 @@ public class StGoodsExt extends BaseEntity { * 季度月使用量均值 */ @Schema(description = "季度月使用量均值") - private Long useAverage; + private Double useAverage; /** * 一级库存 */ diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java index a9549dde8..14a8c721a 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java @@ -180,6 +180,11 @@ public class StStockInoutRecord extends TenantEntity { */ @Schema(description = "单价") private Double unitPrice; + /** + * 流程卡号 + */ + @Schema(description = "流程卡号") + private String cardNo; /** * 是否印字 @@ -204,8 +209,8 @@ public class StStockInoutRecord extends TenantEntity { public static final Short IN_TYPE = 0; public static final Short OUT_TYPE = 1; - /*1:采购入库,2.生产入库,3:其他入库,4调拨入库,5erp转移入库,7生产退料 - 11:配额出库,12:其他出库,13:领料出库 15刀具出库*/ + /*1:采购入库,2.生产入库,3:其他入库,4调拨入库,5erp转移入库,7生产退料 + 11:配额出库,12:其他出库,13:领料出库 15刀具出库,16玻璃饼出库,17石墨模出库*/ public static final Short INOUT_SOURCE_PURCHASE_RECEIPT = 1; public static final Short INOUT_SOURCE_PRODUCE_PURCHASE_RECEIPT = 2; public static final Short INOUT_SOURCE_OTHER_PURCHASE_RECEIPT = 3; @@ -217,6 +222,7 @@ public class StStockInoutRecord extends TenantEntity { public static final Short INOUT_SOURCE_ASSIGN_OUT = 13; public static final Short INOUT_SOURCE_TOOl_OUT = 15; public static final Short INOUT_SOURCE_GLASS_CAKE_OUT = 16; + public static final Short INOUT_SOURCE_GRAPHITE_MOLD_OUT = 17; } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java index e8d218c3a..717e2b5fc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.wms.excel.StGlassCakeOutExcel; @@ -53,5 +54,7 @@ public interface StGlassCakeOutMapper extends BaseMapper { YieldOrder getByYieldOrder(String yoCode); List getYieldOrderList(Long id, String yieldType); + + DsPartRelationEntity getPartQuota(String partCode, String goodsCode); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml index 1f9ca0823..12cff5949 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml @@ -225,4 +225,10 @@ AND YIELD_TYPE = #{yieldType} + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java index b7768eb0b..ad90261ae 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java @@ -43,5 +43,9 @@ public interface StGoodsExtMapper extends BaseMapper { IPage selectGoodsExtWithGoods(IPage page, @Param("ew") QueryWrapper queryWrapper); StGoodsExt getGoodsExt(Double invqty1j, Double planqty, Long goodsId); + + StGoodsExt selectWithAvgMonth(Long goodsId); + + Double getPlanQty(Long goodsId); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml index e4e87a68c..f5a0e96dd 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml @@ -118,5 +118,37 @@ SELECT * FROM ST_GOODS_EXT ${ew.customSqlSegment} + + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java index c08316800..0cfce5f3e 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java @@ -106,5 +106,9 @@ public interface StRealtimeStockMapper extends BaseMapper { List findStorehouseByGoodsCode(String goodsCode); StRealtimeStock getByGoodsCodeAndShIdAndSlId(String goodsCode, Long shId, Long slId); + +// Object[] queryByShIdAndSlId(String goodsCode, Double quantity, Long shId, Long slId); + + StRealtimeStock selectMaxUsableStockByMoldAttr(String goodsCode); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml index 371a82ce4..67ba2bda8 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml @@ -676,6 +676,20 @@ AND g.is_deleted = 0 + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java index 3e18e7686..febad43dc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java @@ -108,5 +108,7 @@ public interface IStRealtimeStockService extends BaseService { * @return */ StGoodStatisVO getGoodsByCode(String partCode); + +// Object[] queryByShIdAndSlId(String goodsCode, Double quantity, Long shId, Long slId); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java index 507f85c8a..4c4aaa096 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java @@ -10,6 +10,7 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.desk.dashboard.feign.IPartClient; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.wms.excel.StGlassCakeOutExcel; import org.springblade.wms.mapper.StGlassCakeOutMapper; @@ -163,7 +164,8 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl= 0) { + String lockNo = StrUtil.isNotBlank(inout.getWoCode()) ? inout.getWoCode() : inout.getCardNo(); + if (StrUtil.isNotBlank(lockNo) && newOccupy >= 0) { db.setOccupyQuantity(newOccupy); - this.updateRealTimeLock(inout.getWoCode(), db.getId(), quantity); + this.updateRealTimeLock(lockNo, db.getId(), quantity); // NumberUtil.add( // BigDecimal.valueOf(newOccupy), // BigDecimal.valueOf(quantity) @@ -976,6 +1003,11 @@ public class StRealtimeStockServiceImpl extends BaseServiceImpl exportStRealtimeStock(Wrapper queryWrapper) { List stRealtimeStockList = baseMapper.exportStRealtimeStock(queryWrapper); From bba1562e53a7a0f96ce21c934bfa48f44beaf7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Sat, 23 May 2026 18:43:40 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E6=8A=A5=E5=B7=A5=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=9A=E6=8A=A5=E5=B7=A5=E4=BA=BA=E4=B8=8E=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E4=BA=BA=E4=B8=8D=E7=AC=A6=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/service/impl/WorkOrderServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index d6eee0950..9347e3634 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -2063,6 +2063,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Date: Sat, 23 May 2026 19:05:35 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E7=83=A7=E7=BB=93=E9=BD=90=E5=A5=97?= =?UTF-8?q?=E6=B5=81=E8=BD=AC=E5=90=8E=E7=BB=99=E5=B7=A5=E8=89=BA=E5=91=98?= =?UTF-8?q?=E5=8F=91=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/common/constant/BizTypeConstant.java | 2 ++ .../service/impl/YieldOrderServiceImpl.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java index 0c15c836a..3e7da4827 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java @@ -16,4 +16,6 @@ public interface BizTypeConstant { * 工艺任务转派 */ String CRAFT_TASK_REDEPLOY = "工艺任务转派"; + + String SET_SUITE_FLOW = "齐套流转"; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 9ed3aab20..0fa3305ec 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -25,6 +25,9 @@ import org.springblade.desk.basic.pojo.entity.WorkCenter; import org.springblade.desk.basic.service.ILocallyPlatedPartService; import org.springblade.desk.basic.service.IQualityGradeService; import org.springblade.desk.basic.service.IWorkCenterService; +import org.springblade.desk.common.constant.BizTypeConstant; +import org.springblade.desk.common.feign.IMesNotifyMessageClient; +import org.springblade.desk.common.pojo.entity.MesNotifyMessageEntity; import org.springblade.desk.dashboard.constant.DsCraftConstant; import org.springblade.desk.dashboard.constant.DsPartConstant; import org.springblade.desk.dashboard.pojo.entity.*; @@ -130,6 +133,10 @@ public class YieldOrderServiceImpl extends BaseServiceImpl Date: Mon, 25 May 2026 09:10:12 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml index f78013500..27c931caf 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml @@ -31,10 +31,10 @@ AND a.remark LIKE concat(concat('%', #{query.memo}),'%') - AND to_date(#{query.inDateStart},'YYYY-MM-DD HH24:MI:SS'), = ]]> a.startdat + AND to_date(${query.inDateStart},'YYYY-MM-DD'), = ]]> a.startdat - AND to_date(#{query.inDateEnd},'YYYY-MM-DD HH24:MI:SS'), a.validdat + AND to_date(${query.inDateEnd},'YYYY-MM-DD'), a.validdat AND a.validflag IN From 63ef138dac1cc6a2736513b58cc7b13d6779cef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Mon, 25 May 2026 09:45:06 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/basic/pojo/entity/PlanAssignSteerModify.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/PlanAssignSteerModify.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/PlanAssignSteerModify.java index addc348d5..bb8f94df5 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/PlanAssignSteerModify.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/PlanAssignSteerModify.java @@ -78,4 +78,7 @@ public class PlanAssignSteerModify extends BaseEntity { @Schema(description = "审批状态: 0-草稿, 1-一级审批中, 2-审批通过, 3-审批驳回, 4-二级审批中") private Integer approvalStatus = ApprovalStatus.DRAFT; + + @Schema(description = "附件") + private String attachment; } \ No newline at end of file From 95735bb65f64fd1e3700cea191e56ceadf75e873 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Mon, 25 May 2026 09:48:49 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E8=83=BD=E8=80=97=E7=9B=AE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BsEnergyMonitorController.java | 49 ++--- .../controller/BsEnergyTargetController.java | 190 ++++-------------- .../excel/BsEnergyTargetElectricExcel.java | 76 ------- ...terExcel.java => BsEnergyTargetExcel.java} | 57 +++++- .../energy/mapper/BsEnergyTargetMapper.java | 48 +++-- .../desk/energy/mapper/EnergyTargetMapper.xml | 70 ++++--- .../desk/energy/pojo/vo/BsEnergyTargetVO.java | 113 ++++++++++- .../service/IBsEnergyTargetService.java | 38 +--- .../impl/BsEnergyTargetServiceImpl.java | 91 +++++---- .../resources/Excel/energy/用电目标.xls | Bin 20480 -> 0 bytes .../{用水目标.xls => 能耗目标.xls} | Bin 20480 -> 20480 bytes 11 files changed, 333 insertions(+), 399 deletions(-) delete mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java rename blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/{BsEnergyTargetWaterExcel.java => BsEnergyTargetExcel.java} (60%) delete mode 100644 blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls rename blade-service/blade-desk/src/main/resources/Excel/energy/{用水目标.xls => 能耗目标.xls} (95%) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java index ebbb8456d..99ec4406b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyMonitorController.java @@ -104,16 +104,16 @@ public class BsEnergyMonitorController extends BladeController { if (exist != null && !exist.getId().equals(bsEnergyMonitor.getId())) { return R.fail(bsEnergyMonitor.getMonth() + "月份能源监控表已存在"); } - if(bsEnergyMonitor.getLastWater() != null && bsEnergyMonitor.getLastOutput() != null){ + if (bsEnergyMonitor.getLastWater() != null && bsEnergyMonitor.getLastOutput() != null) { bsEnergyMonitor.setLastWaterRate(bsEnergyMonitor.getLastWater().divide(bsEnergyMonitor.getLastOutput(), 6, RoundingMode.HALF_UP)); } - if(bsEnergyMonitor.getLastElectric() != null && bsEnergyMonitor.getLastOutput() != null){ + if (bsEnergyMonitor.getLastElectric() != null && bsEnergyMonitor.getLastOutput() != null) { bsEnergyMonitor.setLastElectricRate(bsEnergyMonitor.getLastElectric().divide(bsEnergyMonitor.getLastOutput(), 6, RoundingMode.HALF_UP)); } - if(bsEnergyMonitor.getCurrentWater() != null && bsEnergyMonitor.getCurrentOutput() != null){ + if (bsEnergyMonitor.getCurrentWater() != null && bsEnergyMonitor.getCurrentOutput() != null) { bsEnergyMonitor.setCurrentWaterRate(bsEnergyMonitor.getCurrentWater().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP)); } - if(bsEnergyMonitor.getCurrentElectric() != null && bsEnergyMonitor.getCurrentOutput() != null){ + if (bsEnergyMonitor.getCurrentElectric() != null && bsEnergyMonitor.getCurrentOutput() != null) { bsEnergyMonitor.setCurrentElectricRate(bsEnergyMonitor.getCurrentElectric().divide(bsEnergyMonitor.getCurrentOutput(), 6, RoundingMode.HALF_UP)); } } @@ -148,28 +148,17 @@ public class BsEnergyMonitorController extends BladeController { @GetMapping("/getLastYearDetail") @Operation(summary = "上年度详情", description = "传入bsEnergyMonitor") public R getLastYearDetail(BsEnergyMonitorEntity bsEnergyMonitor) { - YearMonth currentMonth = YearMonth.parse(bsEnergyMonitor.getMonth()); - String currentYear = String.valueOf(currentMonth.getYear()); - YearMonth lastYearMonth = currentMonth.minusYears(1); - String lastMonth = lastYearMonth.toString(); + YearMonth currentYearMonth = YearMonth.parse(bsEnergyMonitor.getMonth()); + String currentYear = String.valueOf(currentYearMonth.getYear()); + String month = String.format("%02d", currentYearMonth.getMonthValue()); + YearMonth lastYearMonth = currentYearMonth.minusYears(1); String lastYear = String.valueOf(lastYearMonth.getYear()); - String quarter = this.getQuarter(currentMonth.getMonth().getValue()); BsEnergyMonitorEntity detail = new BsEnergyMonitorEntity(); - BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper().eq(BsEnergyMonitorEntity::getMonth, lastMonth)); - BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, lastYear) - .eq(BsEnergyTargetEntity::getType, "1")); - BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, currentYear) - .eq(BsEnergyTargetEntity::getType, "1")); - BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, lastYear) - .eq(BsEnergyTargetEntity::getQuarter, quarter) - .eq(BsEnergyTargetEntity::getType, "2")); - BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, currentYear) - .eq(BsEnergyTargetEntity::getQuarter, quarter) - .eq(BsEnergyTargetEntity::getType, "2")); + BsEnergyMonitorEntity lastYearDetail = bsEnergyMonitorService.getOne(new LambdaQueryWrapper().eq(BsEnergyMonitorEntity::getMonth, lastYearMonth.toString())); + BsEnergyTargetEntity lastYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity currentYearWaterTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "1")); + BsEnergyTargetEntity lastYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, lastYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2")); + BsEnergyTargetEntity currentYearElectricTarget = bsEnergyTargetService.getOne(new LambdaQueryWrapper().eq(BsEnergyTargetEntity::getYear, currentYear).eq(BsEnergyTargetEntity::getMonth, month).eq(BsEnergyTargetEntity::getType, "2")); if (lastYearDetail != null) { detail.setLastWater(lastYearDetail.getCurrentWater()); detail.setLastElectric(lastYearDetail.getCurrentElectric()); @@ -192,16 +181,4 @@ public class BsEnergyMonitorController extends BladeController { return R.data(detail); } - - public static String getQuarter(int month) { - if (month <= 3) { - return "1"; - } else if (month <= 6) { - return "2"; - } else if (month <= 9) { - return "3"; - } else { - return "4"; - } - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java index c46dcb003..5af06a124 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEnergyTargetController.java @@ -26,9 +26,10 @@ package org.springblade.desk.energy.controller; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.util.StringUtils; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -45,21 +46,19 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; -import org.springblade.desk.energy.excel.BsEnergyTargetElectricExcel; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; +import org.springblade.desk.energy.excel.BsEnergyTargetExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; import org.springblade.desk.energy.service.IBsEnergyTargetService; -import org.springblade.desk.energy.wrapper.BsEnergyTargetWrapper; -import org.springframework.beans.BeanUtils; import org.springframework.core.io.Resource; -import org.springframework.data.redis.hash.HashMapper; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 能耗目标表 控制器 @@ -80,29 +79,16 @@ public class BsEnergyTargetController extends BladeController { */ @GetMapping("/detail") @Operation(summary = "详情", description = "传入bsEnergyTarget") - public R detail(BsEnergyTargetEntity bsEnergyTarget) { - BsEnergyTargetEntity detail = bsEnergyTargetService.getOne(Condition.getQueryWrapper(bsEnergyTarget)); - return R.data(BsEnergyTargetWrapper.build().entityVO(detail)); - } - - /** - * 能耗目标表 获取用水目标 - */ - @GetMapping("/detailByWater") - @Operation(summary = "根据月份获取用水目标", description = "获取用水目标") - public R getWaterTargetByMonth(String month) { - BigDecimal waterTarget = bsEnergyTargetService.getWaterTargetByMonth(month); - return R.data(waterTarget); - } - - /** - * 能耗目标表 获取用水目标 - */ - @GetMapping("/detailByElectric") - @Operation(summary = "根据月份获取用电目标", description = "获取用电目标") - public R getElectricTargetByMonth(String month) { - BigDecimal electricTarget = bsEnergyTargetService.getElectricTargetByMonth(month); - return R.data(electricTarget); + public R detail(BsEnergyTargetVO bsEnergyTarget) { + if (StringUtils.isEmpty(bsEnergyTarget.getYear()) || StringUtils.isEmpty(bsEnergyTarget.getType())) { + return R.fail("参数错误"); + } + List list = bsEnergyTargetService.selectBsEnergyTargetList(bsEnergyTarget); + if (CollectionUtils.isNotEmpty(list)) { + return R.data(list.get(0)); + } else { + return R.fail("能耗目标详情查询失败"); + } } /** @@ -119,21 +105,23 @@ public class BsEnergyTargetController extends BladeController { * 能耗目标表 新增或修改 */ @PostMapping("/submit") - @Operation(summary = "新增或修改", description = "传入bsEnergyTarget") - public R submit(@Valid @RequestBody BsEnergyTargetEntity bsEnergyTarget) { - BsEnergyTargetEntity bsEnergyTargetEntity = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, bsEnergyTarget.getYear()) - .eq(BsEnergyTargetEntity::getType, bsEnergyTarget.getType()) - .eq(bsEnergyTarget.getQuarter() != null, BsEnergyTargetEntity::getQuarter, bsEnergyTarget.getQuarter())); - if (bsEnergyTargetEntity != null && !bsEnergyTargetEntity.getId().equals(bsEnergyTarget.getId())) { - if ("1".equals(bsEnergyTarget.getType())) { - return R.fail("该年份能耗目标已存在"); - } - if ("2".equals(bsEnergyTarget.getType())) { - return R.fail("该季度能耗目标已存在"); + @Operation(summary = "新增或修改", description = "传入bsEnergyTargetList") + public R submit(@Valid @RequestBody List bsEnergyTargetList) { + List years = bsEnergyTargetList.stream().map(BsEnergyTargetVO::getYear).collect(Collectors.toList()); + List existList = bsEnergyTargetService.list(new LambdaQueryWrapper().in(BsEnergyTargetEntity::getYear, years)); + Map existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue)); + List saves = new ArrayList<>(); + for (BsEnergyTargetVO bsEnergyTargetVO : bsEnergyTargetList) { + List bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities(); + for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) { + String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType(); + if (existMap.containsKey(key)) { + bsEnergyTarget.setId(existMap.get(key)); + } } + saves.addAll(bsEnergyTargetEntities); } - return R.status(bsEnergyTargetService.saveOrUpdate(bsEnergyTarget)); + return R.status(bsEnergyTargetService.saveOrUpdateBatch(saves)); } /** @@ -152,130 +140,40 @@ public class BsEnergyTargetController extends BladeController { @GetMapping("/export-bsEnergyTarget") @Operation(summary = "导出数据", description = "传入bsEnergyTarget") public void exportBsEnergyTarget(@Parameter(hidden = true) @RequestParam Map bsEnergyTarget, BladeUser bladeUser, HttpServletResponse response) { - Map conMap = new HashMap(); - conMap.put("type", bsEnergyTarget.get("type")); - conMap.put("isDeleted", 0); - List list = bsEnergyTargetService.listByMap(conMap); - if ("1".equals(bsEnergyTarget.get("type"))) { - List bsEnergyTargetWaterExcels = BeanUtil.copyToList(list, BsEnergyTargetWaterExcel.class); - ExcelUtil.export(response, "用水目标" + DateUtil.time(), "用水目标", bsEnergyTargetWaterExcels, BsEnergyTargetWaterExcel.class); - } else { - List bsEnergyTargetElectricExcels = BeanUtil.copyToList(list, BsEnergyTargetElectricExcel.class); - ExcelUtil.export(response, "用电目标" + DateUtil.time(), "用电目标", bsEnergyTargetElectricExcels, BsEnergyTargetElectricExcel.class); - } + BsEnergyTargetVO vo = new BsEnergyTargetVO(); + vo.setYear((String) bsEnergyTarget.get("year")); + vo.setType((String) bsEnergyTarget.get("type")); + List list = bsEnergyTargetService.selectBsEnergyTargetList(vo); + List bsEnergyTargetExcels = BeanUtil.copyToList(list, BsEnergyTargetExcel.class); + ExcelUtil.export(response, "能耗目标" + DateUtil.time(), "能耗目标", bsEnergyTargetExcels, BsEnergyTargetExcel.class); } @GetMapping("/water-download-excel-template") @Operation(summary = "下载Excel模板", description = "") public ResponseEntity waterDownloadExcelTemplate() { return ExcelExtUtil.downloadXlsTemplate( - "Excel/energy/用水目标.xls", - "导入模版-用水目标.xls"); + "Excel/energy/能耗目标.xls", + "导入模版-能耗目标.xls"); } @GetMapping("/electric-download-excel-template") @Operation(summary = "下载Excel模板", description = "") public ResponseEntity electricDownloadExcelTemplate() { return ExcelExtUtil.downloadXlsTemplate( - "Excel/energy/用电目标.xls", - "导入模版-用电目标.xls"); + "Excel/energy/能耗目标.xls", + "导入模版-能耗目标.xls"); } @PostMapping("/water-import-excel") @Operation(summary = "导入Excel", description = "MultipartFile") public R waterImportExcel(@RequestParam("file") MultipartFile file) { - R checkR = ExcelExtUtil.importExcelCheck(file); - if (checkR != null) { - return checkR; - } - List importList = ExcelUtil.read( - file, 0, 1, BsEnergyTargetWaterExcel.class - ); - boolean result = true; - Set existSet = new HashSet<>(); - StringBuffer msg = new StringBuffer(); - List list = new ArrayList<>(); - for (BsEnergyTargetWaterExcel excel : importList) { - if (existSet.contains(excel.getYear())) { - msg.append("Excel里【" + excel.getYear() + "】重复了\rn"); - result = false; - continue; - } - existSet.add(excel.getYear()); - BsEnergyTargetEntity exist = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, excel.getYear()) - .eq(BsEnergyTargetEntity::getType, "1")); - if (exist != null) { - msg.append(excel.getYear() + "能耗目标已存在\n"); - result = false; - continue; - } - BsEnergyTargetEntity bsEnergyTargetEntity = new BsEnergyTargetEntity(); - BeanUtils.copyProperties(excel, bsEnergyTargetEntity); - bsEnergyTargetEntity.setType("1"); - list.add(bsEnergyTargetEntity); - } - bsEnergyTargetService.saveBatch(list); - if (result) { - return R.success("导入成功"); - } else { - return R.fail(msg.toString()); - } + return bsEnergyTargetService.importExcelData(file, "1"); } @PostMapping("/electric-import-excel") @Operation(summary = "导入Excel", description = "MultipartFile") public R electricImportExcel(@RequestParam("file") MultipartFile file) { - R checkR = ExcelExtUtil.importExcelCheck(file); - if (checkR != null) { - return checkR; - } - List importList = ExcelUtil.read( - file, 0, 1, BsEnergyTargetElectricExcel.class - ); - boolean result = true; - Set existSet = new HashSet<>(); - StringBuffer msg = new StringBuffer(); - List list = new ArrayList<>(); - for (BsEnergyTargetElectricExcel excel : importList) { - String key = excel.getYear() + "-" + excel.getQuarter(); - if (existSet.contains(key)) { - msg.append("Excel里【" + key + "】重复了\rn"); - result = false; - continue; - } - existSet.add(key); - if("第一季度".equals(excel.getQuarter())){ - excel.setQuarter("1"); - } else if("第二季度".equals(excel.getQuarter())){ - excel.setQuarter("2"); - } else if("第三季度".equals(excel.getQuarter())){ - excel.setQuarter("3"); - } else if("第四季度".equals(excel.getQuarter())){ - excel.setQuarter("4"); - } - BsEnergyTargetEntity exist = bsEnergyTargetService.getOne(new LambdaQueryWrapper(). - eq(BsEnergyTargetEntity::getYear, excel.getYear()) - .eq(BsEnergyTargetEntity::getType, "2") - .eq(BsEnergyTargetEntity::getQuarter, excel.getQuarter())); - if (exist != null) { - msg.append(key + "能耗目标已存在\n"); - result = false; - continue; - } - BsEnergyTargetEntity bsEnergyTargetEntity = new BsEnergyTargetEntity(); - BeanUtils.copyProperties(excel, bsEnergyTargetEntity); - bsEnergyTargetEntity.setType("2"); - list.add(bsEnergyTargetEntity); - } - bsEnergyTargetService.saveBatch(list); - if (result) { - return R.success("导入成功"); - } else { - return R.fail(msg.toString()); - } + return bsEnergyTargetService.importExcelData(file, "2"); } - - } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java deleted file mode 100644 index 38a727d1e..000000000 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetElectricExcel.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * BladeX Commercial License Agreement - * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. - *

- * Use of this software is governed by the Commercial License Agreement - * obtained after purchasing a license from BladeX. - *

- * 1. This software is for development use only under a valid license - * from BladeX. - *

- * 2. Redistribution of this software's source code to any third party - * without a commercial license is strictly prohibited. - *

- * 3. Licensees may copyright their own code but cannot use segments - * from this software for such purposes. Copyright of this software - * remains with BladeX. - *

- * Using this software signifies agreement to this License, and the software - * must not be used for illegal purposes. - *

- * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is - * not liable for any claims arising from secondary or illegal development. - *

- * Author: Chill Zhuang (bladejava@qq.com) - */ -package org.springblade.desk.energy.excel; - - -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; -import java.math.BigDecimal; - - -/** - * 能耗目标表 Excel实体类 - * - * @author BladeX - * @since 2026-03-02 - */ -@Data -@ColumnWidth(25) -@HeadRowHeight(20) -@ContentRowHeight(18) -public class BsEnergyTargetElectricExcel implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 年份 - */ - @ColumnWidth(50) - @ExcelProperty("年份") - private String year; - - /** - * 季度 - */ - @ColumnWidth(50) - @ExcelProperty("季度") - private String quarter; - - /** - * 用电目标(kWh/dm²) - */ - @ColumnWidth(50) - @ExcelProperty("用电目标(kWh/dm²)") - private BigDecimal target; - -} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java similarity index 60% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java rename to blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java index 19c4ebba8..993486b61 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetWaterExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEnergyTargetExcel.java @@ -49,7 +49,7 @@ import java.io.Serial; @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) -public class BsEnergyTargetWaterExcel implements Serializable { +public class BsEnergyTargetExcel implements Serializable { @Serial private static final long serialVersionUID = 1L; @@ -57,15 +57,56 @@ public class BsEnergyTargetWaterExcel implements Serializable { /** * 年份 */ - @ColumnWidth(50) + @ColumnWidth(20) @ExcelProperty("年份") private String year; - /** - * 用水目标(L/d㎡) - */ - @ColumnWidth(50) - @ExcelProperty("用水目标(L/d㎡)") - private BigDecimal target; + @ColumnWidth(20) + @ExcelProperty("1月") + private BigDecimal m01Target; + + @ColumnWidth(20) + @ExcelProperty("2月") + private BigDecimal m02Target; + + @ColumnWidth(20) + @ExcelProperty("3月") + private BigDecimal m03Target; + + @ColumnWidth(20) + @ExcelProperty("4月") + private BigDecimal m04Target; + + @ColumnWidth(20) + @ExcelProperty("5月") + private BigDecimal m05Target; + + @ColumnWidth(20) + @ExcelProperty("6月") + private BigDecimal m06Target; + + @ColumnWidth(20) + @ExcelProperty("7月") + private BigDecimal m07Target; + + @ColumnWidth(20) + @ExcelProperty("8月") + private BigDecimal m08Target; + + @ColumnWidth(20) + @ExcelProperty("9月") + private BigDecimal m09Target; + + @ColumnWidth(20) + @ExcelProperty("10月") + private BigDecimal m10Target; + + @ColumnWidth(20) + @ExcelProperty("11月") + private BigDecimal m11Target; + + @ColumnWidth(20) + @ExcelProperty("12月") + private BigDecimal m12Target; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java index d26c8c08c..792058043 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/BsEnergyTargetMapper.java @@ -27,11 +27,9 @@ package org.springblade.desk.energy.mapper; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.apache.ibatis.annotations.Param; + import java.util.List; import java.util.Map; @@ -43,29 +41,29 @@ import java.util.Map; */ public interface BsEnergyTargetMapper extends BaseMapper { - /** - * 自定义分页 - * - * @param page 分页参数 - * @param bsEnergyTarget 查询参数 - * @return List - */ - List selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - + /** + * 自定义分页 + * + * @param page 分页参数 + * @param bsEnergyTarget 查询参数 + * @return List + */ + List selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - /** - * 获取导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportBsEnergyTarget(@Param("ew") Wrapper queryWrapper); + /** + * 自定义查询 + * + * @param bsEnergyTarget + * @return + */ + List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget); - /** - * 根据条件查询列表 - * @param conMap - * @return - */ - List listByMap(Map conMap); + /** + * 根据条件查询列表 + * + * @param conMap + * @return + */ + List listByMap(Map conMap); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml index 88a1bd18c..99c757c6a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EnergyTargetMapper.xml @@ -20,8 +20,24 @@ - + SELECT * FROM ( + SELECT + year, + TYPE, + MAX(CASE WHEN month = '01' THEN target ELSE NULL END ) AS m01Target, + MAX(CASE WHEN month = '02' THEN target ELSE NULL END ) AS m02Target, + MAX(CASE WHEN month = '03' THEN target ELSE NULL END ) AS m03Target, + MAX(CASE WHEN month = '04' THEN target ELSE NULL END ) AS m04Target, + MAX(CASE WHEN month = '05' THEN target ELSE NULL END ) AS m05Target, + MAX(CASE WHEN month = '06' THEN target ELSE NULL END ) AS m06Target, + MAX(CASE WHEN month = '07' THEN target ELSE NULL END ) AS m07Target, + MAX(CASE WHEN month = '08' THEN target ELSE NULL END ) AS m08Target, + MAX(CASE WHEN month = '09' THEN target ELSE NULL END ) AS m09Target, + MAX(CASE WHEN month = '10' THEN target ELSE NULL END ) AS m10Target, + MAX(CASE WHEN month = '11' THEN target ELSE NULL END ) AS m11Target, + MAX(CASE WHEN month = '12' THEN target ELSE NULL END ) AS m12Target + FROM BS_ENERGY_TARGET is_deleted = 0 @@ -30,13 +46,9 @@ and year = #{bsEnergyTarget.year} - - and quarter = #{bsEnergyTarget.quarter} - - - and status = #{bsEnergyTarget.status} - + GROUP BY year, type + ) ORDER BY ${bsEnergyTarget.orderByField} @@ -44,36 +56,40 @@ DESC - ORDER BY CREATE_TIME DESC + ORDER BY year DESC - - - + SELECT + year, + TYPE, + MAX(CASE WHEN month = '01' THEN target ELSE NULL END ) AS m01Target, + MAX(CASE WHEN month = '02' THEN target ELSE NULL END ) AS m02Target, + MAX(CASE WHEN month = '03' THEN target ELSE NULL END ) AS m03Target, + MAX(CASE WHEN month = '04' THEN target ELSE NULL END ) AS m04Target, + MAX(CASE WHEN month = '05' THEN target ELSE NULL END ) AS m05Target, + MAX(CASE WHEN month = '06' THEN target ELSE NULL END ) AS m06Target, + MAX(CASE WHEN month = '07' THEN target ELSE NULL END ) AS m07Target, + MAX(CASE WHEN month = '08' THEN target ELSE NULL END ) AS m08Target, + MAX(CASE WHEN month = '09' THEN target ELSE NULL END ) AS m09Target, + MAX(CASE WHEN month = '10' THEN target ELSE NULL END ) AS m10Target, + MAX(CASE WHEN month = '11' THEN target ELSE NULL END ) AS m11Target, + MAX(CASE WHEN month = '12' THEN target ELSE NULL END ) AS m12Target FROM BS_ENERGY_TARGET - - and YEAR = #{year} - - - and MONTH = #{month} - - - and QUARTER = #{quarter} - + is_deleted = 0 - and TYPE = #{type} + and type = #{type} - - and IS_DELETED = #{isDeleted} + + and year = #{year} + GROUP BY year, TYPE + ORDER BY year DESC diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java index 39414a3b5..a1b7dd058 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/pojo/vo/BsEnergyTargetVO.java @@ -25,10 +25,15 @@ */ package org.springblade.desk.energy.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import lombok.Data; import lombok.EqualsAndHashCode; + import java.io.Serial; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; /** * 能耗目标表 视图实体类 @@ -39,16 +44,102 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) public class BsEnergyTargetVO extends BsEnergyTargetEntity { - @Serial - private static final long serialVersionUID = 1L; - - /** - * 排序字段 - */ - private String orderByField; - /** - * true: 升序,false: 降序 - */ - private boolean isAsc; + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "1月") + private BigDecimal m01Target; + + @Schema(description = "2月") + private BigDecimal m02Target; + + @Schema(description = "3月") + private BigDecimal m03Target; + + @Schema(description = "4月") + private BigDecimal m04Target; + + @Schema(description = "5月") + private BigDecimal m05Target; + + @Schema(description = "6月") + private BigDecimal m06Target; + + @Schema(description = "7月") + private BigDecimal m07Target; + + @Schema(description = "8月") + private BigDecimal m08Target; + + @Schema(description = "9月") + private BigDecimal m09Target; + + @Schema(description = "10月") + private BigDecimal m10Target; + + @Schema(description = "11月") + private BigDecimal m11Target; + + @Schema(description = "12月") + private BigDecimal m12Target; + + /** + * 排序字段 + */ + private String orderByField; + /** + * true: 升序,false: 降序 + */ + private boolean isAsc; + + public List parseEntities() { + List list = new ArrayList<>(); + if (m01Target != null) { + list.add(buildEntity("01", m01Target)); + } + if (m02Target != null) { + list.add(buildEntity("02", m02Target)); + } + if (m03Target != null) { + list.add(buildEntity("03", m03Target)); + } + if (m04Target != null) { + list.add(buildEntity("04", m04Target)); + } + if (m05Target != null) { + list.add(buildEntity("05", m05Target)); + } + if (m06Target != null) { + list.add(buildEntity("06", m06Target)); + } + if (m07Target != null) { + list.add(buildEntity("07", m07Target)); + } + if (m08Target != null) { + list.add(buildEntity("08", m08Target)); + } + if (m09Target != null) { + list.add(buildEntity("09", m09Target)); + } + if (m10Target != null) { + list.add(buildEntity("10", m10Target)); + } + if (m11Target != null) { + list.add(buildEntity("11", m11Target)); + } + if (m12Target != null) { + list.add(buildEntity("12", m12Target)); + } + return list; + } + + private BsEnergyTargetEntity buildEntity(String month, BigDecimal target) { + BsEnergyTargetEntity entity = new BsEnergyTargetEntity(); + entity.setYear(super.getYear()); + entity.setMonth(month); + entity.setTarget(target); + entity.setType(super.getType()); + return entity; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java index 8247f41b3..d46a192f7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyTargetService.java @@ -25,16 +25,14 @@ */ package org.springblade.desk.energy.service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.core.tool.api.R; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; import java.util.List; -import java.util.Map; /** * 能耗目标表 服务类 @@ -52,36 +50,20 @@ public interface IBsEnergyTargetService extends BaseService selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget); - - /** - * 导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportBsEnergyTarget(Wrapper queryWrapper); - /** - * 根据月份获取用水目标 + * 自定义查询 * - * @param month 月份 - * @return 用水目标 - */ - BigDecimal getWaterTargetByMonth(String month); - - /** - * 根据月份获取用电目标 - * - * @param month 月份 - * @return 用电目标 + * @param bsEnergyTarget + * @return */ - BigDecimal getElectricTargetByMonth(String month); + List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget); /** - * 根据条件查询列表 + * 数据导入 * - * @param conMap + * @param file + * @param type * @return */ - List listByMap(Map conMap); + R importExcelData(MultipartFile file, String type); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java index b65eb467c..fb0c600b7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyTargetServiceImpl.java @@ -26,20 +26,24 @@ package org.springblade.desk.energy.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.springblade.desk.dashboard.utils.DateUtils; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.energy.excel.BsEnergyTargetExcel; import org.springblade.desk.energy.pojo.entity.BsEnergyTargetEntity; import org.springblade.desk.energy.pojo.vo.BsEnergyTargetVO; -import org.springblade.desk.energy.excel.BsEnergyTargetWaterExcel; import org.springblade.desk.energy.mapper.BsEnergyTargetMapper; import org.springblade.desk.energy.service.IBsEnergyTargetService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 能耗目标表 服务实现类 @@ -50,46 +54,49 @@ import java.util.Map; @Service public class BsEnergyTargetServiceImpl extends BaseServiceImpl implements IBsEnergyTargetService { - @Override - public IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget) { - return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget)); - } + @Override + public IPage selectBsEnergyTargetPage(IPage page, BsEnergyTargetVO bsEnergyTarget) { + return page.setRecords(baseMapper.selectBsEnergyTargetPage(page, bsEnergyTarget)); + } + @Override + public List selectBsEnergyTargetList(BsEnergyTargetVO bsEnergyTarget) { + return baseMapper.selectBsEnergyTargetList(bsEnergyTarget); + } - @Override - public List exportBsEnergyTarget(Wrapper queryWrapper) { - List bsEnergyTargetList = baseMapper.exportBsEnergyTarget(queryWrapper); - //bsEnergyTargetList.forEach(bsEnergyTarget -> { - // bsEnergyTarget.setTypeName(DictCache.getValue(DictEnum.YES_NO, BsEnergyTarget.getType())); - //}); - return bsEnergyTargetList; - } + @Override + public R importExcelData(MultipartFile file, String type) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, BsEnergyTargetExcel.class + ); + List voList = importList.stream() + .map(excel -> { + BsEnergyTargetVO vo = new BsEnergyTargetVO(); + BeanUtils.copyProperties(excel, vo); + vo.setType(type); + return vo; + }) + .collect(Collectors.toList()); + List years = importList.stream().map(BsEnergyTargetExcel::getYear).collect(Collectors.toList()); + List existList = this.list(new LambdaQueryWrapper().in(BsEnergyTargetEntity::getYear, years).eq(BsEnergyTargetEntity::getType, type)); + Map existMap = existList.stream().collect(Collectors.toMap(e -> e.getYear() + "-" + e.getMonth() + "-" + e.getType(), BsEnergyTargetEntity::getId, (oldValue, newValue) -> oldValue)); + List saves = new ArrayList<>(); + for (BsEnergyTargetVO bsEnergyTargetVO : voList) { + List bsEnergyTargetEntities = bsEnergyTargetVO.parseEntities(); + for (BsEnergyTargetEntity bsEnergyTarget : bsEnergyTargetEntities) { + String key = bsEnergyTarget.getYear() + "-" + bsEnergyTarget.getMonth() + "-" + bsEnergyTarget.getType(); + if (existMap.containsKey(key)) { + bsEnergyTarget.setId(existMap.get(key)); + } + } + saves.addAll(bsEnergyTargetEntities); + } + return R.status(this.saveOrUpdateBatch(saves)); + } - @Override - public BigDecimal getWaterTargetByMonth(String month) { - BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper() - .eq(BsEnergyTargetEntity::getMonth, month)); - if(energyTargetEntity != null){ - return energyTargetEntity.getTarget(); - } - return new BigDecimal(0); - } - @Override - public BigDecimal getElectricTargetByMonth(String month) { - String year = month.substring(0, 4); - int quarter = DateUtils.getQuarter(Integer.parseInt(month.substring(5, 7))); - BsEnergyTargetEntity energyTargetEntity = this.getOne(new LambdaQueryWrapper() - .eq(BsEnergyTargetEntity::getYear, year) - .eq(BsEnergyTargetEntity::getQuarter, quarter)); - if (energyTargetEntity != null) { - return energyTargetEntity.getTarget(); - } - return new BigDecimal(0); - } - - @Override - public List listByMap(Map conMap){ - return baseMapper.listByMap(conMap); - } } diff --git a/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls b/blade-service/blade-desk/src/main/resources/Excel/energy/用电目标.xls deleted file mode 100644 index 56513094cef29b6d7ca786a5b56000966329c38c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 Vwb+|2%kPV45v0_mUimV*WWO%ZKo0-_ delta 218 zcmZozz}T>WaYGIZ+lB1=+se;QE@Ek8ns2xH7mK|u&sG}-AYftCC^gBM?CNButH!_t z6o6pHlDNNqTnu2zcV+Au8Vo)R`V1)y3yn1y{xfhfa7=#fWXfc0H(AN~hbaTY0vUdw zMiz!z1|9}RAbg+<;WIGtfh+-vfB?v74kiHzd$PTYI_q@?HU@*qtgdD}AVG*K28PM* mt~)0S_@CY6_Jf6ufu#uO^3DIemN2uLGFUK}ZC>sd$p`==t1vnM From dada568893b28343ae6a3d2b12dd479d52cd2877 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Mon, 25 May 2026 10:04:17 +0800 Subject: [PATCH 12/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9F=B3=E5=A2=A8=E6=A8=A1=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/pojo/dto/StGraphiteMoldOutDTO.java | 26 ++ .../wms/pojo/entity/StGraphiteMoldOut.java | 151 ++++++++ .../wms/pojo/vo/StGraphiteMoldOutVO.java | 24 ++ .../StGraphiteMoldOutController.java | 234 ++++++++++++ .../wms/excel/StGraphiteMoldOutExcel.java | 164 +++++++++ .../wms/mapper/StGraphiteMoldOutMapper.java | 52 +++ .../wms/mapper/StGraphiteMoldOutMapper.xml | 118 ++++++ .../service/IStGraphiteMoldOutService.java | 51 +++ .../impl/StGraphiteMoldOutServiceImpl.java | 345 ++++++++++++++++++ .../wms/wrapper/StGraphiteMoldOutWrapper.java | 36 ++ 10 files changed, 1201 insertions(+) create mode 100644 blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StGraphiteMoldOutDTO.java create mode 100644 blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGraphiteMoldOut.java create mode 100644 blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGraphiteMoldOutController.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/excel/StGraphiteMoldOutExcel.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGraphiteMoldOutService.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/wrapper/StGraphiteMoldOutWrapper.java diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StGraphiteMoldOutDTO.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StGraphiteMoldOutDTO.java new file mode 100644 index 000000000..8372d0bcc --- /dev/null +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StGraphiteMoldOutDTO.java @@ -0,0 +1,26 @@ +package org.springblade.wms.pojo.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; + +import java.io.Serial; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutDTO + * @description: 石墨模出库 数据传输对象实体类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +@Data +@EqualsAndHashCode(callSuper = true) +public class StGraphiteMoldOutDTO extends StGraphiteMoldOut { + @Serial + private static final long serialVersionUID = 1L; + + + +} diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGraphiteMoldOut.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGraphiteMoldOut.java new file mode 100644 index 000000000..0b91e948b --- /dev/null +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGraphiteMoldOut.java @@ -0,0 +1,151 @@ +package org.springblade.wms.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOut + * @description: 石墨模出库 实体类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +@Data +@TableName("ST_GRAPHITE_MOLD_OUT") +@Schema(description = "StGraphiteMoldOut对象") +@EqualsAndHashCode(callSuper = true) +public class StGraphiteMoldOut extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 出库凭证信息 + */ + @Schema(description = "出库凭证信息") + private Long sirId; + + /** + * 生产单号 + */ + @TableField(value = "YO_CODE") + private String yoCode; + + /** + * 批次号 + */ + @Schema(description = "批次号") + private String piNo; + + /** + * 流程卡号 + */ + @Schema(description = "流程卡号") + private String cardNo; + + /** + * 物料ID + */ + @Schema(description = "物料ID") + private Long goodsId; + + /** + * 物料编号 + */ + @Schema(description = "物料编号") + private String goodsCode; + + /** + * 物料名称 + */ + @Schema(description = "物料名称") + private String goodsName; + + /** + * 物料需求量 + */ + @Schema(description = "物料需求量") + private Double needQuantity; + + /** + * 库房ID + */ + @Schema(description = "库房ID") + private Long shId; + + /** + * 库房名称 + */ + @Schema(description = "库房名称") + private String shName; + + /** + * 库位ID + */ + @Schema(description = "库位ID") + private Long slId; + + /** + * 库位号 + */ + @Schema(description = "库位号") + private String location; + + /** + * 已出库数量 + */ + @Schema(description = "已出库数量") + private Double outedQuantity; + + /** + * 出库时间 + */ + @Schema(description = "出库时间") + private Date outTime; + + /** + * 出库人 + */ + @Schema(description = "出库人") + private Long outUser; + + /** + * 出库单号 + */ + @Schema(description = "出库单号") + private String outCode; + + /** + * 库存ID + */ + @Schema(description = "库存ID") + private Long rlsId; + + /** + * 状态 + */ + @Schema(description = "状态") + private Long curStatus; + + /** + * 可用库存数量 + */ + @TableField(exist = false) + private Double stockQty; + + /** + * 领料人ID + */ + @Schema(description = "领料人ID") + private Long picker; + +} diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java new file mode 100644 index 000000000..ef1fe1a0a --- /dev/null +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java @@ -0,0 +1,24 @@ +package org.springblade.wms.pojo.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; + +import java.io.Serial; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutVO + * @description: 石墨模出库 视图实体类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ +@Data +@EqualsAndHashCode(callSuper = true) +public class StGraphiteMoldOutVO extends StGraphiteMoldOut { + @Serial + private static final long serialVersionUID = 1L; + + +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGraphiteMoldOutController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGraphiteMoldOutController.java new file mode 100644 index 000000000..e2287665c --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGraphiteMoldOutController.java @@ -0,0 +1,234 @@ +package org.springblade.wms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.log.annotation.ApiLog; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.wms.excel.StGraphiteMoldOutExcel; +import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; +import org.springblade.wms.pojo.vo.StGraphiteMoldOutVO; +import org.springblade.wms.pojo.vo.StStockInoutRecordVO; +import org.springblade.wms.service.IStGraphiteMoldOutService; +import org.springblade.wms.service.IStStockInoutRecordService; +import org.springblade.wms.wrapper.StGraphiteMoldOutWrapper; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutController + * @description: 石墨模出库 控制器 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +@RestController +@AllArgsConstructor +@RequestMapping("/stGraphiteMoldOut") +@Tag(name = "石墨模出库", description = "石墨模出库接口") +public class StGraphiteMoldOutController extends BladeController { + + private final IStGraphiteMoldOutService stGraphiteMoldOutService; + private final IStStockInoutRecordService stStockInoutRecordService; + + /** + * 石墨模出库 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiLog("石墨模出库 详情") + @Operation(summary = "详情", description = "传入stGraphiteMoldOut") + public R detail(StGraphiteMoldOut stGraphiteMoldOut) { + StGraphiteMoldOut detail = stGraphiteMoldOutService.getOne(Condition.getQueryWrapper(stGraphiteMoldOut)); + return R.data(StGraphiteMoldOutWrapper.build().entityVO(detail)); + } + + /** + * 石墨模出库 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiLog("石墨模出库 分页") + @Operation(summary = "分页", description = "传入stGraphiteMoldOut") + public R> list(@Parameter(hidden = true) @RequestParam Map stGraphiteMoldOut, Query query) { + IPage pages = stGraphiteMoldOutService.page(Condition.getPage(query), Condition.getQueryWrapper(stGraphiteMoldOut, StGraphiteMoldOut.class)); + return R.data(StGraphiteMoldOutWrapper.build().pageVO(pages)); + } + + /** + * 石墨模出库 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + @ApiLog("石墨模出库 自定义分页") + @Operation(summary = "分页", description = "传入stGraphiteMoldOut") + public R> page(StGraphiteMoldOutVO stGraphiteMoldOut, Query query) { + IPage pages = stGraphiteMoldOutService.selectStGraphiteMoldOutPage(Condition.getPage(query), stGraphiteMoldOut); + return R.data(pages); + } + + /** + * 石墨模出库 新增 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @ApiLog("石墨模出库 新增") + @Operation(summary = "新增", description = "传入stGraphiteMoldOut") + public R save(@Valid @RequestBody StGraphiteMoldOut stGraphiteMoldOut) { + return R.status(stGraphiteMoldOutService.save(stGraphiteMoldOut)); + } + + /** + * 石墨模出库 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @ApiLog("石墨模出库 修改") + @Operation(summary = "修改", description = "传入stGraphiteMoldOut") + public R update(@Valid @RequestBody StGraphiteMoldOut stGraphiteMoldOut) { + return R.status(stGraphiteMoldOutService.updateById(stGraphiteMoldOut)); + } + + /** + * 石墨模出库 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiLog("石墨模出库 新增或修改") + @Operation(summary = "新增或修改", description = "传入stGraphiteMoldOut") + public R submit(@Valid @RequestBody StGraphiteMoldOut stGraphiteMoldOut) { + return R.status(stGraphiteMoldOutService.saveOrUpdate(stGraphiteMoldOut)); + } + + /** + * 石墨模出库 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiLog("石墨模出库 删除") + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(stGraphiteMoldOutService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 石墨模出库 生成出库单号 + */ + @GetMapping("/generateCode") + @ApiOperationSupport(order = 8) + @ApiLog("石墨模出库 生成出库单号") + @Operation(summary = "生成石墨模出库单号", description = "获取新单据号并返回空账单对象") + public R generateCode() { + // 1. 生成单号 + String sirCode = stStockInoutRecordService.generateCode(); + + // 2. 封装合表 VO + StStockInoutRecordVO vo = new StStockInoutRecordVO(); + vo.setSirCode(sirCode); + vo.setCreateUser(AuthUtil.getUserId()); + + return R.data(vo); + } + + /** + * 生成石墨模预出库单 + */ + @PostMapping("/generateOrder") + @ApiOperationSupport(order = 9) + @ApiLog("生成石墨模预出库单") + @Operation(summary = "生成石墨模预出库单", description = "按物料编号+规格等条件查库存,库存充足生成预出库单,不足返回指定提示") + public R> generatePreOutOrder( + @Parameter(description = "石墨模预出库信息", required = true) + @RequestBody StGraphiteMoldOutDTO dto + ) { + return R.data(stGraphiteMoldOutService.generatePreOutOrder(dto)); + } + + /** + * 批量生成石墨模预出库单 + */ + @PostMapping("/batchGenerateOrder") + @ApiOperationSupport(order = 10) + @ApiLog("批量生成石墨模预出库单") + @Operation(summary = "批量生成石墨模预出库单", description = "批量传入石墨模信息,逐条校验库存,成功生成预出库单,失败收集提示信息(一条失败不影响其他)") + public R> batchGeneratePreOutOrder( + @Parameter(description = "石墨模预出库信息集合", required = true) + @RequestBody List dtoList + ) { + Map result = stGraphiteMoldOutService.batchGeneratePreOutOrder(dtoList); + return R.data(result); + } + + /** + * 扫码查询/新增待出库数据 + */ + @GetMapping("/scanCard") + @ApiOperationSupport(order = 11) + @ApiLog("扫码查询/新增待出库数据") + @Operation(summary = "扫码处理石墨模出库", description = "传入流程卡号,查询/新增待出库数据") + public R> scanCard( + @Parameter(description = "流程卡号(扫码内容)", required = true) @RequestParam String cardNo) { + return R.data(stGraphiteMoldOutService.scanCardProcess(cardNo, AuthUtil.getUser())); + } + + /** + * 编辑出库数量后 提交确认出库 + */ + @PostMapping("/submitOutStock") + @ApiOperationSupport(order = 12) + @ApiLog("编辑出库数量后 提交确认出库") + @Operation(summary = "石墨模出库-提交确认出库", description = "填写出库数量后提交,写入出入库记录并扣减库存,变更为已出库状态") + public R submitOutStock(@RequestBody StGraphiteMoldOut stGraphiteMoldOut) { + BladeUser user = AuthUtil.getUser(); + StGraphiteMoldOut result = stGraphiteMoldOutService.submitOutStock(stGraphiteMoldOut, user); + return R.data(result); + } + + /** + * 编辑出库数量后 批量出库 + */ + @PostMapping("/batchSubmitOutStock") + @ApiOperationSupport(order = 13) + @ApiLog("编辑出库数量后 批量出库") + @Operation(summary = "石墨模出库-提交确认出库", description = "填写出库数量后提交,写入出入库记录并扣减库存,变更为已出库状态") + public R> batchSubmitOutStock(@RequestBody List paramList) { + BladeUser user = AuthUtil.getUser(); + List result = stGraphiteMoldOutService.batchSubmitOutStock(paramList, user); + return R.data(result); + } + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-stGraphiteMoldOut") + @ApiOperationSupport(order = 14) + @ApiLog("导出数据") + @Operation(summary = "导出数据", description = "传入stGraphiteMoldOut") + public void exportStGraphiteMoldOut(@Parameter(hidden = true) @RequestParam Map stGraphiteMoldOut, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(stGraphiteMoldOut, StGraphiteMoldOut.class); + List list = stGraphiteMoldOutService.exportStGraphiteMoldOut(queryWrapper); + ExcelUtil.export(response, "石墨模出库数据" + DateUtil.time(), "石墨模出库数据表", list, StGraphiteMoldOutExcel.class); + } + +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/excel/StGraphiteMoldOutExcel.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/excel/StGraphiteMoldOutExcel.java new file mode 100644 index 000000000..69a60c470 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/excel/StGraphiteMoldOutExcel.java @@ -0,0 +1,164 @@ +package org.springblade.wms.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutExcel + * @description: 石墨模出库 Excel实体类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class StGraphiteMoldOutExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ColumnWidth(20) + @ExcelProperty("主键") + private Long id; + /** + * 租户ID + */ + @ColumnWidth(20) + @ExcelProperty("租户ID") + private String tenantId; + /** + * 是否已删除 + */ + @ColumnWidth(20) + @ExcelProperty("是否已删除") + private Long isDeleted; + /** + * 出库凭证信息 + */ + @ColumnWidth(20) + @ExcelProperty("出库凭证信息") + private Long sirId; + /** + * 车间订单号 + */ + @ColumnWidth(20) + @ExcelProperty("车间订单号") + private String woCode; + /** + * 生产单号 + */ + @ColumnWidth(20) + @ExcelProperty("生产单号") + private String yoCode; + /** + * 零件号 + */ + @ColumnWidth(20) + @ExcelProperty("零件号") + private String partCode; + /** + * 零件名称 + */ + @ColumnWidth(20) + @ExcelProperty("零件名称") + private String partName; + /** + * 批次号 + */ + @ColumnWidth(20) + @ExcelProperty("批次号") + private String piNo; + /** + * 流程卡号 + */ + @ColumnWidth(20) + @ExcelProperty("流程卡号") + private String cardNo; + /** + * 物料需求量 + */ + @ColumnWidth(20) + @ExcelProperty("物料需求量") + private Double needQuantity; + /** + * 已出库数量 + */ + @ColumnWidth(20) + @ExcelProperty("已出库数量") + private Double outedQuantity; + /** + * 状态 + */ + @ColumnWidth(20) + @ExcelProperty("状态") + private Long curStatus; + /** + * 出库时间 + */ + @ColumnWidth(20) + @ExcelProperty("出库时间") + private Date outTime; + /** + * 出库人 + */ + @ColumnWidth(20) + @ExcelProperty("出库人") + private Long outUser; + /** + * 物料ID + */ + @ColumnWidth(20) + @ExcelProperty("物料ID") + private Long goodsId; + /** + * 库位ID + */ + @ColumnWidth(20) + @ExcelProperty("库位ID") + private Long slId; + /** + * 库房ID + */ + @ColumnWidth(20) + @ExcelProperty("库房ID") + private Long shId; + /** + * 库存ID + */ + @ColumnWidth(20) + @ExcelProperty("库存ID") + private Long rlsId; + /** + * 出库单号 + */ + @ColumnWidth(20) + @ExcelProperty("出库单号") + private String outCode; + /** + * 备注 + */ + @ColumnWidth(20) + @ExcelProperty("备注") + private String memo; + /** + * 领料人ID + */ + @ColumnWidth(20) + @ExcelProperty("领料人ID") + private Long picker; + +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.java new file mode 100644 index 000000000..cc14e2d02 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.java @@ -0,0 +1,52 @@ +package org.springblade.wms.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.wms.excel.StGraphiteMoldOutExcel; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; +import org.springblade.wms.pojo.vo.StGraphiteMoldOutVO; + +import java.util.List; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutMapper + * @description: 石墨模出库 Mapper 接口 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +public interface StGraphiteMoldOutMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param stGraphiteMoldOut 查询参数 + * @return List + */ + List selectStGraphiteMoldOutPage(IPage page, StGraphiteMoldOutVO stGraphiteMoldOut); + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportStGraphiteMoldOut(@Param("ew") Wrapper queryWrapper); + + StGraphiteMoldOut getBySirId(Long sirId); + + WorkOrder getByWoCode(String cardNo); + + YieldOrder getByYoCode(String cardNo); + + YieldOrder getByYieldOrder(String yoCode); + + List getYieldOrderList(Long id, String yieldType); +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml new file mode 100644 index 000000000..f188ca3a3 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGraphiteMoldOutService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGraphiteMoldOutService.java new file mode 100644 index 000000000..64fcf136f --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGraphiteMoldOutService.java @@ -0,0 +1,51 @@ +package org.springblade.wms.service; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.secure.BladeUser; +import org.springblade.wms.excel.StGraphiteMoldOutExcel; +import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; +import org.springblade.wms.pojo.vo.StGraphiteMoldOutVO; + +import java.util.List; +import java.util.Map; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName IStGraphiteMoldOutService + * @description: 石墨模出库 服务类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ +public interface IStGraphiteMoldOutService extends BaseService { + /** + * 自定义分页 + * + * @param page 分页参数 + * @param stGraphiteMoldOut 查询参数 + * @return IPage + */ + IPage selectStGraphiteMoldOutPage(IPage page, StGraphiteMoldOutVO stGraphiteMoldOut); + + + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportStGraphiteMoldOut(Wrapper queryWrapper); + + List scanCardProcess(String cardNo, BladeUser user); + + StGraphiteMoldOut submitOutStock(StGraphiteMoldOut stGraphiteMoldOut, BladeUser user); + + List generatePreOutOrder(StGraphiteMoldOutDTO dto); + + Map batchGeneratePreOutOrder(List dtoList); + + List batchSubmitOutStock(List paramList, BladeUser user); +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java new file mode 100644 index 000000000..3e6069757 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java @@ -0,0 +1,345 @@ +package org.springblade.wms.service.impl; + +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import jakarta.annotation.Resource; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.BladeUser; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.wms.excel.StGraphiteMoldOutExcel; +import org.springblade.wms.mapper.StGraphiteMoldOutMapper; +import org.springblade.wms.mapper.StRealtimeStockMapper; +import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO; +import org.springblade.wms.pojo.entity.*; +import org.springblade.wms.pojo.vo.StGraphiteMoldOutVO; +import org.springblade.wms.service.*; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.*; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutServiceImpl + * @description: 石墨模出库 服务实现类 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ + +@Service +public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl implements IStGraphiteMoldOutService { + @Resource + StRealtimeStockMapper stRealtimeStockMapper; + @Resource + IStStockInoutRecordService stStockInoutRecordService; + @Resource + IStRealtimeStockService stRealtimeStockService; + @Resource + IStGoodsService stGoodsService; + @Resource + IStStorehouseService stStorehouseService; + @Resource + IStStorageLocationService stStorageLocationService; + + @Override + public IPage selectStGraphiteMoldOutPage(IPage page, StGraphiteMoldOutVO stGraphiteMoldOut) { + return page.setRecords(baseMapper.selectStGraphiteMoldOutPage(page, stGraphiteMoldOut)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List generatePreOutOrder(StGraphiteMoldOutDTO dto) { + if (dto == null) { + throw new ServiceException("石墨模信息不能为空,无法生成预出库单"); + } + Date now = new Date(); + + YieldOrder faYieldOrder = baseMapper.getByYoCode(dto.getCardNo()); + if (faYieldOrder == null) { + throw new RuntimeException("根据生产订单ID【" + dto.getCardNo() + "】未查询到生产订单信息"); + } + + List preOutStockList = new ArrayList<>(); + + String goodsCode = faYieldOrder.getPartCode(); + Double requireQty = faYieldOrder.getYpQty(); + System.out.println("石墨模编码:" + goodsCode + ",总需求:" + requireQty); + + List candidateStockList = new ArrayList<>(); + double totalUsable = 0.0; + while (true) { + StRealtimeStock maxStock = stRealtimeStockMapper.selectMaxUsableStockByMoldAttr(goodsCode); + + if (maxStock == null) { + break; + } + + double occupyQty = Optional.ofNullable(maxStock.getOccupyQuantity()).orElse(0D); + double usableQty = maxStock.getQuantity() - occupyQty; + + if (usableQty <= 0) { + break; + } + + candidateStockList.add(maxStock); + totalUsable += usableQty; + + if (totalUsable >= requireQty) { + break; + } + } + + if (totalUsable < requireQty - 0.001) { + throw new ServiceException("石墨模【" + goodsCode + "】库存不足,无法生成!需求数量:" + requireQty + ",可用库存:" + totalUsable); + } + + double remainingQty = requireQty; + for (StRealtimeStock maxStock : candidateStockList) { + if (remainingQty <= 0.001) { + break; + } + + double occupyQty = Optional.ofNullable(maxStock.getOccupyQuantity()).orElse(0D); + double usableQty = maxStock.getQuantity() - occupyQty; + double actualTake = Math.min(usableQty, remainingQty); + + StGraphiteMoldOut preOutStock = new StGraphiteMoldOut(); + preOutStock.setYoCode(faYieldOrder.getYoCode()); + preOutStock.setCardNo(dto.getCardNo()); + + preOutStock.setOutCode(stStockInoutRecordService.generateCode()); + preOutStock.setNeedQuantity(requireQty); + preOutStock.setGoodsId(maxStock.getGoodsId()); + StGoods stGoods = stGoodsService.getById(maxStock.getGoodsId()); + preOutStock.setGoodsName(stGoods.getGoodsName()); + preOutStock.setGoodsCode(stGoods.getGoodsCode()); + preOutStock.setSlId(maxStock.getSlId()); + StStorageLocation location = stStorageLocationService.getById(maxStock.getSlId()); + preOutStock.setLocation(location.getLocation()); + preOutStock.setShId(maxStock.getShId()); + StStorehouse storehouse = stStorehouseService.getById(maxStock.getShId()); + preOutStock.setShName(storehouse.getShName()); + preOutStock.setRlsId(maxStock.getId()); + preOutStock.setPiNo(maxStock.getPiNo()); + + preOutStock.setCurStatus(0L); + preOutStock.setCreateTime(now); + preOutStock.setUpdateTime(now); + + preOutStockList.add(preOutStock); + System.out.println("石墨模[编码:" + goodsCode + "]库存充足,已构建预出库信息,库存ID:" + maxStock.getId()); + + double newOccupy = occupyQty + actualTake; + maxStock.setOccupyQuantity(newOccupy); + stRealtimeStockService.updateById(maxStock); + + StRealtimeStockLock lock = new StRealtimeStockLock(); + lock.setId(IdUtil.getSnowflake().nextId()); + lock.setRlsId(maxStock.getId()); + lock.setWoNo(preOutStock.getCardNo()); + lock.setOccupyQuantity(actualTake); + lock.setStatus(0); + stRealtimeStockMapper.insertStockLock(lock); + remainingQty -= actualTake; + } + System.out.println("石墨模[编码:" + goodsCode + "] 预出库全部完成!"); + + this.saveBatch(preOutStockList); + return preOutStockList; + } + + @Override + public Map batchGeneratePreOutOrder(List dtoList) { + Map resultMap = new HashMap<>(2); + List successList = new ArrayList<>(); + List failMsgList = new ArrayList<>(); + + if (CollectionUtils.isEmpty(dtoList)) { + failMsgList.add("批量生成失败:石墨模信息集合不能为空"); + resultMap.put("successList", successList); + resultMap.put("failMsgList", failMsgList); + return resultMap; + } + + for (int i = 0; i < dtoList.size(); i++) { + StGraphiteMoldOutDTO dto = dtoList.get(i); + try { + List preOutOrderList = this.generatePreOutOrder(dto); + for (StGraphiteMoldOut item : preOutOrderList) { + if (item != null) { + successList.add(item); + } + } + } catch (ServiceException e) { + failMsgList.add(String.format("第%s条:%s", i + 1, e.getMessage())); + } catch (Exception e) { + failMsgList.add(String.format("第%s条:生成失败,未知异常:%s", i + 1, e.getMessage())); + } + } + + resultMap.put("successList", successList); + resultMap.put("failMsgList", failMsgList); + return resultMap; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List scanCardProcess(String cardNo, BladeUser user) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("card_no", cardNo); + queryWrapper.eq("cur_status", 0L); + + List waitOutList = baseMapper.selectList(queryWrapper); + + if (!CollectionUtils.isEmpty(waitOutList)) { + for (StGraphiteMoldOut waitOut : waitOutList) { + StRealtimeStock stock = stRealtimeStockService.getById(waitOut.getRlsId()); + + if (stock != null) { + waitOut.setStockQty(stock.getQuantity() - stock.getOccupyQuantity()); + waitOut.setPiNo(stock.getPiNo()); + } + StGoods stGoods = stGoodsService.getById(waitOut.getGoodsId()); + waitOut.setGoodsCode(stGoods.getGoodsCode()); + waitOut.setGoodsName(stGoods.getGoodsName()); + StStorehouse storehouse = stStorehouseService.getById(waitOut.getShId()); + waitOut.setShName(storehouse.getShName()); + StStorageLocation location = stStorageLocationService.getById(waitOut.getSlId()); + waitOut.setLocation(location.getLocation()); + } + return waitOutList; + }else { + StGraphiteMoldOutDTO dto = new StGraphiteMoldOutDTO(); + dto.setCardNo(cardNo); + + List stGraphiteMoldOutList = this.generatePreOutOrder(dto); + if (!CollectionUtils.isEmpty(stGraphiteMoldOutList)) { + for (StGraphiteMoldOut waitOut : stGraphiteMoldOutList) { + StRealtimeStock stock = stRealtimeStockService.getById(waitOut.getRlsId()); + + if (stock != null) { + waitOut.setStockQty(stock.getQuantity() - stock.getOccupyQuantity()); + waitOut.setPiNo(stock.getPiNo()); + } + StGoods stGoods = stGoodsService.getById(waitOut.getGoodsId()); + waitOut.setGoodsCode(stGoods.getGoodsCode()); + waitOut.setGoodsName(stGoods.getGoodsName()); + StStorehouse storehouse = stStorehouseService.getById(waitOut.getShId()); + waitOut.setShName(storehouse.getShName()); + StStorageLocation location = stStorageLocationService.getById(waitOut.getSlId()); + waitOut.setLocation(location.getLocation()); + } + return stGraphiteMoldOutList; + } + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public StGraphiteMoldOut submitOutStock(StGraphiteMoldOut param, BladeUser user) { + List outList = new ArrayList<>(); + outList.add(param); + List resultList = this.batchSubmitOutStock(outList, user); + return resultList.isEmpty() ? null : resultList.get(0); + } + + @Transactional(rollbackFor = Exception.class) + public List batchSubmitOutStock(List paramList, BladeUser user) { + if (paramList == null || paramList.isEmpty()) { + throw new ServiceException("出库数据不能为空"); + } + Long userId = Long.valueOf(user.getUserId()); + Date nowDate = new Date(); + + List allInoutList = new ArrayList<>(); + List stockList = new ArrayList<>(); + List resultList = new ArrayList<>(); + + for (StGraphiteMoldOut param : paramList) { + if (param.getId() == null) { + throw new ServiceException("出库数据ID不能为空"); + } + if (param.getOutedQuantity() == null || param.getOutedQuantity() <= 0) { + throw new ServiceException("流程卡号【"+param.getCardNo()+"】请填写正确的出库数量,数量必须大于0"); + } + + StGraphiteMoldOut outEntity = this.getById(param.getId()); + if (outEntity == null) { + throw new ServiceException("主键ID【"+param.getId()+"】未查询到该待出库数据"); + } + if (outEntity.getCurStatus() != 0L) { + throw new ServiceException("流程卡号【"+outEntity.getCardNo()+"】非待出库状态,无法提交出库"); + } + + StRealtimeStock realtimeStock = stRealtimeStockService.getById(outEntity.getRlsId()); + if (realtimeStock != null) { + stockList.add(realtimeStock); + } + + if (param.getOutedQuantity() > realtimeStock.getQuantity()) { + throw new ServiceException("流程卡号【"+outEntity.getCardNo()+"】出库数量不能大于库存总数量,库存数量为:" + realtimeStock.getQuantity()); + } + + outEntity.setRlsId(param.getRlsId()); + outEntity.setGoodsId(param.getGoodsId()); + outEntity.setShId(param.getShId()); + outEntity.setSlId(param.getSlId()); + outEntity.setOutedQuantity(param.getOutedQuantity()); + outEntity.setOutUser(userId); + outEntity.setOutTime(nowDate); + outEntity.setCurStatus(1L); + outEntity.setUpdateUser(userId); + outEntity.setUpdateTime(nowDate); + outEntity.setPicker(param.getPicker()); + this.updateById(outEntity); + + StStockInoutRecord inoutRecord = new StStockInoutRecord(); + inoutRecord.setCheckNo(outEntity.getCardNo()); + inoutRecord.setSirCode(outEntity.getOutCode()); + inoutRecord.setSlId(outEntity.getSlId()); + inoutRecord.setRlsId(outEntity.getRlsId()); + inoutRecord.setShId(outEntity.getShId()); + inoutRecord.setGoodsId(outEntity.getGoodsId()); + inoutRecord.setPiNo(realtimeStock.getPiNo()); + inoutRecord.setStovePiNo(realtimeStock.getStovePiNo()); + inoutRecord.setQuantity(param.getOutedQuantity()); + inoutRecord.setUnitPrice(realtimeStock.getBalanceMoney()); + inoutRecord.setSirMoney(param.getOutedQuantity() * realtimeStock.getBalanceMoney()); + inoutRecord.setInOutType(StStockInoutRecord.OUT_TYPE); + + inoutRecord.setInOutSource(StStockInoutRecord.INOUT_SOURCE_GRAPHITE_MOLD_OUT); + inoutRecord.setInOutDate(nowDate); + + inoutRecord.setUserId(param.getPicker()); + inoutRecord.setCreateUser(userId); + inoutRecord.setCreateTime(nowDate); + inoutRecord.setUpdateUser(userId); + inoutRecord.setUpdateTime(nowDate); + + stStockInoutRecordService.save(inoutRecord); + allInoutList.add(inoutRecord); + + outEntity.setSirId(inoutRecord.getId()); + this.updateById(outEntity); + resultList.add(outEntity); + } + + if (!allInoutList.isEmpty() && !stockList.isEmpty()) { + stRealtimeStockService.reviseRealTimeStock(allInoutList, stockList, null); + } + + return resultList; + } + + @Override + public List exportStGraphiteMoldOut(Wrapper queryWrapper) { + List list = baseMapper.exportStGraphiteMoldOut(queryWrapper); + return list; + } +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/wrapper/StGraphiteMoldOutWrapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/wrapper/StGraphiteMoldOutWrapper.java new file mode 100644 index 000000000..a11d31e9c --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/wrapper/StGraphiteMoldOutWrapper.java @@ -0,0 +1,36 @@ +package org.springblade.wms.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.wms.pojo.entity.StGraphiteMoldOut; +import org.springblade.wms.pojo.vo.StGraphiteMoldOutVO; + +import java.util.Objects; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGraphiteMoldOutWrapper + * @description: 石墨模出库 包装类,返回视图层所需的字段 + * @autor: WuSiYu + * @create 2025-xx-xx xx:xx + **/ +public class StGraphiteMoldOutWrapper extends BaseEntityWrapper { + + public static StGraphiteMoldOutWrapper build() { + return new StGraphiteMoldOutWrapper(); + } + + @Override + public StGraphiteMoldOutVO entityVO(StGraphiteMoldOut stGraphiteMoldOut) { + StGraphiteMoldOutVO stGraphiteMoldOutVO = Objects.requireNonNull(BeanUtil.copyProperties(stGraphiteMoldOut, StGraphiteMoldOutVO.class)); + + //User createUser = UserCache.getUser(stGraphiteMoldOut.getCreateUser()); + //User updateUser = UserCache.getUser(stGraphiteMoldOut.getUpdateUser()); + //stGraphiteMoldOutVO.setCreateUserName(createUser.getName()); + //stGraphiteMoldOutVO.setUpdateUserName(updateUser.getName()); + + return stGraphiteMoldOutVO; + } + +} From ff5c7e12f3b79e7bf8413a181a2e6ec7bebf22d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Mon, 25 May 2026 10:19:05 +0800 Subject: [PATCH 13/21] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=9A=84=E8=B0=83=E6=95=B4=E5=8D=95=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=88=86=E5=A4=96=E5=8D=8F=E5=88=86=E6=B4=BE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlanAssignSteerModifyServiceImpl.java | 79 ++++++++----------- 1 file changed, 35 insertions(+), 44 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java index 7518e6e1f..ff46b46c9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java @@ -4,6 +4,8 @@ package org.springblade.desk.basic.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -18,10 +20,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.mapper.PlanAssignSteerModifyApprovalMapper; import org.springblade.desk.basic.mapper.PlanAssignSteerModifyMapper; -import org.springblade.desk.basic.pojo.entity.PlanAssignSteer; -import org.springblade.desk.basic.pojo.entity.PlanAssignSteerModify; -import org.springblade.desk.basic.pojo.entity.PlanAssignSteerModifyApproval; -import org.springblade.desk.basic.pojo.entity.PlanAssignSteerModifyD; +import org.springblade.desk.basic.pojo.entity.*; import org.springblade.desk.basic.pojo.vo.PlanAssignSteerModifyDVO; import org.springblade.desk.basic.pojo.vo.PlanAssignSteerModifyTimelineVO; import org.springblade.desk.basic.pojo.vo.PlanAssignSteerModifyVO; @@ -67,6 +66,7 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl selectPlanAssignSteerModifyPage(IPage page, PlanAssignSteerModify planAssignSteerModify) { return page.setRecords(baseMapper.selectPlanAssignSteerModifyPage(page, planAssignSteerModify)); @@ -331,46 +331,37 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl modifyDLst = planAssignSteerModifyDMapper.findByPasmId(pasmId); - //if (modifyDLst == null || modifyDLst.isEmpty()) { - // return; - //} - // - //PlanAssignSteerModify modify = getById(pasmId); - //if (modify == null) { - // return; - //} - // - //for (PlanAssignSteerModifyD modifyD : modifyDLst) { - // // 根据工艺能力和外协厂商查找现有分派规则 - // QueryWrapper queryWrapper = new QueryWrapper<>(); - // queryWrapper.eq("CRAFT_ABILITY_ID", modifyD.getPlatingId()) - // .eq("OEM_ID", modifyD.getOemId()); - // BsAssignEntity assign = bsAssignService.getOne(queryWrapper); - // - // if (assign == null) { - // // 不存在则创建新记录 - // assign = new BsAssignEntity(); - // assign.setCraftAbilityId(modifyD.getPlatingId()); - // assign.setOemId(modifyD.getOemId()); - // log.warn("分派规则不存在,创建新记录:工艺能力ID={},外协厂商ID={}", - // modifyD.getPlatingId(), modifyD.getOemId()); - // } - // - // // 更新备注信息(记录来源) - // String remark = "分派控制调整单ID:" + pasmId; - // if (Func.isNotEmpty(assign.getRemark())) { - // remark = assign.getRemark() + "; " + remark; - // } - // assign.setRemark(remark); - // - // // 保存或更新 - // if (assign.getId() == null || assign.getId() == 0) { - // bsAssignService.save(assign); - // } else { - // bsAssignService.updateById(assign); - // } - //} + List modifyDLst = planAssignSteerModifyDService.findByPasmId(pasmId); + if (modifyDLst == null || modifyDLst.isEmpty()) { + return; + } + + PlanAssignSteerModify modify = getById(pasmId); + if (modify == null) { + return; + } + + for (PlanAssignSteerModifyD modifyD : modifyDLst) { + // 根据工艺能力和外协厂商查找现有分派规则 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PLATING_ID", modifyD.getPlatingId()) + .eq("OEM_ID", modifyD.getOemId()); + List assignSteers = planAssignSteerService.list(queryWrapper); + BigDecimal assignScale = Objects.isNull(modifyD.getAssignScale()) ? BigDecimal.ZERO : modifyD.getAssignScale(); + if (CollUtil.isEmpty(assignSteers)) { + // 不存在则创建新记录 + PlanAssignSteer assignEntity = new PlanAssignSteer(); + assignEntity.setPlatingId(modifyD.getPlatingId()); + assignEntity.setOemId(modifyD.getOemId()); + assignEntity.setAssignScale(assignScale); + planAssignSteerService.save(assignEntity); + break; + } + assignSteers.forEach(assign -> { + assign.setAssignScale(assignScale); + }); + planAssignSteerService.updateBatchById(assignSteers); + } } From 36bbcbcc32288307f4f34095c23b500e1724925b Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Mon, 25 May 2026 10:41:05 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E9=98=B6=E6=A2=AF=E4=BB=B7=E6=A0=87?= =?UTF-8?q?=E8=AE=B0key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/desk/oem/pojo/vo/PriceSheetVO.java | 6 ++++++ .../desk/oem/service/impl/OemStatementServiceImpl.java | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java index 6b794530a..1a5aba6e9 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java @@ -51,6 +51,12 @@ public class PriceSheetVO { @Schema(description = "阶梯价标识") private String stairflag; + /** + * 阶梯价标记key + */ + @Schema(description = "阶梯价标记key") + private String stairflagkey; + /** * 阶梯上限 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index dcc2a1851..d23970155 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -2006,11 +2006,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl Date: Mon, 25 May 2026 13:36:33 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml index f188ca3a3..9679dac00 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml @@ -32,9 +32,9 @@ SELECT gmo.id, gmo.create_user, gmo.create_time, - gmo.sir_id, gmo.wo_code, gmo.yo_code, gmo.pi_no, + gmo.sir_id, gmo.yo_code, gmo.pi_no, gmo.card_no, gmo.need_quantity, gmo.outed_quantity, gmo.cur_status, gmo.out_time, gmo.out_user, gmo.out_code, gmo.picker, -- 物料表字段 From 7b53d1754079274f57ceead9eaa0163889219942 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Mon, 25 May 2026 13:52:53 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/wms/pojo/vo/StGraphiteMoldOutVO.java | 11 +++++++++++ .../wms/mapper/StGraphiteMoldOutMapper.xml | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java index ef1fe1a0a..81c79bc06 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGraphiteMoldOutVO.java @@ -1,5 +1,7 @@ package org.springblade.wms.pojo.vo; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.wms.pojo.entity.StGraphiteMoldOut; @@ -20,5 +22,14 @@ public class StGraphiteMoldOutVO extends StGraphiteMoldOut { @Serial private static final long serialVersionUID = 1L; + @Schema(description = "创建人名称") + @TableField(exist = false) + private String createUserName; + @Schema(description = "出库人名称") + @TableField(exist = false) + private String outUserName; + @Schema(description = "领料人名称") + @TableField(exist = false) + private String pickerName; } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml index a693270be..cd1bc29c4 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml @@ -42,7 +42,6 @@ -- 库房名称 w.id AS shId, w.sh_name, - w.sh_code, -- 库位名称 lc.id AS slId, lc.location, From 612ad1ac90a972d4ffa764b797822e779853ee2f Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Mon, 25 May 2026 13:58:24 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml index cd1bc29c4..706bfe394 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml @@ -50,8 +50,11 @@ r.pi_no, COALESCE(r.quantity, 0) - COALESCE(r.occupy_quantity, 0) AS stockQty, -- 用户名称 + cu.id AS createUserId, cu.name AS create_user_name, + ou.id AS outUserId, ou.name AS out_user_name, + pk.id AS pickerUserId, pk.name AS picker_name FROM ST_GRAPHITE_MOLD_OUT gmo LEFT JOIN ST_GOODS g ON gmo.goods_id = g.id AND g.is_deleted = 0 From 3d3a3fb85935a102f30c752957a0a473341e21b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Mon, 25 May 2026 14:22:33 +0800 Subject: [PATCH 19/21] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=B7=A5=E8=89=BA?= =?UTF-8?q?=E8=83=BD=E5=8A=9BID=E6=9F=A5=E8=AF=A2=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=88=86=E6=B4=BE=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PlanAssignSteerModifyServiceImpl.java | 78 ++++++++++++------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java index ff46b46c9..4ba62fd1c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java @@ -367,38 +367,64 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl modifyLst = null; + PlanAssignSteerModifyVO modifyVO = null; + + Boolean initSteer = false; + if (pasmId != null) { + List entity = baseMapper.findByPasmId(pasmId); + List list = baseMapper.findByPasmId(pasmId); + if (list.isEmpty()) { + return null; + } - // 查询主表信息 - List list = baseMapper.findByPasmId(pasmId); - if (list.isEmpty()) { - return null; + modifyVO = list.get(0); + + if (caId == null || caId.equals(modifyVO.getPlatingId())) { + List detailList = planAssignSteerModifyDService.findByPasmId(pasmId); + if (!detailList.isEmpty()) { + modifyLst = detailList.stream() + .map(d -> { + PlanAssignSteerModifyDVO vo = new PlanAssignSteerModifyDVO(); + BeanUtil.copyProperties(d, vo); + return vo; + }) + .collect(Collectors.toList()); + } + } else { + initSteer = true; + } + } else { + if (caId == null) { + modifyVO = new PlanAssignSteerModifyVO(); + modifyVO.setPlatingId(null); + modifyVO.setCreateMan(AuthUtil.getUserId()); + modifyVO.setCreateTime(new Date()); + } else { + initSteer = true; + } } - PlanAssignSteerModifyVO modifyVO = list.get(0); - - // 判断是否需要查询明细:caId为空 或 caId与主表的platingId匹配 - // // TODO: 2026/5/22 caId根据工艺能力查询计划分派控制 - boolean shouldQueryDetail = caId == null || caId.equals(modifyVO.getPlatingId()); - - List modifyLst = null; - if (shouldQueryDetail) { - List detailList = planAssignSteerModifyDService.findByPasmId(pasmId); - if (!detailList.isEmpty()) { - modifyLst = detailList.stream() - .map(d -> { - PlanAssignSteerModifyDVO vo = new PlanAssignSteerModifyDVO(); - BeanUtil.copyProperties(d, vo); - return vo; - }) - .collect(Collectors.toList()); - } + if (initSteer) { + modifyVO = null; + // 根据工艺能力和外协厂商查找现有分派规则 + List assignSteers = planAssignSteerService.list(Wrappers.lambdaQuery(PlanAssignSteer.class) + .eq(PlanAssignSteer::getPlatingId, caId)); + + modifyLst = assignSteers.stream() + .map(assign -> { + PlanAssignSteerModifyDVO modifyDVO = new PlanAssignSteerModifyDVO(); + modifyDVO.setPlatingId(assign.getPlatingId()); + modifyDVO.setOemId(assign.getOemId()); + modifyDVO.setAssignScale(assign.getAssignScale()); + modifyDVO.setPasId(assign.getId()); + return modifyDVO; + }) + .collect(Collectors.toList()); } modifyVO.setModifyLst(modifyLst); + return modifyVO; } From dc453d3e4a3eb9ced389d5ba6ac5942331ada8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Mon, 25 May 2026 14:47:50 +0800 Subject: [PATCH 20/21] =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E6=8E=A5=E6=94=B6?= =?UTF-8?q?=E8=80=90=E8=9A=80=E6=80=A7=E6=A3=80=E6=B5=8B=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/produce/service/impl/WorkOrderServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 9347e3634..14c084140 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1741,6 +1741,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl inspectionItems = inspectionService.list(); for (DsProcessProjectVO project : projects) { + // 如果是耐蚀性检测,需要满足三个条件才允许生产对应的检测项目:1-工作订单备注包含HTBY,2-生产标识包含JHT,3-镀种含金或者Au + if ("耐蚀性检测".equals(project.getProjectName())) { + if (!yieldOrder.getYpMemo().contains("HTBY") || !yieldOrder.getProductIdent().contains("JHT") || + !(yieldOrder.getPlate().contains("金") || yieldOrder.getPlate().contains("Au") || yieldOrder.getPlate().contains("au"))) { + continue; + } + } workPlanItem = new WorkPlanItem(); workPlanItem.setWpId(workPlan.getId()); workPlanItem.setItemCode(project.getTrialNo()); From 3fef9f372b3ae3e631c5a13d9532dfc4ae5dfa0c Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Mon, 25 May 2026 14:55:17 +0800 Subject: [PATCH 21/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml | 4 ---- .../wms/service/impl/StGraphiteMoldOutServiceImpl.java | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml index 706bfe394..d259f1ec9 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGraphiteMoldOutMapper.xml @@ -47,14 +47,10 @@ lc.location, -- 库存表字段 r.id AS rlsId, - r.pi_no, COALESCE(r.quantity, 0) - COALESCE(r.occupy_quantity, 0) AS stockQty, -- 用户名称 - cu.id AS createUserId, cu.name AS create_user_name, - ou.id AS outUserId, ou.name AS out_user_name, - pk.id AS pickerUserId, pk.name AS picker_name FROM ST_GRAPHITE_MOLD_OUT gmo LEFT JOIN ST_GOODS g ON gmo.goods_id = g.id AND g.is_deleted = 0 diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java index 3e6069757..988a70ca2 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java @@ -61,7 +61,7 @@ public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl preOutStockList = new ArrayList<>();