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/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index fd245a0..1f50e36 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -13,6 +13,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro ErrorCode SHAPE_TEMPLATE_NOT_EXISTS = new ErrorCode(3400, "图形模板管理 不存在"); ErrorCode DRAFT_DESIGN_DATA_NOT_EXISTS = new ErrorCode(3500, "稿件模板数据 不存在"); ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(3600, "OMS销售订单不存在"); + ErrorCode SALE_ORDER_NOT_DELETE = new ErrorCode(3601, "OMS销售订单已审核不允许删除"); ErrorCode SALE_ORDER_ENTRY_NOT_EXISTS = new ErrorCode(3700, "OMS销售订单明细不存在"); ErrorCode SALE_ORDER_ENTRY_PRICE_NOT_NULL= new ErrorCode(3701, "单价不允许为空"); ErrorCode SALE_ORDER_SKU_NOT_EXISTS = new ErrorCode(3702, "产品单价记录不存在"); 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/customer/vo/CustomerRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java index 73760b5..c4668d3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java @@ -70,6 +70,18 @@ public class CustomerRespVO { @ExcelProperty("类型") private String type; + @Schema(description = "发票抬头") + @ExcelProperty("发票抬头") + private String invoiceCode; + + @Schema(description = "发票名称") + @ExcelProperty("发票名称") + private String invoiceName; + + @Schema(description = "发票地址") + @ExcelProperty("发票地址") + private String invoiceAddress; + @Schema(description = "数据状态", example = "2") @ExcelProperty(value = "数据状态", converter = DictConvert.class) @DictFormat("oms_data_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java index 5ca029f..8be19ab 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java @@ -54,6 +54,24 @@ public class CustomerSaveReqVO { @Schema(description = "备注") private String remarks; + /** + * 发票抬头 + */ + @Schema(description = "发票抬头") + private String invoiceCode; + + /** + * 发票名称 + */ + @Schema(description = "发票名称") + private String invoiceName; + + /** + * 发票地址 + */ + @Schema(description = "发票地址") + private String invoiceAddress; + @Schema(description = "订单地址列表") private List customerAddresss; 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/controller/admin/saleorder/front/dto/SaleOrderEntryItemDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/front/dto/SaleOrderEntryItemDTO.java index c3d50a7..334b0fc 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/front/dto/SaleOrderEntryItemDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/front/dto/SaleOrderEntryItemDTO.java @@ -27,7 +27,7 @@ public class SaleOrderEntryItemDTO implements Serializable { /** * 产品id */ - private Integer productId; + private Long productId; /** * 产品编码 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java index b90f744..a0019e6 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java @@ -79,6 +79,21 @@ public class CustomerDO extends BaseDO { * 备注 */ private String remarks; + + /** + * 发票抬头 + */ + private String invoiceCode; + + /** + * 发票名称 + */ + private String invoiceName; + + /** + * 发票地址 + */ + private String invoiceAddress; /** * 数据状态 * 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/dataobject/saleorderentry/SaleOrderEntryDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java index 260b4b7..4601653 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java @@ -34,7 +34,7 @@ public class SaleOrderEntryDO extends BaseDO { /** * 物料id */ - private Integer materialId; + private Long materialId; /** * 物料名称 */ 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 f037227..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 接口 @@ -72,9 +73,7 @@ public interface SaleOrderService { Map getTabsCount(Long customerId); - default void updateSaleOrderBillStatus(List ids, String status){ - updateSaleOrderBillStatus(ids,status,null); - } + void updateSaleOrderBillStatus(List ids, String status); void updateSaleOrderBillStatus(List ids, String status,Map params); void generateProduceOrder(List ids); @@ -110,4 +109,7 @@ public interface SaleOrderService { Long placeOrder(CreateSaleOrderDTO dto); 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 14fb0dc..b700597 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 @@ -14,6 +14,7 @@ import cn.hangtag.module.oms.common.utils.WKHtmlToPdfUtil; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; import cn.hangtag.module.oms.controller.admin.product.vo.ProductPriceSaveReqVO; +import cn.hangtag.module.oms.controller.admin.salecontract.vo.SaleContractSaveReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.front.dto.CreateSaleOrderDTO; import cn.hangtag.module.oms.controller.admin.saleorder.front.dto.SaleOrderEntryItemDTO; import cn.hangtag.module.oms.controller.admin.saleorder.front.dto.SaleOrderSkuDTO; @@ -25,6 +26,7 @@ import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendReqVO; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO; import cn.hangtag.module.oms.convert.saleorder.SaleOrderConvert; import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; import cn.hangtag.module.oms.dal.dataobject.product.ProductPriceDO; import cn.hangtag.module.oms.dal.dataobject.productinfo.ProductInfoDO; import cn.hangtag.module.oms.dal.dataobject.salecontract.SaleContractDO; @@ -32,6 +34,8 @@ import cn.hangtag.module.oms.dal.dataobject.salecontractentry.SaleContractEntryD import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.module.oms.dal.mysql.customer.CustomerMapper; +import cn.hangtag.module.oms.dal.mysql.salecontract.SaleContractMapper; import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper; import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper; import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; @@ -46,11 +50,15 @@ import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; import cn.hangtag.module.oms.service.product.ProductPriceService; import cn.hangtag.module.oms.service.productinfo.ProductInfoService; import cn.hangtag.module.oms.service.salecontract.SaleContractService; +import cn.hangtag.module.system.mq.message.mail.MailSendMessage; +import cn.hangtag.module.system.service.mail.MailAccountService; +import cn.hangtag.module.system.service.mail.MailSendService; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; @@ -58,12 +66,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Maps; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.io.File; @@ -73,14 +84,12 @@ import java.io.InputStream; import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_DELETE; import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_EXISTS; /** @@ -91,19 +100,45 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_EXIS @Service @Validated @Slf4j -@AllArgsConstructor +//@AllArgsConstructor public class SaleOrderServiceImpl implements SaleOrderService { + @Resource + private SaleOrderMapper saleOrderMapper; + @Resource + private SaleContractMapper saleContractMapper; + @Resource + private SaleOrderEntryMapper saleOrderEntryMapper; + @Resource + private SaleOrderSkuMapper skuOrderSkuMapper; + @Resource + private ProduceOrderService produceOrderService; + @Resource + private ProductInfoService productInfoService; + @Resource + private SaleContractService saleContractService; + @Resource + private CustomerService customerService; + @Resource + private CustomerMapper customerMapper; + @Resource + private ProductPriceService productPriceService; + + @Resource + private TemplateEngine templateEngine; + @Resource + private MailSendService mailSendService; + + + @Value("${oms.partyb}") + private String partyb; + + @Value("${oms.partybAddress}") + private String partybAddress; + + @Value("${pdfPath}") + private String pdfPath; - private final SaleOrderMapper saleOrderMapper; - private final SaleOrderEntryMapper saleOrderEntryMapper; - private final SaleOrderSkuMapper skuOrderSkuMapper; - private final ProduceOrderService produceOrderService; - private final ProductInfoService productInfoService; - private final SaleContractService saleContractService; - private final CustomerService customerService; - private final ProductPriceService productPriceService; - private final TemplateEngine templateEngine; @Override @@ -127,7 +162,6 @@ public class SaleOrderServiceImpl implements SaleOrderService { // 更新 SaleOrderDO updateObj = BeanUtils.toBean(updateReqVO, SaleOrderDO.class); saleOrderMapper.updateById(updateObj); - // 更新子表 updateSaleOrderEntryList(updateReqVO.getId(), updateReqVO.getEntrys()); } @@ -136,6 +170,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { @Transactional(rollbackFor = Exception.class) public void deleteSaleOrder(Long id) { // 校验存在 + validateSaleOrderStatus(id); validateSaleOrderExists(id); // 删除 saleOrderMapper.deleteById(id); @@ -150,6 +185,15 @@ public class SaleOrderServiceImpl implements SaleOrderService { } } + private void validateSaleOrderStatus(Long id) { + SaleOrderDO saleOrderDO = saleOrderMapper.selectById(id); + if (saleOrderDO == null) { + if(BillStatusEnum.AUDIT.getValue().equals(saleOrderDO.getBillStatus())){ + throw exception(SALE_ORDER_NOT_DELETE); + } + } + } + @Override public SaleOrderDO getSaleOrder(Long id) { return saleOrderMapper.selectById(id); @@ -210,9 +254,14 @@ public class SaleOrderServiceImpl implements SaleOrderService { saleOrderMapper.selectCount(lambdaQueryWrapper2)); return counts; } - @Override - public void updateSaleOrderBillStatus(List ids, String status,Map params) { + @Transactional(rollbackFor = Exception.class) + public void updateSaleOrderBillStatus(List ids, String status){ + updateSaleOrderBillStatus(ids,status,null); + } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateSaleOrderBillStatus(List ids, String status,Map params){ List saleOrders = saleOrderMapper.selectList(SaleOrderDO::getId, ids); switch (status){ case "invalid": @@ -251,7 +300,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { if(entrys==null||entrys.isEmpty()){ throw new ServiceException(001,"产品明细为空"); } - for (cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO entry : entrys) { + for (SaleOrderEntryDO entry : entrys) { BigDecimal price = entry.getPrice(); if(price==null){ throw new ServiceException(ErrorCodeConstants.SALE_ORDER_ENTRY_PRICE_NOT_NULL); @@ -259,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()); @@ -267,15 +316,39 @@ public class SaleOrderServiceImpl implements SaleOrderService { //生成产品单价记录 - for (cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO entry : entrys) { + for (SaleOrderEntryDO entry : entrys) { Long parentId = entry.getParentId(); BigDecimal price = entry.getPrice(); generateProductPrice(parentId,price); } + + //生成销售合约 + Long saleContractId = generateSaleContract(saleOrder,entrys); + + String htmlContent = generateHtmlContent(saleContractId); + String fileName = StrUtil.format(pdfPath+"/销售合约_{}", + new Date().getTime()); + + String templatePath = fileName + ".html"; + String pdfPath = fileName + ".pdf"; + FileUtil.writeString(htmlContent,templatePath, "UTF-8"); + WKHtmlToPdfUtil.convert(templatePath, pdfPath); + + //发送消息 + String emails = saleOrder.getEmails(); + if(StringUtils.isNotBlank(emails)){ + MailSendMessage message = new MailSendMessage(); + message.setAccountId(1L); + message.setMail(emails); + message.setTitle("OMS订单系统"); + message.setContent("您好,您的订单:"+saleOrder.getBillno()+",已审核通过!"); + mailSendService.doSendMail(message,new File(pdfPath)); + } } } break; } + } @@ -290,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); + //} } } @@ -320,14 +422,14 @@ public class SaleOrderServiceImpl implements SaleOrderService { CustomerDO customer = customerService.getCustomer(saleContract.getCustomerId()); Context context = new Context(); context.setVariable("title", "销售合约"); - context.setVariable("partyACompany", saleContract.getPartyA()); context.setVariable("contractNo", saleContract.getBillno()); + context.setVariable("partyACompany", saleContract.getPartyA()); context.setVariable("partyAAddress", customer.getCompanyAddress()); + context.setVariable("partyBCompany", partyb); + context.setVariable("partyBAddress", partybAddress); context.setVariable("bizDate", DateUtil.date(saleContract.getBizdate()).toDateStr()); context.setVariable("customerNo", customer.getNumber()); context.setVariable("headUserName", saleContract.getHead()); - context.setVariable("partyBCompany", "乙方公司"); - context.setVariable("partyBAddress", "乙方地址XXXXXXXXXXX"); context.setVariable("phone", saleContract.getPhone()); context.setVariable("fax", saleContract.getFax()); context.setVariable("clerk", saleContract.getClerk()); @@ -342,7 +444,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { String code = productInfo.getCode(); String name = productInfo.getName(); String details = productInfo.getDetails(); - + Double specSizeHeight = productInfo.getSpecSizeHeight(); + Double specSizeWidth = productInfo.getSpecSizeWidth(); + Double specSizeThk = productInfo.getSpecSizeThk(); + String spec = specSizeWidth.doubleValue()+ " * " + specSizeHeight.doubleValue() + " " + specSizeThk.doubleValue(); int j = i+1; context.setVariable("item"+j, j+""); context.setVariable("explain"+j, code); @@ -350,10 +455,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { context.setVariable("price"+j, saleContractEntryDO.getPrice()); context.setVariable("discount"+j, saleContractEntryDO.getDiscount()); context.setVariable("amount"+j, saleContractEntryDO.getAmount()); - context.setVariable("deliverydate"+j, saleContractEntryDO.getDeliveryDate()); + context.setVariable("deliverydate"+j, DateUtil.date(saleContractEntryDO.getDeliveryDate()).toDateStr()); context.setVariable("explain"+j+"1", name); context.setVariable("explain"+j+"2", details); - context.setVariable("explain"+j+"3", ""); + context.setVariable("explain"+j+"3", spec); } return templateEngine.process("pdf_template", context); } @@ -491,10 +596,13 @@ public class SaleOrderServiceImpl implements SaleOrderService { saleOrderMapper.insert(order); saleOrderEntryMapper.insertBatch(entryList); skuOrderSkuMapper.insertBatch(skuList); + + updateCustomerInvoiceData(order); System.out.println(order); return order.getId(); } private static final long codeId = 6L; + private static final long saleContractCodeId = 7L; @Override public String getNewOrderCode() { String s = ""; @@ -514,6 +622,25 @@ public class SaleOrderServiceImpl implements SaleOrderService { } } } + @Override + public String getNewOrderCode2() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(saleContractCodeId, false); + checkCode2(null,s); + return s; + }catch (ServiceException e){ + log.warn("重复或者下一个编码"); + if(count < 0){ + log.error("编码获取失败"); + return ""; + } + } + } + } private void checkCode(Long id,String code){ if(FuncUtil.isNotEmpty(code)){ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -534,6 +661,28 @@ public class SaleOrderServiceImpl implements SaleOrderService { } } } + + + private void checkCode2(Long id,String code){ + if(FuncUtil.isNotEmpty(code)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SaleContractDO::getId,SaleContractDO::getBillno, BaseDO::getDeleted); + lambdaQueryWrapper.eq(SaleContractDO::getBillno, code); + lambdaQueryWrapper.eq(SaleContractDO::getDeleted,false); + List dos = saleContractMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (SaleContractDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } private SaleOrderDO wrapperEntity(SaleOrderDO order,CreateSaleOrderDTO dto){ // 客户信息 LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); @@ -549,7 +698,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { order.setPlansenddate( FuncUtil.parseDate(dto.getPlansenddate())); // 设置订单状态 order.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); - order.setBillStatus(BillStatusEnum.SAVE.getValue()); + order.setBillStatus(BillStatusEnum.SUBMIT.getValue()); String orderType = order.getOrderType(); if(FuncUtil.isEmpty(orderType)){ order.setOrderType(SaleOrderTypeEnum.NORMAL.getType()); @@ -586,8 +735,27 @@ public class SaleOrderServiceImpl implements SaleOrderService { } private void createSaleOrderEntryList(Long parentId, List list) { + BigDecimal amount = BigDecimal.ZERO; list.forEach(o -> o.setParentId(parentId)); + for (SaleOrderEntryDO saleOrderEntryDO : list) { + BigDecimal price = saleOrderEntryDO.getPrice(); + Integer qty = saleOrderEntryDO.getQty(); + BigDecimal discount = saleOrderEntryDO.getDiscount(); + if(price!=null){ + if(discount!=null){ + saleOrderEntryDO.setAmount(price.multiply(BigDecimal.valueOf(qty)).multiply(discount)); + }else { + saleOrderEntryDO.setAmount(price.multiply(BigDecimal.valueOf(qty))); + } + amount = amount.add(saleOrderEntryDO.getAmount()); + } + } saleOrderEntryMapper.insertBatch(list); + //更新总金额 + SaleOrderDO saleOrderDO = new SaleOrderDO(); + saleOrderDO.setId(parentId); + saleOrderDO.setOrderAmount(amount); + saleOrderMapper.updateById(saleOrderDO); } private void updateSaleOrderEntryList(Long parentId, List list) { @@ -601,5 +769,65 @@ public class SaleOrderServiceImpl implements SaleOrderService { } + /** + * 更新客户发票数据 + */ + private void updateCustomerInvoiceData(SaleOrderDO order){ + String invoiceCode = order.getInvoiceCode(); + String invoiceName = order.getInvoiceName(); + String invoiceAddress = order.getInvoiceAddress(); + Long customerId = order.getCustomerId(); + if(customerId!=null){ + CustomerDO customer = customerService.getCustomer(customerId); + if(customer!=null){ + customer.setInvoiceCode(invoiceCode); + customer.setInvoiceName(invoiceName); + customer.setInvoiceAddress(invoiceAddress); + customerMapper.updateById(customer); + } + } + } + + private Long generateSaleContract(SaleOrderDO saleOrder, List entrys){ + CustomerDO customer = customerService.getCustomer(saleOrder.getCustomerId()); + + SaleContractSaveReqVO saveReqVO = new SaleContractSaveReqVO(); + saveReqVO.setBillno(getNewOrderCode2()); + saveReqVO.setCustomerId(saleOrder.getCustomerId()); + saveReqVO.setCustomerName(customer.getName()); + saveReqVO.setCustomerBuyNo(saleOrder.getBillno()); + saveReqVO.setBizdate(saleOrder.getBizdate()); + saveReqVO.setPartyA(customer.getCompany()); + saveReqVO.setHead(customer.getGdperson()); + saveReqVO.setClerk(customer.getSaleperson()); + saveReqVO.setPhone(customer.getPhone()); + saveReqVO.setFax(saleOrder.getFax()); + saveReqVO.setAmount(saleOrder.getOrderAmount()); + saveReqVO.setAddress(saleOrder.getDeliveryAddress()); + + List list = new ArrayList<>(); + for (SaleOrderEntryDO entry : entrys) { + ProductInfoDO productInfo = productInfoService.getProductInfo(entry.getMaterialId()); + + SaleContractEntryDO saleContractEntryDO = new SaleContractEntryDO(); + saleContractEntryDO.setProductId(entry.getMaterialId()); + saleContractEntryDO.setProductNumber(productInfo.getCode()); + saleContractEntryDO.setProductName(productInfo.getName()); + saleContractEntryDO.setPrice(entry.getPrice()); + saleContractEntryDO.setQty(entry.getQty()); + saleContractEntryDO.setDiscount(entry.getDiscount()); + saleContractEntryDO.setDeliveryDate(entry.getDeliveryDate()); + saleContractEntryDO.setAmount(entry.getAmount()); + list.add(saleContractEntryDO); + } + 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-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendService.java b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendService.java index b113244..7eaf3d8 100644 --- a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendService.java +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendService.java @@ -2,6 +2,7 @@ package cn.hangtag.module.system.service.mail; import cn.hangtag.module.system.mq.message.mail.MailSendMessage; +import java.io.File; import java.util.Map; /** @@ -55,6 +56,9 @@ public interface MailSendService { * * @param message 邮件 */ - void doSendMail(MailSendMessage message); + default void doSendMail(MailSendMessage message){ + doSendMail(message, null); + } + void doSendMail(MailSendMessage message, File... files); } diff --git a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendServiceImpl.java b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendServiceImpl.java index 94f2ce8..bb0617f 100644 --- a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendServiceImpl.java +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/mail/MailSendServiceImpl.java @@ -14,10 +14,15 @@ import cn.hangtag.module.system.service.member.MemberService; import cn.hangtag.module.system.service.user.AdminUserService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Map; import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -101,14 +106,25 @@ public class MailSendServiceImpl implements MailSendService { } @Override - public void doSendMail(MailSendMessage message) { + public void doSendMail(MailSendMessage message, File... files) { // 1. 创建发送账号 MailAccountDO account = validateMailAccount(message.getAccountId()); MailAccount mailAccount = buildMailAccount(account, message.getNickname()); // 2. 发送邮件 try { - String messageId = MailUtil.send(mailAccount, message.getMail(), - message.getTitle(), message.getContent(), true); + String messageId = null; + List mails = new ArrayList<>(); + String mail = message.getMail(); + if(StringUtils.isNotBlank(mail) && mail.contains(";")){ + mails = Arrays.asList(mail.split(";")); + } + if(mails!=null && mails.size()>0){ + messageId = MailUtil.send(mailAccount, mails, + message.getTitle(), message.getContent(), true,files); + }else { + messageId = MailUtil.send(mailAccount, message.getMail(), + message.getTitle(), message.getContent(), true,files); + } // 3. 更新结果(成功) mailLogService.updateMailSendResult(message.getLogId(), messageId, null); } catch (Exception e) { diff --git a/hangtag-server/src/main/resources/application-local.yaml b/hangtag-server/src/main/resources/application-local.yaml index 32239c3..d5e5843 100644 --- a/hangtag-server/src/main/resources/application-local.yaml +++ b/hangtag-server/src/main/resources/application-local.yaml @@ -47,9 +47,9 @@ spring: primary: master datasource: master: - url: jdbc:mysql://127.0.0.1:3306/hangtag?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://202.74.40.60:33061/oms-uat?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 username: root - password: 123456 + password: qygo5gYNhivG # slave: # 模拟从库,可根据自己需要修改 # lazy: true # 开启懒加载,保证启动速度 # url: jdbc:mysql://43.136.71.164:3306/hangtag?allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useUnicode=true&characterEncoding=UTF-8 @@ -240,3 +240,4 @@ justauth: prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 + diff --git a/hangtag-server/src/main/resources/application.yaml b/hangtag-server/src/main/resources/application.yaml index e6ddef5..4b9adb6 100644 --- a/hangtag-server/src/main/resources/application.yaml +++ b/hangtag-server/src/main/resources/application.yaml @@ -273,4 +273,10 @@ debug: false # 积木报表配置 jeecg: jmreport: - saas-mode: tenant \ No newline at end of file + saas-mode: tenant + +oms: + partyb: 东莞市网络网纳科技有限公司 + partybAddress: 东莞市南城********* + +pdfPath: C:\Users\Admin\Desktop\1111111\test \ 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/components/DraftDesign/components/node/LineCellNode.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/LineCellNode.vue new file mode 100644 index 0000000..9b6c70d --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/LineCellNode.vue @@ -0,0 +1,190 @@ + + + + + + diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue new file mode 100644 index 0000000..a6028b6 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue @@ -0,0 +1,282 @@ + + + + + + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue index 596f1f0..969fb4e 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue @@ -7,37 +7,66 @@ label-width="100px" v-loading="formLoading" > - -
- - 手动输入 -
-
- - - + + + +
+ + 手动输入 +
+
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/components/CustomerAddressForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/components/CustomerAddressForm.vue index 8a0f6d6..530b956 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/components/CustomerAddressForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/components/CustomerAddressForm.vue @@ -78,7 +78,7 @@ - + 添加用户地址 + + 添加客户地址 diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue index ee74889..9eda88d 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue @@ -589,6 +589,9 @@ onMounted(async () => { formData.value.company = customerData.company; formData.value.contactName = customerData.contacts; formData.value.phone = customerData.phone; + formData.value.invoiceCode = customerData.invoiceCode; + formData.value.invoiceName = customerData.invoiceName; + formData.value.invoiceAddress = customerData.invoiceAddress; if(!formData.value.deliveryAddress && that.addressList.length > 0){ formData.value.deliveryAddress = that.addressList[0].address; that.addressId = that.addressList[0].id; diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/saleorder/index.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/saleorder/index.vue index 6946f2f..24a12a0 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/saleorder/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/saleorder/index.vue @@ -357,6 +357,7 @@ const getList = async () => { } finally { loading.value = false } + getTabsCount() } @@ -574,7 +575,7 @@ onActivated(() => { onMounted(() => { getList() // 获得商品信息 - getTabsCount() + //getTabsCount() })