From d47af6e9ed12684318a3104f94ebd22f49be3fdb Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Fri, 27 Feb 2026 17:22:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A7=BD=E6=B6=B2=E5=92=8C=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/pojo/vo/LiquidTankTaskVO.java | 5 + .../wms/feign/StRealtimeStockClient.java | 9 + .../feign/StRealtimeStockClientFallback.java | 7 + blade-service/blade-desk/pom.xml | 6 + .../controller/LiquidTankController.java | 17 ++ .../controller/LiquidTankTaskController.java | 34 +++ .../wms/controller/StGoodsNewController.java | 177 +++++++++++++++ .../wms/feign/StRealtimeStockClientImpl.java | 20 ++ .../wms/service/IStGoodsNewService.java | 55 +++++ .../service/impl/StGoodsNewServiceImpl.java | 201 ++++++++++++++++++ 10 files changed, 531 insertions(+) create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsNewController.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsNewService.java create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsNewServiceImpl.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankTaskVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankTaskVO.java index f5a92141..0e40800d 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankTaskVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/LiquidTankTaskVO.java @@ -76,6 +76,11 @@ public class LiquidTankTaskVO extends LiquidTankTask { private String clearRecord; @Schema(description = "药品计算公式(报告) 加药量[计算公式] 公式内容") private String reportFormulaContent; + + + @Schema(description = "药品计算公式(报告) 理论值加药量[计算公式] 公式内容") + private String afterFormulaContent; + @Schema(description = "药品监督员签名(报告)") private String drugSuUserSign; @Schema(description = "药品监督员签名(报告)") diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java index 7d603d67..55c67c96 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java @@ -4,10 +4,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; +import org.springblade.wms.pojo.entity.StGoods; import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; /** * 仓库实时结余远程调用 @@ -23,10 +27,15 @@ public interface StRealtimeStockClient { String MEASURING_TOOLS = API_PREFIX + "/pageToolsData"; + String MEASURING_Id = API_PREFIX + "/getById"; + /** * 量具库存 */ @GetMapping(MEASURING_TOOLS) R> getMeasuringTools(@SpringQueryMap StRealtimeStockVO stRealtimeStock, @SpringQueryMap Query query); + @PostMapping(MEASURING_Id) + R getById(@RequestBody StGoods stGoods); + } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java index 220e08bd..42891640 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; +import org.springblade.wms.pojo.entity.StGoods; import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springframework.stereotype.Component; @@ -20,4 +21,10 @@ public class StRealtimeStockClientFallback implements StRealtimeStockClient { return R.fail("获取数据失败"); } + @Override + public R getById(StGoods stGoods) { + return null; + } + + } diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml index eaaf1afa..f46d21ce 100644 --- a/blade-service/blade-desk/pom.xml +++ b/blade-service/blade-desk/pom.xml @@ -129,6 +129,12 @@ barbecue 1.5-beta1 + + org.springblade + blade-wms-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java index 6f4889b3..6048003a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java @@ -113,6 +113,23 @@ public class LiquidTankController extends BladeController { return R.data(listVO); } + /** + * [槽液] list下拉去重分析项目选择 + */ + @GetMapping("/listForSelectDistinct") + @ApiOperationSupport(order = 22) + @Operation(summary = "list下拉选择", description = "") + public R> listForSelectDistinct() { + List list = service.list(); + List distinctList = list.stream() + .map(LiquidTank::getTestElement) + .distinct() + .collect(Collectors.toList()); + return R.data(distinctList); + } + + + /** * [槽液] 新增一条 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskController.java index f0e71fc0..5c4d5fc7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskController.java @@ -23,15 +23,21 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; +import org.springblade.desk.basic.pojo.entity.Formula; +import org.springblade.desk.basic.service.IFormulaService; import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.basic.constant.BaseCol; import org.springblade.desk.quality.constant.LiquidTankTaskConst; import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.excel.LiquidTankTaskExcel; +import org.springblade.desk.quality.pojo.entity.LiquidTank; import org.springblade.desk.quality.pojo.entity.LiquidTankTask; import org.springblade.desk.quality.pojo.vo.LiquidTankTaskVO; +import org.springblade.desk.quality.service.ILiquidTankService; import org.springblade.desk.quality.service.ILiquidTankTaskService; import org.springblade.desk.quality.wrapper.LiquidTankTaskWrapper; +import org.springblade.wms.feign.StRealtimeStockClient; +import org.springblade.wms.pojo.entity.StGoods; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -58,6 +64,15 @@ public class LiquidTankTaskController extends BladeController { @Resource private ILiquidTankTaskService service; + @Resource + private ILiquidTankService taskService; + + @Resource + private IFormulaService formualaService; + + @Resource + private final StRealtimeStockClient stRealtimeStockClient; + /** * [槽液检测任务] 详情 */ @@ -151,6 +166,25 @@ public class LiquidTankTaskController extends BladeController { qw.ne(BaseCol.STATUS, LiquidTankTaskConst.S_NOT_READY); IPage pages = service.page(Condition.getPage(query), qw); IPage pagesVO = LiquidTankTaskWrapper.build().pageVO(pages); + List list = pagesVO.getRecords(); + for(LiquidTankTaskVO one : list){ + LiquidTank tank = taskService.getById(one.getLiquidTankId()); + Formula detail = formualaService.getById(tank.getAddDrugFormulaId()); + if(null != detail){ + one.setReportFormulaContent(detail.getContent()); + } + Formula detailAfter = formualaService.getById(tank.getAfterTheoryFormulaId()); + + if(null != detailAfter){ + one.setAfterFormulaContent(detailAfter.getContent()); + } + + Long goodId = tank.getDrugMaterialId(); + StGoods good = new StGoods(); + good.setId(goodId); + StGoods stGoods = stRealtimeStockClient.getById(good).getData(); + one.setDrugMaterialCode(stGoods.getGoodsCode()); + } pagesVO.getRecords() .stream() .peek(service::setVOValue) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsNewController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsNewController.java new file mode 100644 index 00000000..34313446 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StGoodsNewController.java @@ -0,0 +1,177 @@ +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.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.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.desk.quality.pojo.entity.LiquidTank; +import org.springblade.wms.excel.StGoodsExcel; +import org.springblade.wms.pojo.entity.StGoods; +import org.springblade.wms.pojo.vo.StGoodsVO; +import org.springblade.wms.service.IStGoodsNewService; +import org.springblade.wms.wrapper.StGoodsWrapper; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGoodsController + * @description: + * @autor: WuSiYu + * @create 2025-12-10 11:39 + **/ + +@RestController +@AllArgsConstructor +@RequestMapping("/stGoodsNew") +@Tag(name = "物料信息表", description = "物料信息表接口") +public class StGoodsNewController extends BladeController { + + private final IStGoodsNewService stGoodsService; + + /** + * 物料信息表 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @Operation(summary = "详情", description = "传入stGoods") + public R detail(StGoods stGoods) { + StGoods detail = stGoodsService.getOne(Condition.getQueryWrapper(stGoods)); + return R.data(StGoodsWrapper.build().entityVO(detail)); + } + /** + * 物料信息表 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @Operation(summary = "分页", description = "传入stGoods") + public R> list(@Parameter(hidden = true) @RequestParam Map stGoods, Query query) { + QueryWrapper wrapper = Condition.getQueryWrapper(stGoods, StGoods.class); + wrapper.eq("is_deleted", 0); + IPage pages = stGoodsService.page(Condition.getPage(query), Condition.getQueryWrapper(stGoods, StGoods.class)); + return R.data(StGoodsWrapper.build().pageVO(pages)); + } + + /** + * 物料信息表 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + @Operation(summary = "分页", description = "传入stGoods") + public R> page(StGoodsVO stGoods, Query query) { + stGoods.setIsDeleted(0); + IPage pages = stGoodsService.selectStGoodsPage(Condition.getPage(query), stGoods); + return R.data(pages); + } + + /** + * 物料信息表 新增 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @Operation(summary = "新增", description = "传入stGoods") + public R save(@Valid @RequestBody String goodsCode) throws Exception{ + stGoodsService.saveGoods(goodsCode); + return R.success(); + } + + @GetMapping("/listForStGoods") + @ApiOperationSupport(order = 22) + @Operation(summary = "list下拉选择", description = "") + public R> listForStGoods() { + List list = stGoodsService.list(); + return R.data(list); + } + + /** + * 物料信息表 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @Operation(summary = "修改", description = "传入stGoods") + public R update(@Valid @RequestBody StGoods stGoods) { + return R.status(stGoodsService.updateById(stGoods)); + } + + /** + * 物料信息表 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @Operation(summary = "新增或修改", description = "传入stGoods") + public R submit(@Valid @RequestBody StGoods stGoods) { + return R.status(stGoodsService.saveOrUpdate(stGoods)); + } + + /** + * 物料信息表 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(stGoodsService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 设置物料状态 + */ + @PostMapping("/setUsed") + @ApiOperationSupport(order = 8) + @Operation(summary = "设置物料状态", description = "传入goodsId(物料ID)和used(状态:true=启用,false=禁用)") + public R setUsed(@Validated @RequestBody StGoods stGoods) throws Exception { + stGoodsService.changeUsed(stGoods.getId(), stGoods.getUsed()); + return R.success(); + } + + /** + * 根据物料编码查询物料 + */ + @GetMapping("/getGoodsByGoodsCode") + @ApiOperationSupport(order = 9) + @Operation(summary = "根据物料编码查询物料", description = "传入物料编码goodsCode(路径参数)") + public R getGoodsByGoodsCode( + @Validated + @PathVariable(value = "goodsCode") String goodsCode + ) throws Exception { + Object goods = stGoodsService.queryByCode(goodsCode); + return R.data(goods); + } + + /** + * 导出数据 + */ + @IsAdmin + @GetMapping("/export-stGoods") + @ApiOperationSupport(order = 10) + @Operation(summary = "导出数据", description = "传入stGoods") + public void exportStGoods(@Parameter(hidden = true) @RequestParam Map stGoods, BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper queryWrapper = Condition.getQueryWrapper(stGoods, StGoods.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(StGoods::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(StGoodsEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = stGoodsService.exportStGoods(queryWrapper); + ExcelUtil.export(response, "物料信息表数据" + DateUtil.time(), "物料信息表数据表", list, StGoodsExcel.class); + } + +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java index 4f7559ea..853e3ca8 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java @@ -11,7 +11,9 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; +import org.springblade.wms.pojo.entity.StGoods; import org.springblade.wms.pojo.vo.StRealtimeStockVO; +import org.springblade.wms.service.IStGoodsNewService; import org.springblade.wms.service.IStRealtimeStockService; import org.springframework.web.bind.annotation.RestController; @@ -32,6 +34,8 @@ public class StRealtimeStockClientImpl implements StRealtimeStockClient { private final IStRealtimeStockService stRealtimeStockService; + private final IStGoodsNewService stGoodsService; + @Override public R> getMeasuringTools(StRealtimeStockVO stRealtimeStock, Query query) { @@ -51,4 +55,20 @@ public class StRealtimeStockClientImpl implements StRealtimeStockClient { return R.data(pages); } + @Override + public R getById(StGoods good) { + + Long goodId = good.getId(); + if(goodId == null || goodId <= 0){ + StGoods stGoods = new StGoods(); + stGoods.setGoodsCode(""); + return R.data(stGoods); + } + +// StGoods stGoods = new StGoods(); +// stGoods.setId(goodId); + StGoods detail = stGoodsService.getById(goodId); + return R.data(detail); + } + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsNewService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsNewService.java new file mode 100644 index 00000000..f21a3359 --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsNewService.java @@ -0,0 +1,55 @@ +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.wms.excel.StGoodsExcel; +import org.springblade.wms.pojo.entity.StGoods; +import org.springblade.wms.pojo.vo.StGoodsVO; + +import java.util.List; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName IStGoodsService + * @description: + * @autor: WuSiYu + * @create 2025-12-12 14:18 + **/ + +public interface IStGoodsNewService extends BaseService { + /** + * 自定义分页 + * + * @param page 分页参数 + * @param stGoods 查询参数 + * @return IPage + */ + IPage selectStGoodsPage(IPage page, StGoodsVO stGoods); + + void changeUsed(Long id, Boolean used) throws Exception; + + StGoods queryByCode(String goodsCode); + + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportStGoods(Wrapper queryWrapper); + + void saveGoods(String goodsCode) throws Exception; + + StGoods queryByCodeAndVersion(String prtno, String releaseNo); + + void addOnthewayQuantity(Long goodsId, Double num); + + void addCurQuantity(Long goodsId, Double quantity); + + IPage selectFindAllGoodsPage(IPage page, StGoodsVO stGoods); + + void addLockQuantity(Long goodsId, double v); +} + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsNewServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsNewServiceImpl.java new file mode 100644 index 00000000..7868d3dc --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsNewServiceImpl.java @@ -0,0 +1,201 @@ +package org.springblade.wms.service.impl; + +import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.wms.excel.StGoodsExcel; +//import org.springblade.wms.mapper.StGoodsClassMapper; +import org.springblade.wms.mapper.StGoodsMapper; +//import org.springblade.wms.pojo.dto.StPdmPartDTO; +import org.springblade.wms.pojo.entity.StGoods; +//import org.springblade.wms.pojo.entity.StGoodsExt; +import org.springblade.wms.pojo.vo.StGoodsVO; +//import org.springblade.wms.service.IStGoodsExtService; +import org.springblade.wms.service.IStGoodsNewService; +import org.springblade.wms.service.IStGoodsService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGoodsServiceImpl + * @description: + * @autor: WuSiYu + * @create 2025-12-12 14:21 + **/ + +@Service +@Slf4j +public class StGoodsNewServiceImpl extends BaseServiceImpl implements IStGoodsNewService { +// @Resource +// private StHttpRequestService stHttpRequestService; +// @Resource +// private IStGoodsExtService stGoodsExtService; + + @Override + public IPage selectStGoodsPage(IPage page, StGoodsVO stGoods) { + return page.setRecords(baseMapper.selectStGoodsPage(page, stGoods)); + } + + @Override + public IPage selectFindAllGoodsPage(IPage page, StGoodsVO stGoods) { + return page.setRecords(baseMapper.selectFindAllGoodsPage(page, stGoods)); + } + + @Override + public void saveGoods(String goodsCode) throws Exception { + StGoods stGoods = baseMapper.queryByCode(goodsCode); + if (stGoods != null) { + throw new Exception("该物料已存在!"); + } else { + List prtnoList = new ArrayList<>(); + prtnoList.add(goodsCode); +// saveGoodsInfo(prtnoList); + + } + } + + /*public void saveGoodsInfo(List prtnoList) throws Exception { + StGoods goods = null; + //查询物料信息 + List pdmPartInfo = stHttpRequestService.getPdmPartInfo(prtnoList); + log.debug("pdmPartInfo:{}", pdmPartInfo); + + if (pdmPartInfo != null) { + for (StPdmPartDTO dto : pdmPartInfo) { + //保存物料信息 + goods = this.queryByCodeAndVersion(dto.getPrtno(), dto.getReleaseNo()); + if (goods == null) { + goods = new StGoods(); + // goods.setDept(); + goods.setDrawingNo(dto.getDrwpartno()); + goods.setGoodsCode(dto.getPrtno()); + goods.setGoodsName(dto.getPrtdesc()); + goods.setDensity(dto.getDensity()); + goods.setPrtType(dto.getPrtType()); + goods.setSourceByStr(dto.getSource()); + goods.setSpecifications(dto.getMtlspcf()); + goods.setUnitName(dto.getPrtum()); + goods.setCavityNo(dto.getCavityNo()); + goods.setProductCategory(dto.getProductCategory()); + goods.setEcnNo(dto.getEcnNo()); + goods.setEndItem(dto.getEndItem()); + goods.setMaterialModel(dto.getMaterialModel()); + goods.setPartLink(dto.getPartLink()); + goods.setPriority(dto.getPriority()); + goods.setPartRevisionStatus(dto.getPartRevisionStatus()); + goods.setProductTechSpec(dto.getProductTechSpec()); + goods.setWeight(dto.getWeight()); + goods.setReleaseNo(dto.getReleaseNo()); + goods.setRemark(dto.getRemark()); + goods.setTradeMark(dto.getTradeMark()); + goods.setUsed(Boolean.TRUE); + goods.setIsDeleted(0); + goods.setCreateTime(new Date()); + goods.setReleaseNoTime(dto.getRcdchgdatd()); + this.save(goods); + } + } + } + }*/ + + @Override + public StGoods queryByCodeAndVersion(String prtno, String releaseNo) { + return baseMapper.queryByCodeAndVersion(prtno, releaseNo); + } + + @Override + public void changeUsed(Long id, Boolean used) throws Exception { + StGoods stGoods = this.getById(id); + if (stGoods == null) { + return; + } + stGoods.setUsed(used); + this.updateById(stGoods); + + } + + @Override + public StGoods queryByCode(String goodsCode) { + return baseMapper.queryByCode(goodsCode); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addOnthewayQuantity(Long goodsId, Double num) { + StGoods coGoods = baseMapper.selectById(goodsId); + if (coGoods == null) { + throw new ServiceException("物料不存在或已停用:ID=" + goodsId); + } + + // 累加在途数量(负值自动归零) + double ontheway = NumberUtil.add( + BigDecimal.valueOf(coGoods.getOnthewayQuantity()), + BigDecimal.valueOf(num) + ).doubleValue(); + if (ontheway < 0) { + ontheway = 0D; + } + coGoods.setOnthewayQuantity(ontheway); + baseMapper.updateById(coGoods); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addCurQuantity(Long goodsId, Double num) { + StGoods stGoods = baseMapper.selectById(goodsId); + if (stGoods == null) { + throw new ServiceException("物料不存在:ID=" + goodsId); + } + + // 累加当前库存(负值自动归零) + double curQuantity = NumberUtil.add( + BigDecimal.valueOf(stGoods.getCurrentQuantity()), + BigDecimal.valueOf(num) + ).doubleValue(); + if (curQuantity < 0) { + curQuantity = 0D; + } + stGoods.setCurrentQuantity(curQuantity); + baseMapper.updateById(stGoods); + + // 同步更新物料扩展表二级库存 +// StGoodsExt stGoodsExt = stGoodsExtService.getById(stGoods.getId()); +// if (stGoodsExt != null) { +// stGoodsExt.setLastStore(curQuantity); +// stGoodsExtService.updateById(stGoodsExt); +// } + } + + @Override + public void addLockQuantity(Long goodsId, double num) { + StGoods stGoods = this.getById(goodsId); + Double lockQuantity = + BigDecimal.valueOf(stGoods.getLockQuantity()).add(BigDecimal.valueOf(num)).doubleValue(); + if (lockQuantity < 0) { + lockQuantity = 0d; + } + stGoods.setLockQuantity(lockQuantity); + } + + @Override + public List exportStGoods(Wrapper queryWrapper) { + List stGoodsList = baseMapper.exportStGoods(queryWrapper); + //stGoodsList.forEach(stGoods -> { + // stGoods.setTypeName(DictCache.getValue(DictEnum.YES_NO, StGoods.getType())); + //}); + return stGoodsList; + } + +} +