diff --git a/.gitignore b/.gitignore index f790f50..c682bfa 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ application-my.yaml ### Trae ### /.trae/ +/mes-ui/mes-ui-admin-vue3/.agent-browser/ diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java index 3c52a1c..4eaabac 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java @@ -103,7 +103,7 @@ public class ProPackPageReqVO extends PageParam { private Integer lineId; @Schema(description = "入库状态( 1 待入库 2 部分入库 3 已入库)", example = "1") - private String packStatus; + private String [] packStatus; @Schema(description = "损耗数量") private BigDecimal lossQty; diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java index 26c3eb9..7cbca41 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java @@ -3,6 +3,8 @@ package com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; + @Schema(description = "管理后台 - 成品入/出库新增/修改 Request VO") @Data public class ProStorageInsertReqVO { @@ -18,4 +20,8 @@ public class ProStorageInsertReqVO { private String storeAreCd; private String storeAreaName; + //退库信息 + private BigDecimal returnQty; + private Integer returnBagQty; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStoragePageReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStoragePageReqVO.java index a60073d..0e7b48d 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStoragePageReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStoragePageReqVO.java @@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import static com.ningxia.yunxi.chemmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; import static com.ningxia.yunxi.chemmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 成品入/出库分页 Request VO") @@ -22,7 +23,7 @@ public class ProStoragePageReqVO extends PageParam { private String billNo; @Schema(description = "操作类型 1为入库,2为出库", example = "1") - private Boolean operatorType; + private String operatorType; @Schema(description = "业务类型 (10 生产入库,11 盘盈入库,12 其它入库 21 成品出库 22 盘亏出库 23生产退库)", example = "1") private Integer businessType; @@ -38,7 +39,7 @@ public class ProStoragePageReqVO extends PageParam { private LocalDateTime[] createTime; @Schema(description = "业务日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate[] billDate; @Schema(description = "操作人id", example = "21958") diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageSaveReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageSaveReqVO.java index 1e0ef10..fad4ac7 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageSaveReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageSaveReqVO.java @@ -3,9 +3,8 @@ package com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.time.LocalDate; +import java.util.List; @Schema(description = "管理后台 - 成品入/出库新增/修改 Request VO") @Data @@ -14,45 +13,46 @@ public class ProStorageSaveReqVO { @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26146") private Integer id; - @Schema(description = "单据编号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "单据编号不能为空") - private String billNo; - - @Schema(description = "操作类型 1为入库,2为出库", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "操作类型 1为入库,2为出库不能为空") - private Boolean operatorType; - - @Schema(description = "业务类型 (10 生产入库,11 盘盈入库,12 其它入库 21 成品出库 22 盘亏出库 23生产退库)", example = "1") - private Integer businessType; +// @Schema(description = "单据编号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "单据编号不能为空") +// private String billNo; +// +// @Schema(description = "操作类型 1为入库,2为出库", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") +// @NotNull(message = "操作类型 1为入库,2为出库不能为空") +// private Boolean operatorType; +// +// @Schema(description = "业务类型 (10 生产入库,11 盘盈入库,12 其它入库 21 成品出库 22 盘亏出库 23生产退库)", example = "1") +// private Integer businessType; @Schema(description = "备注", example = "你说的对") private String remark; @Schema(description = "状态:1 已创建;2 提交", example = "1") - private Boolean status; + private String status; @Schema(description = "业务日期") private LocalDate billDate; - @Schema(description = "操作人id", example = "21958") - private Integer operatorId; +// @Schema(description = "操作人id", example = "21958") +// private Integer operatorId; +// +// @Schema(description = "操作人", example = "张三") +// private String operatorName; +// +// @Schema(description = "关联单号") +// private String relarionNo; - @Schema(description = "操作人", example = "张三") - private String operatorName; +// @Schema(description = "关联单号id", example = "10903") +// private Integer relarionId; - @Schema(description = "关联单号") - private String relarionNo; - - @Schema(description = "关联单号id", example = "10903") - private Integer relarionId; - - @Schema(description = "单据类型(1 标准采购申请 2设备采购申请 3 标准采购退料 4设备采购退料)", example = "1") - private String billType; - - @Schema(description = "来源单号") - private String sourceNo; - - @Schema(description = "来源单号id", example = "27114") - private Integer sourceId; +// @Schema(description = "单据类型(1 标准采购申请 2设备采购申请 3 标准采购退料 4设备采购退料)", example = "1") +// private String billType; +// +// @Schema(description = "来源单号") +// private String sourceNo; +// +// @Schema(description = "来源单号id", example = "27114") +// private Integer sourceId; + List details; } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostoragemat/ProStorageMatController.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostoragemat/ProStorageMatController.java index 58b97be..a9f0586 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostoragemat/ProStorageMatController.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostoragemat/ProStorageMatController.java @@ -70,6 +70,15 @@ public class ProStorageMatController { return success(BeanUtils.toBean(proStorageMat, ProStorageMatRespVO.class)); } + @GetMapping("/getByStockId") + @Operation(summary = "获得成品入/出库子") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('twm:pro-storage-mat:query')") + public CommonResult> getProStorageMatByStockId(@RequestParam("stockId") Integer stockId) { + List proStorageMatByStockId = proStorageMatService.getProStorageMatByStockId(stockId); + return success(BeanUtils.toBean(proStorageMatByStockId, ProStorageMatRespVO.class)); + } + @GetMapping("/page") @Operation(summary = "获得成品入/出库子分页") @PreAuthorize("@ss.hasPermission('twm:pro-storage-mat:query')") diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/propack/ProPackMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/propack/ProPackMapper.java index b6e30ec..94f2e00 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/propack/ProPackMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/propack/ProPackMapper.java @@ -1,10 +1,8 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.propack; -import java.util.*; - import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; -import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX; +import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.propack.vo.ProPackPageReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.propack.ProPackDO; import org.apache.ibatis.annotations.Mapper; @@ -51,7 +49,7 @@ public interface ProPackMapper extends BaseMapperX { .eqIfPresent(ProPackDO::getLineCd, reqVO.getLineCd()) .likeIfPresent(ProPackDO::getLineName, reqVO.getLineName()) .eqIfPresent(ProPackDO::getLineId, reqVO.getLineId()) - .eqIfPresent(ProPackDO::getPackStatus, reqVO.getPackStatus()) + .inIfPresent(ProPackDO::getPackStatus, reqVO.getPackStatus()) .eqIfPresent(ProPackDO::getLossQty, reqVO.getLossQty()) .eqIfPresent(ProPackDO::getJudgResult, reqVO.getJudgResult()) .eqIfPresent(ProPackDO::getInspStatus, reqVO.getInspStatus()) @@ -62,4 +60,4 @@ public interface ProPackMapper extends BaseMapperX { .orderByDesc(ProPackDO::getProDate)); } -} \ No newline at end of file +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorage/ProStorageMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorage/ProStorageMapper.java index da23d7f..93525e9 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorage/ProStorageMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorage/ProStorageMapper.java @@ -18,7 +18,7 @@ public interface ProStorageMapper extends BaseMapperX { default PageResult selectPage(ProStoragePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ProStorageDO::getBillNo, reqVO.getBillNo()) + .likeIfPresent(ProStorageDO::getBillNo, reqVO.getBillNo()) .eqIfPresent(ProStorageDO::getOperatorType, reqVO.getOperatorType()) .eqIfPresent(ProStorageDO::getBusinessType, reqVO.getBusinessType()) .eqIfPresent(ProStorageDO::getRemark, reqVO.getRemark()) diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostoragemat/ProStorageMatMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostoragemat/ProStorageMatMapper.java index f78580d..e2fdf8e 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostoragemat/ProStorageMatMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostoragemat/ProStorageMatMapper.java @@ -7,6 +7,8 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragemat.vo.Pr import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragemat.ProStorageMatDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 成品入/出库子 Mapper * @@ -42,4 +44,11 @@ public interface ProStorageMatMapper extends BaseMapperX { .orderByDesc(ProStorageMatDO::getId)); } + default List selectByStockId(Integer id) { + return selectList(new LambdaQueryWrapperX().eq(ProStorageMatDO::getStockId, id)); + } + + default int deleteByStockId(Integer id) { + return delete(new LambdaQueryWrapperX().eq(ProStorageMatDO::getStockId, id)); + } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java index 7fd7ac5..3b138c1 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java @@ -2,7 +2,6 @@ package com.ningxia.yunxi.chemmes.module.biz.service.prostorage; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils; -import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.framework.security.core.util.SecurityFrameworkUtils; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageInsertReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStoragePageReqVO; @@ -51,25 +50,100 @@ public class ProStorageServiceImpl implements ProStorageService { @Override public Integer createProStorage(ProStorageSaveReqVO createReqVO) { - // 插入 - ProStorageDO proStorage = BeanUtils.toBean(createReqVO, ProStorageDO.class); - proStorageMapper.insert(proStorage); - // 返回 + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + AdminUserDO user = adminUserService.getUser(loginUserId); + String nickname = user.getNickname(); + ProStorageDO proStorage = saveProStorage(23, loginUserId, nickname, "", null, createReqVO.getRemark()); + + saveMat(createReqVO, proStorage); + + if ("2".equals(createReqVO.getStatus())) { + process(proStorage, loginUserId, nickname); + } + return proStorage.getId(); } + private void process(ProStorageDO proStorage, Long loginUserId, String nickname) { + List proStorageMatDOS = proStorageMatMapper.selectByStockId(proStorage.getId()); + for (ProStorageMatDO proStorageMatDO : proStorageMatDOS) { + ProStorageInventoryDO storageInventoryDO = proStorageInventoryService.getProStorageInventory(Long.valueOf(proStorageMatDO.getId())); + storageInventoryDO.setYardQty(storageInventoryDO.getYardQty().subtract(proStorageMatDO.getOperatorQty())); + storageInventoryDO.setPackQty(storageInventoryDO.getPackQty() - proStorageMatDO.getBagQty()); + proStorageInventoryMapper.updateById(storageInventoryDO); + + ProStorageMatDO proStorageMat = new ProStorageMatDO(); + proStorageMat.setStockId(proStorage.getId()); + proStorageMat.setDescription(""); + proStorageMat.setStoreHouseId(storageInventoryDO.getStoreHouseId()); + proStorageMat.setStoreAreaId(storageInventoryDO.getStoreAreaId()); + proStorageMat.setStoreHouseCd(storageInventoryDO.getStoreHouseCd()); + proStorageMat.setStoreHouseName(storageInventoryDO.getStoreHouseName()); + proStorageMat.setStoreAreCd(storageInventoryDO.getStoreAreCd()); + proStorageMat.setStoreAreaName(storageInventoryDO.getStoreAreaName()); + proStorageMat.setMaterialId(storageInventoryDO.getMaterialId()); + proStorageMat.setMatName(storageInventoryDO.getMatName()); + proStorageMat.setMatCode(storageInventoryDO.getMatCode()); + proStorageMat.setSpec(storageInventoryDO.getSpec()); + proStorageMat.setUnit(storageInventoryDO.getUnit()); + proStorageMat.setLotNo(storageInventoryDO.getLotNo()); + proStorageMat.setOperatorQty(proStorageMatDO.getOperatorQty()); +// proStorageMat.setSourceId(0L); +// proStorageMat.setRelarionId(0); +// proStorageMat.setBagSpec(0); +// proStorageMat.setBagQty(0); +// proStorageMat.setPlanId(0); +// proStorageMat.setProNo(""); + proStorageMat.setInventBillNo(storageInventoryDO.getInventBillNo()); + proStorageMatMapper.insert(proStorageMat); + + ProStorageLogDO proStorageLog = new ProStorageLogDO(); +// proStorageLog.setStockId(0); +// proStorageLog.setDescription(""); +// proStorageLog.setStatus(""); + proStorageLog.setStoreHouseId(storageInventoryDO.getStoreHouseId()); + proStorageLog.setStoreAreaId(storageInventoryDO.getStoreAreaId()); + proStorageLog.setStoreHouseCd(storageInventoryDO.getStoreHouseCd()); + proStorageLog.setStoreHouseName(storageInventoryDO.getStoreHouseName()); + proStorageLog.setStoreAreCd(storageInventoryDO.getStoreAreCd()); + proStorageLog.setStoreAreaName(storageInventoryDO.getStoreAreaName()); + proStorageLog.setMaterialId(storageInventoryDO.getMaterialId()); + proStorageLog.setMatName(storageInventoryDO.getMatName()); + proStorageLog.setMatCode(storageInventoryDO.getMatCode()); + proStorageLog.setSpec(storageInventoryDO.getSpec()); + proStorageLog.setUnit(storageInventoryDO.getUnit()); + proStorageLog.setLotNo(storageInventoryDO.getLotNo()); + proStorageLog.setOperatorQty(proStorageMatDO.getOperatorQty()); + proStorageLog.setOperatorType("2"); + proStorageLog.setBusinessType("23"); +// proStorageLog.setStorageAft(new BigDecimal("0")); +// proStorageLog.setStorageBef(new BigDecimal("0")); +// proStorageLog.setStockItemId(0); + proStorageLog.setBillDate(LocalDate.now()); + proStorageLog.setOperatorId(String.valueOf(loginUserId)); + proStorageLog.setOperatorName(nickname); + proStorageLog.setRelarionNo(proStorage.getBillNo()); + proStorageLog.setRelarionId(proStorage.getId()); + proStorageLog.setRelarionDetailId(proStorageMat.getId()); +// proStorageLog.setDpstNo(""); + proStorageLog.setInventBillNo(storageInventoryDO.getInventBillNo()); + proStorageLogService.saveProStorageLog(proStorageLog); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void saveProStorage(List reqVOS) { - Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); AdminUserDO user = adminUserService.getUser(loginUserId); String nickname = user.getNickname(); for (ProStorageInsertReqVO createReqVO : reqVOS) { ProPackDO proPackDO = proPackMapper.selectById(createReqVO.getId()); - ProStorageDO proStorage = saveProStorage(loginUserId, nickname, proPackDO); + ProStorageDO proStorage = saveProStorage(10, loginUserId, nickname, proPackDO.getPackNo(), proPackDO.getId(), ""); ProStorageInventoryDO storageInventoryDO = svaeStorageInventory(createReqVO, proPackDO); saveLog(createReqVO, proStorage, proPackDO, storageInventoryDO, loginUserId, nickname); + proPackDO.setPackStatus("3"); + proPackMapper.updateById(proPackDO); } } @@ -113,18 +187,19 @@ public class ProStorageServiceImpl implements ProStorageService { } @NotNull - private ProStorageDO saveProStorage(Long loginUserId, String nickname, ProPackDO proPackDO) { + private ProStorageDO saveProStorage(Integer businessType, Long loginUserId, String nickname, + String relationNo, Integer relationId, String remark) { ProStorageDO proStorage = new ProStorageDO(); proStorage.setBillNo(generateBillNo("2")); - proStorage.setOperatorType(1); - proStorage.setBusinessType(10); - proStorage.setRemark(""); + proStorage.setOperatorType(2); + proStorage.setBusinessType(businessType); + proStorage.setRemark(remark); proStorage.setStatus(2); proStorage.setBillDate(LocalDate.now()); proStorage.setOperatorId(loginUserId); proStorage.setOperatorName(nickname); - proStorage.setRelarionNo(proPackDO.getPackNo()); - proStorage.setRelarionId(proPackDO.getId()); + proStorage.setRelarionNo(relationNo); + proStorage.setRelarionId(relationId); // proStorage.setBillType("0"); // proStorage.setSourceNo(); // proStorage.setSourceId(); @@ -194,11 +269,45 @@ public class ProStorageServiceImpl implements ProStorageService { @Override public void updateProStorage(ProStorageSaveReqVO updateReqVO) { - // 校验存在 - validateProStorageExists(updateReqVO.getId()); - // 更新 - ProStorageDO updateObj = BeanUtils.toBean(updateReqVO, ProStorageDO.class); - proStorageMapper.updateById(updateObj); + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + AdminUserDO user = adminUserService.getUser(loginUserId); + String nickname = user.getNickname(); + ProStorageDO proStorage = saveProStorage(23, loginUserId, nickname, "", null, updateReqVO.getRemark()); + proStorageMatMapper.deleteByStockId(proStorage.getId()); + saveMat(updateReqVO, proStorage); + + if ("2".equals(updateReqVO.getStatus())) { + process(proStorage, loginUserId, nickname); + } + } + + private void saveMat(ProStorageSaveReqVO updateReqVO, ProStorageDO proStorage) { + for (ProStorageInsertReqVO detail : updateReqVO.getDetails()) { + ProStorageInventoryDO storageInventoryDO = proStorageInventoryService.getProStorageInventory(Long.valueOf(detail.getId())); + ProStorageMatDO proStorageMat = new ProStorageMatDO(); + proStorageMat.setStockId(proStorage.getId()); + proStorageMat.setDescription(""); + proStorageMat.setStoreHouseId(storageInventoryDO.getStoreHouseId()); + proStorageMat.setStoreAreaId(storageInventoryDO.getStoreAreaId()); + proStorageMat.setStoreHouseCd(storageInventoryDO.getStoreHouseCd()); + proStorageMat.setStoreHouseName(storageInventoryDO.getStoreHouseName()); + proStorageMat.setStoreAreCd(storageInventoryDO.getStoreAreCd()); + proStorageMat.setStoreAreaName(storageInventoryDO.getStoreAreaName()); + proStorageMat.setMaterialId(storageInventoryDO.getMaterialId()); + proStorageMat.setMatName(storageInventoryDO.getMatName()); + proStorageMat.setMatCode(storageInventoryDO.getMatCode()); + proStorageMat.setSpec(storageInventoryDO.getSpec()); + proStorageMat.setUnit(storageInventoryDO.getUnit()); + proStorageMat.setLotNo(storageInventoryDO.getLotNo()); + proStorageMat.setOperatorQty(detail.getReturnQty()); +// proStorageMat.setSourceId(0L); +// proStorageMat.setRelarionId(0); +// proStorageMat.setBagSpec(0); +// proStorageMat.setBagQty(0); +// proStorageMat.setProNo(""); + proStorageMat.setInventBillNo(storageInventoryDO.getInventBillNo()); + proStorageMatMapper.insert(proStorageMat); + } } @Override @@ -227,9 +336,9 @@ public class ProStorageServiceImpl implements ProStorageService { @Override public String generateBillNo(String operatorType) { - String prefix = "CK"; + String prefix = "RKD"; if ("2".equals(operatorType)) { - prefix = "RKD"; + prefix = "CKD"; } String maxBillNo = proStorageMapper.selectMaxBillNo(); return CodeGenerateUtils.generateBillNo(prefix, maxBillNo); diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatService.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatService.java index cddf3dc..181a004 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatService.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatService.java @@ -6,6 +6,7 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragemat.vo.Pr import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragemat.ProStorageMatDO; import javax.validation.Valid; +import java.util.List; /** * 成品入/出库子 Service 接口 @@ -44,6 +45,8 @@ public interface ProStorageMatService { */ ProStorageMatDO getProStorageMat(Integer id); + List getProStorageMatByStockId(Integer id); + /** * 获得成品入/出库子分页 * diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatServiceImpl.java index fc1e103..0313a65 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragemat/ProStorageMatServiceImpl.java @@ -11,6 +11,8 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.List; + import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -62,6 +64,11 @@ public class ProStorageMatServiceImpl implements ProStorageMatService { return proStorageMatMapper.selectById(id); } + @Override + public List getProStorageMatByStockId(Integer id) { + return proStorageMatMapper.selectByStockId(id); + } + @Override public PageResult getProStorageMatPage(ProStorageMatPageReqVO pageReqVO) { return proStorageMatMapper.selectPage(pageReqVO); diff --git a/mes-ui/mes-ui-admin-vue3/mcp.config.json b/mes-ui/mes-ui-admin-vue3/mcp.config.json new file mode 100644 index 0000000..ed06993 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/mcp.config.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "lanhu-browser": { + "command": "node", + "args": ["./mcp-lanhu-server/index.js"], + "env": { + "EDGE_PROFILE_PATH": "./.agent-browser/profile", + "LANHU_BASE_URL": "https://lanhuapp.com" + } + } + } +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/lotconfig/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/lotconfig/index.ts new file mode 100644 index 0000000..08007e8 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/lotconfig/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface LotConfigVO { + id: number + remark: string + matCode: string + matName: string + matId: number + lotWgt: number + enabledStatus: boolean +} + +// 查询产品批次重量配置分页 +export const getLotConfigPage = async (params) => { + return await request.get({ url: `/biz/lot-config/page`, params }) +} + +// 查询产品批次重量配置详情 +export const getLotConfig = async (id: number) => { + return await request.get({ url: `/biz/lot-config/get?id=` + id }) +} + +// 新增产品批次重量配置 +export const createLotConfig = async (data: LotConfigVO) => { + return await request.post({ url: `/biz/lot-config/create`, data }) +} + +// 修改产品批次重量配置 +export const updateLotConfig = async (data: LotConfigVO) => { + return await request.put({ url: `/biz/lot-config/update`, data }) +} + +// 删除产品批次重量配置 +export const deleteLotConfig = async (id: number) => { + return await request.delete({ url: `/biz/lot-config/delete?id=` + id }) +} + +// 导出产品批次重量配置 Excel +export const exportLotConfig = async (params) => { + return await request.download({ url: `/biz/lot-config/export-excel`, params }) +} \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts index c6403e7..b424f21 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts @@ -15,6 +15,7 @@ export interface ProStorageVO { billType: string sourceNo: string sourceId: number + details: ProPackVO[] } export interface ProPackVO { @@ -23,7 +24,7 @@ export interface ProPackVO { storeAreaId: number storeHouseCd: string storeHouseName: string - storeAreaCd: string + storeAreCd: string storeAreaName: string } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostoragemat/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostoragemat/index.ts index a343e54..27dd03b 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostoragemat/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostoragemat/index.ts @@ -1,56 +1,61 @@ -import request from '@/config/axios' - -export interface ProStorageMatVO { - id: number - stockId: number - description: string - storeHouseId: number - storeAreaId: number - storeHouseCd: string - storeHouseName: string - storeAreCd: string - storeAreaName: string - materialId: number - matName: string - matCode: string - spec: string - unit: string - lotNo: string - operatorQty: number - sourceId: number - relarionId: number - bagSpec: number - bagQty: number - planId: number - proNo: string -} - -// 查询成品入/出库子分页 -export const getProStorageMatPage = async (params) => { - return await request.get({ url: `/twm/pro-storage-mat/page`, params }) -} - -// 查询成品入/出库子详情 -export const getProStorageMat = async (id: number) => { - return await request.get({ url: `/twm/pro-storage-mat/get?id=` + id }) -} - -// 新增成品入/出库子 -export const createProStorageMat = async (data: ProStorageMatVO) => { - return await request.post({ url: `/twm/pro-storage-mat/create`, data }) -} - -// 修改成品入/出库子 -export const updateProStorageMat = async (data: ProStorageMatVO) => { - return await request.put({ url: `/twm/pro-storage-mat/update`, data }) -} - -// 删除成品入/出库子 -export const deleteProStorageMat = async (id: number) => { - return await request.delete({ url: `/twm/pro-storage-mat/delete?id=` + id }) -} - -// 导出成品入/出库子 Excel -export const exportProStorageMat = async (params) => { - return await request.download({ url: `/twm/pro-storage-mat/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface ProStorageMatVO { + id: number + stockId: number + description: string + storeHouseId: number + storeAreaId: number + storeHouseCd: string + storeHouseName: string + storeAreCd: string + storeAreaName: string + materialId: number + matName: string + matCode: string + spec: string + unit: string + lotNo: string + operatorQty: number + sourceId: number + relarionId: number + bagSpec: number + bagQty: number + planId: number + proNo: string +} + +// 查询成品入/出库子分页 +export const getProStorageMatPage = async (params) => { + return await request.get({ url: `/twm/pro-storage-mat/page`, params }) +} + +// 查询成品入/出库子详情 +export const getProStorageMat = async (id: number) => { + return await request.get({ url: `/twm/pro-storage-mat/get?id=` + id }) +} + +// 查询成品入/出库子分页 +export const getProStorageMatPageByStockId = async (stockId: number) => { + return await request.get({ url: `/twm/pro-storage-mat/getByStockId?stockId=` + stockId }) +} + +// 新增成品入/出库子 +export const createProStorageMat = async (data: ProStorageMatVO) => { + return await request.post({ url: `/twm/pro-storage-mat/create`, data }) +} + +// 修改成品入/出库子 +export const updateProStorageMat = async (data: ProStorageMatVO) => { + return await request.put({ url: `/twm/pro-storage-mat/update`, data }) +} + +// 删除成品入/出库子 +export const deleteProStorageMat = async (id: number) => { + return await request.delete({ url: `/twm/pro-storage-mat/delete?id=` + id }) +} + +// 导出成品入/出库子 Excel +export const exportProStorageMat = async (params) => { + return await request.download({ url: `/twm/pro-storage-mat/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts b/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts index be75e33..57ff30a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts +++ b/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts @@ -74,6 +74,7 @@ declare module 'vue' { ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] + ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] @@ -90,6 +91,7 @@ declare module 'vue' { InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default'] InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default'] MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default'] + MaterialSelectDialog: typeof import('./../views/biz/proreturn/MaterialSelectDialog.vue')['default'] Pagination: typeof import('./../components/Pagination/index.vue')['default'] ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default'] ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default'] @@ -97,6 +99,8 @@ declare module 'vue' { Propack: typeof import('./../api/biz/propack/index.ts')['default'] ProPackForm: typeof import('./../views/biz/prostorage/ProPackForm.vue')['default'] PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default'] + Proreturn: typeof import('./../views/biz/proreturn/index.vue')['default'] + ProReturnForm: typeof import('./../views/biz/proreturn/ProReturnForm.vue')['default'] Prostorage: typeof import('./../views/biz/prostorage/index.vue')['default'] ProStorageForm: typeof import('./../views/biz/prostorage/ProStorageForm.vue')['default'] Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default'] @@ -109,6 +113,9 @@ declare module 'vue' { ShortcutDateRangePicker: typeof import('./../components/ShortcutDateRangePicker/index.vue')['default'] SignalAndMessage: typeof import('./../components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue')['default'] Sticky: typeof import('./../components/Sticky/src/Sticky.vue')['default'] + StorageForm: typeof import('./../views/biz/proreturn/StorageForm.vue')['default'] + Storagemat: typeof import('./../views/biz/storagemat/index.vue')['default'] + StorageMatForm: typeof import('./../views/biz/storagemat/StorageMatForm.vue')['default'] SummaryCard: typeof import('./../components/SummaryCard/index.vue')['default'] Table: typeof import('./../components/Table/src/Table.vue')['default'] Tooltip: typeof import('./../components/Tooltip/src/Tooltip.vue')['default'] diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/LotConfigForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/LotConfigForm.vue new file mode 100644 index 0000000..9700cdb --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/LotConfigForm.vue @@ -0,0 +1,175 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/index.vue new file mode 100644 index 0000000..25d0848 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/lotconfig/index.vue @@ -0,0 +1,185 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/ProReturnForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/ProReturnForm.vue new file mode 100644 index 0000000..cdbb798 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/ProReturnForm.vue @@ -0,0 +1,441 @@ + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/index.vue new file mode 100644 index 0000000..896c12f --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/proreturn/index.vue @@ -0,0 +1,309 @@ + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/ProStorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/ProStorageForm.vue new file mode 100644 index 0000000..f1e3cd8 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/ProStorageForm.vue @@ -0,0 +1,282 @@ + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/index.vue new file mode 100644 index 0000000..f489603 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/prostorage/index.vue @@ -0,0 +1,338 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/StorageMatForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/StorageMatForm.vue new file mode 100644 index 0000000..799d77e --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/StorageMatForm.vue @@ -0,0 +1,187 @@ + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/index.vue new file mode 100644 index 0000000..b72ed4d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storagemat/index.vue @@ -0,0 +1,375 @@ + + + \ No newline at end of file