diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/mapper/BaseMapperX.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/mapper/BaseMapperX.java index d385de7..d452644 100644 --- a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/mapper/BaseMapperX.java +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/mapper/BaseMapperX.java @@ -121,7 +121,7 @@ public interface BaseMapperX extends MPJBaseMapper { return selectList(new LambdaQueryWrapper().eq(field, value)); } - default List selectList(String field, Collection values) { + default List selectList(String field, Collection values) { if (CollUtil.isEmpty(values)) { return CollUtil.newArrayList(); } diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/DictTypeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/DictTypeConstants.java new file mode 100644 index 0000000..a3c4b22 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/DictTypeConstants.java @@ -0,0 +1,14 @@ +package cn.hangtag.module.oms.enums; + +/** + * OMS 字典类型的枚举类 + * + * @author 芋道源码 + */ +public interface DictTypeConstants { + + // ========== OMS 模块 ========== + String BILL_STATUS = "oms_bill_status"; // 单据状态 + + String ORDER_STATUS = "oms_order_status"; // 订单状态 +} 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 new file mode 100644 index 0000000..3c87c00 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/common/BillStatusEnum.java @@ -0,0 +1,29 @@ +package cn.hangtag.module.oms.enums.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 单据状态 + * @author wwb + */ +@Getter +@AllArgsConstructor +public enum BillStatusEnum { + //订单状态:已下单、生产中、已完成 + //单据状态:暂存、已提交、已审核 + + SAVE("A", "暂存"), + SUBMIT("B", "已提交"), + AUDIT("C", "已审核"); + + /** + * 状态 + */ + private final String value; + /** + * 状态名 + */ + private final String name; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderStatusEnum.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderStatusEnum.java new file mode 100644 index 0000000..3aea991 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderStatusEnum.java @@ -0,0 +1,41 @@ +package cn.hangtag.module.oms.enums.saleorder; + + +import cn.hangtag.framework.common.core.IntArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 销售订单状态 + * + * @author wwb + */ +@Getter +@AllArgsConstructor +public enum SaleOrderStatusEnum implements IntArrayValuable { + //订单状态:已下单、生产中、已完成 + //单据状态:暂存、已提交、已审核 + + YXD(0, "已下单"), + SCZ(1, "生产中"), + YWC(2, "已完成"); + + /** + * 状态 + */ + private final Integer value; + /** + * 状态名 + */ + private final String name; + + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SaleOrderStatusEnum::getValue).toArray(); + + @Override + public int[] array() { + return ARRAYS; + } +} + diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java index 9ce63ef..633d733 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java @@ -12,18 +12,14 @@ import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; import cn.hangtag.module.oms.service.customer.CustomerService; import cn.hutool.core.collection.CollUtil; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; - import java.util.Collections; import java.util.List; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java index 8381d67..8a3c178 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java @@ -1,18 +1,35 @@ package cn.hangtag.module.oms.controller.admin.app; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.module.oms.controller.admin.productinfo.vo.ProductInfoPageReqVO; +import cn.hangtag.module.oms.controller.admin.productinfo.vo.ProductInfoRespVO; +import cn.hangtag.module.oms.dal.dataobject.productinfo.ProductInfoDO; +import cn.hangtag.module.oms.service.productinfo.ProductInfoService; +import cn.hangtag.module.oms.service.saleorder.SaleOrderService; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.Map; + +import static cn.hangtag.framework.common.pojo.CommonResult.success; + @Tag(name = "APP - 销售订单") @RestController @RequestMapping("/oms/app/saleorder") @Validated public class AppSaleOrderController{ - - + @Resource + private SaleOrderService saleOrderService; } \ 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 3406805..1cff71d 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 @@ -24,7 +24,7 @@ public class ProduceOrderSaveReqVO { private String customerCode; @Schema(description = "产品id", example = "29732") - private Integer productId; + private Long productId; @Schema(description = "产品编号") private String productCode; @@ -36,7 +36,7 @@ public class ProduceOrderSaveReqVO { private Integer saleContractNo; @Schema(description = "合约日期") - private LocalDateTime contractDate; + private Date contractDate; @Schema(description = "合约数量") private Long contractQty; @@ -47,14 +47,14 @@ public class ProduceOrderSaveReqVO { @Schema(description = "交货地点") private String deliveryPlace; - @Schema(description = "职员") + @Schema(description = "职员") private String clerk; @Schema(description = "报告日期") - private LocalDateTime reportDate; + private Date reportDate; @Schema(description = "生产日期") - private LocalDateTime produceDate; + private Date produceDate; @Schema(description = "天数") private Long days; @@ -66,10 +66,10 @@ public class ProduceOrderSaveReqVO { private String deliveryMethod; @Schema(description = "验货日期") - private LocalDateTime inspectionDate; + private Date inspectionDate; @Schema(description = "交货日期") - private LocalDateTime deliverydate; + private Date deliverydate; @Schema(description = "交货数量") private Integer deliveryQty; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java index 0c669fc..566787f 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java @@ -103,4 +103,35 @@ public class SaleOrderController { return success(saleOrderService.getSaleOrderEntryListByParentId(parentId)); } + + @GetMapping("/get-count") + @Operation(summary = "获得销售订单 分页 tab count") + @PreAuthorize("@ss.hasPermission('oms:sale-order:query')") + public CommonResult> getSpuCount() { + return success(saleOrderService.getTabsCount()); + } + + @PutMapping("/updateSaleOrderBillStatus") + @Operation(summary = "更新销售订单的状态") + @PreAuthorize("@ss.hasPermission('oms:sale-order:update-status')") + public CommonResult updateSaleOrderBillStatus(@RequestParam("ids") List ids, + @RequestParam("status") String status) { + saleOrderService.updateSaleOrderBillStatus(ids, status); + return success(true); + } + + + @PutMapping("/generateProduceOrder") + @Operation(summary = "生成生成制单") + @PreAuthorize("@ss.hasPermission('oms:sale-order:generate-produceorder')") + public CommonResult generateProduceOrder(@RequestParam("ids") List ids) { + saleOrderService.generateProduceOrder(ids); + return success(true); + } + + + + + + } \ 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/vo/SaleOrderPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderPageReqVO.java index 5a7d3b7..b823524 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderPageReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderPageReqVO.java @@ -36,7 +36,15 @@ public class SaleOrderPageReqVO extends PageParam { @Schema(description = "手机") private String phone; + @Schema(description = "单据状态") + private String billStatus; + + @Schema(description = "订单状态") + private String orderStatus; + @Schema(description = "备注") private String remarks; + @Schema(description = "前端请求的tab类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer tabType; } \ 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/vo/SaleOrderRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderRespVO.java index 974fbb1..5b5a7cc 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderRespVO.java @@ -1,5 +1,8 @@ package cn.hangtag.module.oms.controller.admin.saleorder.vo; +import cn.hangtag.framework.excel.core.annotations.DictFormat; +import cn.hangtag.framework.excel.core.convert.DictConvert; +import cn.hangtag.module.oms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -12,6 +15,10 @@ import com.alibaba.excel.annotation.*; @ExcelIgnoreUnannotated public class SaleOrderRespVO { + @Schema(description = "ID") + @ExcelProperty("ID") + private Long id; + @Schema(description = "单据编号") @ExcelProperty("单据编号") private String billno; @@ -20,6 +27,17 @@ public class SaleOrderRespVO { @ExcelProperty("客户id") private Long customerId; + + @Schema(description = "单据状态", example = "2") + @ExcelProperty(value = "单据状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.BILL_STATUS) + private String billStatus; + + @Schema(description = "订单状态", example = "2") + @ExcelProperty(value = "订单状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.ORDER_STATUS) + private Integer orderStatus; + @Schema(description = "业务日期") @ExcelProperty("业务日期") private LocalDateTime bizdate; @@ -30,11 +48,11 @@ public class SaleOrderRespVO { @Schema(description = "更新时间") @ExcelProperty("更新时间") - private LocalDateTime udate; + private LocalDateTime updateTime; @Schema(description = "创建时间") @ExcelProperty("创建时间") - private LocalDateTime cdate; + private LocalDateTime createTime; @Schema(description = "确认日期") @ExcelProperty("确认日期") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java index a1ecc65..75a47d3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java @@ -56,6 +56,12 @@ public class SaleOrderSaveReqVO { @Schema(description = "发票备注") private String invoiceRemarks; + @Schema(description = "单据状态", example = "2") + private String billStatus; + + @Schema(description = "订单状态", example = "2") + private Integer orderStatus; + @Schema(description = "销售订单明细列表") private List saleOrderEntrys; 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 4ed12eb..97b0969 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 @@ -46,14 +46,6 @@ public class SaleOrderDO extends BaseDO { * 备注 */ private String remark; - /** - * 更新时间 - */ - private LocalDateTime udate; - /** - * 创建时间 - */ - private LocalDateTime cdate; /** * 确认日期 */ @@ -66,6 +58,14 @@ public class SaleOrderDO extends BaseDO { * 订单类型 */ private String orderType; + /** + * 订单状态 + */ + private Integer orderStatus; + /** + * 单据状态 + */ + private String billStatus; /** * 手机 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java index 9ddcb34..32a7b7e 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java @@ -30,8 +30,11 @@ public interface BrandMapper extends BaseMapperX { } default List selectList(BrandListReqVO reqVO){ - return selectList(new LambdaQueryWrapperX() - .in(BrandDO::getId, reqVO.getIds()) - .likeIfPresent(BrandDO::getName, reqVO.getName())); + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX<>(); + if(reqVO.getIds()!=null&&reqVO.getIds().size()>0){ + queryWrapper.in(BrandDO::getId, reqVO.getIds()); + } + queryWrapper.likeIfPresent(BrandDO::getName, reqVO.getName()); + return selectList(queryWrapper); } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java index 12267af..eb5071f 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java @@ -1,13 +1,13 @@ package cn.hangtag.module.oms.dal.mysql.saleorder; -import java.util.*; - import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; +import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum; +import cn.hutool.core.util.ObjectUtil; import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.oms.controller.admin.saleorder.vo.*; /** * 销售订单 Mapper @@ -18,7 +18,8 @@ import cn.hangtag.module.oms.controller.admin.saleorder.vo.*; public interface SaleOrderMapper extends BaseMapperX { default PageResult selectPage(SaleOrderPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + Integer tabType = reqVO.getTabType(); + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() .eqIfPresent(SaleOrderDO::getBillno, reqVO.getBillno()) .eqIfPresent(SaleOrderDO::getCustomerId, reqVO.getCustomerId()) .betweenIfPresent(SaleOrderDO::getBizdate, reqVO.getBizdate()) @@ -26,7 +27,37 @@ public interface SaleOrderMapper extends BaseMapperX { .betweenIfPresent(SaleOrderDO::getPlansenddate, reqVO.getPlansenddate()) .eqIfPresent(SaleOrderDO::getPhone, reqVO.getPhone()) .eqIfPresent(SaleOrderDO::getRemarks, reqVO.getRemarks()) - .orderByDesc(SaleOrderDO::getId)); + .eqIfPresent(SaleOrderDO::getBillStatus, reqVO.getBillStatus()) + .eqIfPresent(SaleOrderDO::getOrderStatus, reqVO.getOrderStatus()) + .orderByDesc(SaleOrderDO::getId); + appendTabQuery(tabType, queryWrapper); + + queryWrapper.orderByDesc(SaleOrderDO::getCreateTime); + return selectPage(reqVO,queryWrapper ); + } + + + + + /** + * 添加后台 Tab 选项的查询条件 + * + * @param tabType 标签类型 + * @param query 查询条件 + */ + default void appendTabQuery(Integer tabType, LambdaQueryWrapperX query) { + // 已下单 + if (ObjectUtil.equals(SaleOrderStatusEnum.YXD.getValue(), tabType)) { + query.eqIfPresent(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YXD.getValue()); + } + // 生产中 + if (ObjectUtil.equals(SaleOrderStatusEnum.SCZ.getValue(), tabType)) { + query.eqIfPresent(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.SCZ.getValue()); + } + // 已完成 + if (ObjectUtil.equals(SaleOrderStatusEnum.YWC.getValue(), tabType)) { + query.eqIfPresent(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YWC.getValue()); + } } } \ 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 b75e6ce..f34bcf3 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 @@ -1,5 +1,13 @@ package cn.hangtag.module.oms.service.produceorder; +import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.hangtag.framework.common.util.FuncUtil; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -24,6 +32,7 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; */ @Service @Validated +@Slf4j public class ProduceOrderServiceImpl implements ProduceOrderService { @Resource @@ -33,6 +42,12 @@ public class ProduceOrderServiceImpl implements ProduceOrderService { public Long createProduceOrder(ProduceOrderSaveReqVO createReqVO) { // 插入 ProduceOrderDO produceOrder = BeanUtils.toBean(createReqVO, ProduceOrderDO.class); + String code = produceOrder.getBillno(); + if(FuncUtil.isNotEmpty(code)){ + checkCode(produceOrder.getId(),code); + }else { + produceOrder.setBillno(getNewCode()); + } produceOrderMapper.insert(produceOrder); // 返回 return produceOrder.getId(); @@ -71,4 +86,47 @@ public class ProduceOrderServiceImpl implements ProduceOrderService { return produceOrderMapper.selectPage(pageReqVO); } + + + + private String getNewCode() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(3L, false); + checkCode(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<>(); + lambdaQueryWrapper.select(ProduceOrderDO::getId,ProduceOrderDO::getBillno, BaseDO::getDeleted); + lambdaQueryWrapper.eq(ProduceOrderDO::getBillno, code); + lambdaQueryWrapper.eq(ProduceOrderDO::getDeleted,false); + List dos = produceOrderMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (ProduceOrderDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } + } \ 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/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index b953f7e..9b36cc5 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 @@ -63,4 +63,9 @@ public interface SaleOrderService { */ List getSaleOrderEntryListByParentId(Long parentId); + Map getTabsCount(); + + void updateSaleOrderBillStatus(List ids, String status); + + void generateProduceOrder(List ids); } \ 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 b2044b3..d16d404 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 @@ -1,23 +1,36 @@ package cn.hangtag.module.oms.service.saleorder; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.oms.controller.admin.saleorder.vo.*; +import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.FuncUtil; +import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; +import cn.hangtag.module.oms.dal.dataobject.brand.BrandDO; 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.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper; import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper; +import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; +import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_EXISTS; /** * 销售订单 Service 实现类 @@ -26,12 +39,15 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; */ @Service @Validated +@Slf4j public class SaleOrderServiceImpl implements SaleOrderService { @Resource private SaleOrderMapper saleOrderMapper; @Resource private SaleOrderEntryMapper saleOrderEntryMapper; + @Resource + private ProduceOrderService produceOrderService; @Override @Transactional(rollbackFor = Exception.class) @@ -94,6 +110,52 @@ public class SaleOrderServiceImpl implements SaleOrderService { return saleOrderEntryMapper.selectListByParentId(parentId); } + @Override + public Map getTabsCount() { + Map counts = Maps.newLinkedHashMapWithExpectedSize(3); + // 查询已下单订单数量 + counts.put(SaleOrderStatusEnum.YXD.getValue(), + saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YXD.getValue())); + // 查询已生产订单数量 + counts.put(SaleOrderStatusEnum.SCZ.getValue(), + saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.SCZ.getValue())); + // 查询已完成订单数量 + counts.put(SaleOrderStatusEnum.YWC.getValue(), + saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YWC.getValue())); + return counts; + } + + @Override + public void updateSaleOrderBillStatus(List ids, String status) { + + } + + @Override + 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(1111111); + saveReqVO.setDays(5L); + saveReqVO.setClerk("职员"); + saveReqVO.setContractDate(new Date()); + Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO); + //更新销售订单已完成 + /*if(produceOrderId!=null){ + SaleOrderSaveReqVO saleOrderSaveReqVO = new SaleOrderSaveReqVO(); + saleOrderSaveReqVO.setId(saleOrder.getId()); + saleOrderSaveReqVO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); + updateSaleOrder(saleOrderSaveReqVO); + }*/ + } + } + + private void createSaleOrderEntryList(Long parentId, List list) { list.forEach(o -> o.setParentId(parentId)); saleOrderEntryMapper.insertBatch(list); @@ -109,4 +171,6 @@ public class SaleOrderServiceImpl implements SaleOrderService { saleOrderEntryMapper.deleteByParentId(parentId); } + + } \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/saleorder/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/saleorder/index.ts index 3b828e6..0bdaad5 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/saleorder/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/saleorder/index.ts @@ -1,58 +1,84 @@ -import request from '@/config/axios' - -// 销售订单 VO -export interface SaleOrderVO { - customerId: number // 客户id - bizdate: Date // 业务日期 - remark: string // 备注 - confirmdate: Date // 确认日期 - plansenddate: Date // 计划日期 - phone: string // 手机 - remarks: string // 备注 - emails: string // 邮件列表,数据格式:xxx@xx.com;xxx@xx.com; - invoiceCode: string // 发票抬头 - invoiceName: string // 发票名称 - address: string // 地址 - currency: string // 货币 - invoiceRemarks: string // 发票备注 -} - -// 销售订单 API -export const SaleOrderApi = { - // 查询销售订单分页 - getSaleOrderPage: async (params: any) => { - return await request.get({ url: `/oms/sale-order/page`, params }) - }, - - // 查询销售订单详情 - getSaleOrder: async (id: number) => { - return await request.get({ url: `/oms/sale-order/get?id=` + id }) - }, - - // 新增销售订单 - createSaleOrder: async (data: SaleOrderVO) => { - return await request.post({ url: `/oms/sale-order/create`, data }) - }, - - // 修改销售订单 - updateSaleOrder: async (data: SaleOrderVO) => { - return await request.put({ url: `/oms/sale-order/update`, data }) - }, - - // 删除销售订单 - deleteSaleOrder: async (id: number) => { - return await request.delete({ url: `/oms/sale-order/delete?id=` + id }) - }, - - // 导出销售订单 Excel - exportSaleOrder: async (params) => { - return await request.download({ url: `/oms/sale-order/export-excel`, params }) - }, - -// ==================== 子表(销售订单明细) ==================== - - // 获得销售订单明细列表 - getSaleOrderEntryListByParentId: async (parentId) => { - return await request.get({ url: `/oms/sale-order/sale-order-entry/list-by-parent-id?parentId=` + parentId }) - }, -} \ No newline at end of file +import request from '@/config/axios' + +// 销售订单 VO +export interface SaleOrderVO { + customerId: number // 客户id + bizdate: Date // 业务日期 + remark: string // 备注 + confirmdate: Date // 确认日期 + plansenddate: Date // 计划日期 + phone: string // 手机 + remarks: string // 备注 + emails: string // 邮件列表,数据格式:xxx@xx.com;xxx@xx.com; + invoiceCode: string // 发票抬头 + invoiceName: string // 发票名称 + address: string // 地址 + currency: string // 货币 + invoiceRemarks: string // 发票备注 +} + +// 销售订单 API +export const SaleOrderApi = { + // 查询销售订单分页 + getSaleOrderPage: async (params: any) => { + return await request.get({ url: `/oms/sale-order/page`, params }) + }, + + // 查询销售订单详情 + getSaleOrder: async (id: number) => { + return await request.get({ url: `/oms/sale-order/get?id=` + id }) + }, + + // 新增销售订单 + createSaleOrder: async (data: SaleOrderVO) => { + return await request.post({ url: `/oms/sale-order/create`, data }) + }, + + // 修改销售订单 + updateSaleOrder: async (data: SaleOrderVO) => { + return await request.put({ url: `/oms/sale-order/update`, data }) + }, + + // 删除销售订单 + deleteSaleOrder: async (id: number) => { + return await request.delete({ url: `/oms/sale-order/delete?id=` + id }) + }, + + // 导出销售订单 Excel + exportSaleOrder: async (params) => { + return await request.download({ url: `/oms/sale-order/export-excel`, params }) + }, + +// ==================== 子表(销售订单明细) ==================== + + // 获得销售订单明细列表 + getSaleOrderEntryListByParentId: async (parentId) => { + return await request.get({ url: `/oms/sale-order/sale-order-entry/list-by-parent-id?parentId=` + parentId }) + }, + + // 获得 销售 列表 tabsCount + getTabsCount: async () => { + return request.get({ url: '/oms/sale-order/get-count' }) + }, + + // 更新订单状态 + updateSaleOrderBillStatus: async (ids: number[],status: string) => { + return await request.post({ + url: `/oms/sale-order/updateSaleOrderBillStatus`, + params: { + ids: ids.join(','), + status: status + } + }) + }, + // 更新订单状态 + generateProduceOrder: async (ids: number[]) => { + return await request.put({ + url: `/oms/sale-order/generateProduceOrder`, + params: { + ids: ids.join(',') + } + }) + }, + +} diff --git a/hangtag-ui/hangtag-ui-admin/src/utils/dict.ts b/hangtag-ui/hangtag-ui-admin/src/utils/dict.ts index 1e3ff9d..4f1a975 100644 --- a/hangtag-ui/hangtag-ui-admin/src/utils/dict.ts +++ b/hangtag-ui/hangtag-ui-admin/src/utils/dict.ts @@ -212,7 +212,10 @@ export enum DICT_TYPE { ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态 ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type', // 库存明细的业务类型 - // ========== OMS - 企业订单管理模块 ========== - OMS_DATA_STATUS = 'oms_data_status', // 库存明细的业务类型 - OMS_PRODUCT_CARE_ITEM_TYPE= 'oms_product_care_item_type', //产品保养项目类型 1.成分说明 2.洗涤说明 3.使用说明 4.尺码 + // ========== OMS模块 ========== + OMS_DATA_STATUS = 'oms_data_status', // 数据状态 + OMS_BILL_STATUS = 'oms_bill_status', // 单据状态 + OMS_ORDER_STATUS = 'oms_order_status',// 订单状态 + OMS_PRODUCT_CARE_ITEM_TYPE = 'oms_product_care_item_type', //产品保养项目类型 1.成分说明 2.洗涤说明 3.使用说明 4.尺码 + } diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/order/createorder/index..vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/order/createorder/index..vue deleted file mode 100644 index b0250b0..0000000 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/order/createorder/index..vue +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/order/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/order/index.vue deleted file mode 100644 index d6a2c43..0000000 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/order/index.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue index bf8c6ea..105c007 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue @@ -59,6 +59,36 @@ class="!w-240px" /> + + + + + + + + + + 生产中 + :disabled="selectionList.length === 0" + >驳回 + + 提交 - 已完成 + 审核 + + + 反审核 + + + 生成制单 - + + - + + + + + + @@ -151,18 +219,18 @@ - +