diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/CodeRuleIDConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/CodeRuleIDConstants.java new file mode 100644 index 0000000..9732ccd --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/CodeRuleIDConstants.java @@ -0,0 +1,21 @@ +package cn.hangtag.module.oms.enums; + +public interface CodeRuleIDConstants { + /** + * 客户 + */ + Long KH = 5L; + /** + * 销售订单 + */ + Long XSDD = 6L; + /** + * 销售合约 + */ + Long XSHY = 7L; + /** + * 生产制单 + */ + Long SCZD = 8L; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/common/BillStatusEnum.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/common/BillStatusEnum.java index ae38444..feb3012 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/common/BillStatusEnum.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/common/BillStatusEnum.java @@ -11,13 +11,14 @@ import lombok.Getter; @AllArgsConstructor public enum BillStatusEnum { //订单状态:已下单、生产中、已完成 - //单据状态:暂存、已提交、已审核 + //单据状态:暂存、已提交、已审核、已排产 REJECT("AA", "驳回"), SAVE("A", "暂存"), SUBMIT("B", "已提交"), AUDIT("C", "已审核"), - INVALID("D", "作废"); + INVALID("D", "作废"), + YPLAN("E", "已排产"); /** * 状态 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java index bb52129..f49229e 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java @@ -28,6 +28,9 @@ public class ProduceOrderRespVO { @ExcelProperty("客户编号") private String customerCode; + @Schema(description = "产品ID", example = "11111") + private Long productId; + @Schema(description = "产品编号", example = "11111") @ExcelProperty("产品编号") private String productCode; @@ -92,4 +95,16 @@ public class ProduceOrderRespVO { @ExcelProperty("交货数量") private Long deliveryQty; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + + @Schema(description = "详情") + private String details; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java index ddc0848..4caf9f8 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java @@ -20,6 +20,9 @@ public class ProduceOrderSaveReqVO { @Schema(description = "订单号") private String orderNo; + @Schema(description = "客户ID") + private Long customerId; + @Schema(description = "客户编号") private String customerCode; @@ -47,7 +50,7 @@ public class ProduceOrderSaveReqVO { @Schema(description = "交货地点") private String deliveryPlace; - @Schema(description = "职员") + @Schema(description = "职员") private String clerk; @Schema(description = "报告日期") @@ -74,4 +77,7 @@ public class ProduceOrderSaveReqVO { @Schema(description = "交货数量") private Long deliveryQty; + @Schema(description = "详情") + private String details; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java index cfd840e..8aca8f2 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java @@ -116,5 +116,9 @@ public class ProduceOrderDO extends BaseDO { * 交货数量 */ private Long deliveryQty; + /** + * 详情 + */ + private String details; } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java index d5c1d6a..2d42fe0 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java @@ -94,17 +94,14 @@ public class SaleOrderDO extends BaseDO { * 发票名称 */ private String invoiceName; - /** * 发票地址 */ private String invoiceAddress; - /** * 发票备注 */ private String invoiceRemarks; - /** * 地址 */ @@ -113,7 +110,6 @@ public class SaleOrderDO extends BaseDO { * 货币 */ private String currency; - /** * 驳回原因 */ @@ -126,7 +122,6 @@ public class SaleOrderDO extends BaseDO { * 审核时间 */ private LocalDateTime auditorTime; - /** * 订单号 */ @@ -147,24 +142,18 @@ public class SaleOrderDO extends BaseDO { * 零售商单号 */ private String retailerCode; - - - /** * 品牌id */ private Integer brandId; - /** * 是否分批交货 分批交货以明细表中的交货日期为准 */ private Boolean isBatch; - /** * 交货地址 */ private String deliveryAddress; - /** * 交货备注 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java index 65f6383..a535c73 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java @@ -39,4 +39,11 @@ public interface SaleOrderSkuMapper extends BaseMapperX { .orderByDesc(SaleOrderSkuDO::getId)); } + default List selectListByEntryId(Long entryId) { + return selectList(SaleOrderSkuDO::getEntryId, entryId); + } + + default int deleteByEntryId(Long entryId) { + return delete(SaleOrderSkuDO::getEntryId, entryId); + } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java index 0c63d5d..5938106 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java @@ -6,6 +6,7 @@ import cn.hangtag.framework.common.util.FuncUtil; import cn.hangtag.framework.common.util.validation.ValidationUtils; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; +import cn.hangtag.module.oms.enums.CodeRuleIDConstants; import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportRespVO; import cn.hangtag.module.system.controller.admin.user.vo.user.UserSaveReqVO; @@ -140,7 +141,7 @@ public class ProduceOrderServiceImpl implements ProduceOrderService { while (true){ count --; try { - s = CodingRulesUtils.generateCode(5L, false); + s = CodingRulesUtils.generateCode(CodeRuleIDConstants.SCZD, false); checkCode(null,s); return s; }catch (ServiceException e){ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index 0e7be11..0a3d622 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java @@ -14,6 +14,7 @@ import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; /** * 销售订单 Service 接口 @@ -109,4 +110,6 @@ public interface SaleOrderService { public String getNewOrderCode(); public String getNewOrderCode2(); + + List getSaleOrderSkuEntryListByEntryId(Long entryId); } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index aa58eaa..0999ae7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -308,7 +308,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { } saleOrder.setBillStatus(BillStatusEnum.AUDIT.getValue()); - saleOrder.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); + saleOrder.setOrderStatus(SaleOrderStatusEnum.SCZ.getValue()); Long userId = SecurityFrameworkUtils.getLoginUserId(); saleOrder.setAuditor(userId.toString()); saleOrder.setAuditorTime(LocalDateTime.now()); @@ -363,27 +363,56 @@ public class SaleOrderServiceImpl implements SaleOrderService { } @Override + @Transactional(rollbackFor = Exception.class) public void generateProduceOrder(List ids) { List saleOrders = saleOrderMapper.selectList(SaleOrderDO::getId, ids); for (SaleOrderDO saleOrder : saleOrders) { - ProduceOrderSaveReqVO saveReqVO = new ProduceOrderSaveReqVO(); - saveReqVO.setOrderNo(saleOrder.getBillno()); - saveReqVO.setCustomerCode("客户编号"); - saveReqVO.setProductId(0L); - saveReqVO.setProduceLine("测试线"); - saveReqVO.setDeliveryMethod("交货方式"); - saveReqVO.setDeliveryQty(1111111L); - saveReqVO.setDays(5L); - saveReqVO.setClerk("职员"); - saveReqVO.setContractDate(LocalDateTime.now() ); - Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO); + CustomerDO customer = customerService.getCustomer(saleOrder.getCustomerId()); + List entrys = getSaleOrderEntryListByParentId(saleOrder.getId()); + + for (SaleOrderEntryDO entry : entrys) { + List saleOrderSkuDO = getSaleOrderSkuEntryListByEntryId(entry.getId()); + ProductInfoDO productInfo = productInfoService.getProductInfo(entry.getMaterialId()); + ProduceOrderSaveReqVO saveReqVO = new ProduceOrderSaveReqVO(); + saveReqVO.setOrderNo(saleOrder.getBillno()); + saveReqVO.setSaleContractNo(saleOrder.getBillno()); + saveReqVO.setCustomerId(customer.getId()); + saveReqVO.setCustomerCode(customer.getNumber()); + saveReqVO.setProductId(entry.getMaterialId()); + saveReqVO.setProductCode(productInfo.getCode()); + saveReqVO.setProductName(productInfo.getName()); + saveReqVO.setProduceLine(""); + saveReqVO.setDeliveryMethod("全部"); + saveReqVO.setDeliveryQty(Long.valueOf(entry.getQty())); + saveReqVO.setContractQty(Long.valueOf(entry.getQty())); + saveReqVO.setProduceQty(Long.valueOf(entry.getQty())); + saveReqVO.setDays(1L); + saveReqVO.setClerk(customer.getSaleperson()); + saveReqVO.setContractDate(LocalDateTime.now()); + saveReqVO.setReportDate(LocalDateTime.now()); + saveReqVO.setProduceDate(LocalDateTime.now()); + saveReqVO.setInspectionDate(LocalDateTime.now()); + saveReqVO.setDeliverydate(LocalDateTime.now()); + + Double specSizeWidth = productInfo.getSpecSizeWidth(); + Double specSizeHeight = productInfo.getSpecSizeHeight(); + Double specSizeThk = productInfo.getSpecSizeThk(); + String specMaterial = productInfo.getSpecMaterial(); + StringBuffer str = new StringBuffer(); + str.append(String.format("货名:%s\r\n",productInfo.getName())); + str.append(String.format("规格:%s × %s \r\n",specSizeWidth,specSizeHeight)); + str.append(String.format("纸质:%s × %s \r\n",specMaterial)); + saveReqVO.setDetails(str.toString()); + Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO); + } + //更新销售订单已完成 - /*if(produceOrderId!=null){ - SaleOrderSaveReqVO saleOrderSaveReqVO = new SaleOrderSaveReqVO(); - saleOrderSaveReqVO.setId(saleOrder.getId()); - saleOrderSaveReqVO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); - updateSaleOrder(saleOrderSaveReqVO); - }*/ + //if(produceOrderId!=null){ + SaleOrderDO saleOrderDO = new SaleOrderDO(); + saleOrderDO.setId(saleOrder.getId()); + saleOrderDO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); + saleOrderMapper.updateById(saleOrderDO); + //} } } @@ -418,7 +447,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { Double specSizeHeight = productInfo.getSpecSizeHeight(); Double specSizeWidth = productInfo.getSpecSizeWidth(); Double specSizeThk = productInfo.getSpecSizeThk(); - String spec = specSizeHeight.doubleValue() + " * " + specSizeWidth + " " + specSizeThk; + String spec = specSizeWidth.doubleValue()+ " * " + specSizeHeight.doubleValue() + " " + specSizeThk.doubleValue(); int j = i+1; context.setVariable("item"+j, j+""); context.setVariable("explain"+j, code); @@ -723,10 +752,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { } saleOrderEntryMapper.insertBatch(list); //更新总金额 - /*SaleOrderDO saleOrderDO = new SaleOrderDO(); + SaleOrderDO saleOrderDO = new SaleOrderDO(); saleOrderDO.setId(parentId); saleOrderDO.setOrderAmount(amount); - saleOrderMapper.updateById(saleOrderDO);*/ + saleOrderMapper.updateById(saleOrderDO); } private void updateSaleOrderEntryList(Long parentId, List list) { @@ -795,4 +824,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { saveReqVO.setSaleContractEntrys(list); return saleContractService.createSaleContract(saveReqVO); } + + + @Override + public List getSaleOrderSkuEntryListByEntryId(Long entryId) { + return skuOrderSkuMapper.selectListByEntryId(entryId); + } } \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue index 035650e..385e811 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue @@ -108,7 +108,7 @@ const dialogTitle = ref('产品列表') // 弹窗的标题 const props = defineProps({ modelValue: { - type: String, + type: [String,Number], required: true }, dataKey: { @@ -153,7 +153,12 @@ const that = reactive({ showValue: '', visible: false, }) - +const toStr = (data: any, def = '') => { + if (data !== null && data !== undefined) { + return `${data}` + } + return def +} const openDialog = () => { updateVisible(true); } @@ -164,24 +169,6 @@ const viewDetails = () => { openDialog(); } } -// 用监听属性变化无其他意义 -const tmp = computed(()=>{ - setTimeout(()=>{ - that.inputVal = toStr(props.modelValue,that.inputVal) - if (that.inputVal) { - initInput(); - } - },100) - return '' -},{ - deep: true -}) -const toStr = (data: any) => { - if (data !== null && data !== undefined) { - return `${data}` - } - return data -} let map = new Map(); const initInput = async () => { const dataKey = that.inputVal + ',' + props.dataKey + ',' + props.showKey + ',' + props.multiple; @@ -199,7 +186,7 @@ const initInput = async () => { let tmpInput = []; let tmpShow = []; for (let i = 0; i < ids.length; i++) { - const data = await BrandApi.getBrand(ids[i]) + const data = await ProductInfoApi.getProductInfo(ids[i]) tmpInput.push(data[props.dataKey]); tmpShow.push(data[props.showKey]); } @@ -212,7 +199,29 @@ const initInput = async () => { } watch(() => props.visible, (newVal) => { that.visible = newVal; + }) + +watch(() => props.modelValue, (newVal)=>{ + that.inputVal = toStr(newVal,'') + if (that.inputVal) { + initInput(); + } +},{ + immediate: true +}) +// 用监听属性变化无其他意义 +const tmp = computed(()=>{ + setTimeout(()=>{ + that.inputVal = toStr(props.modelValue,that.inputVal) + if (that.inputVal) { + initInput(); + } + },100) + return '' +},{deep: true}) + + const clearData = () => { that.inputVal = ''; that.showValue = ''; diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderForm.vue index ea182e1..12648b5 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderForm.vue @@ -7,27 +7,43 @@ label-width="100px" v-loading="formLoading" > + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +