diff --git a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java index 27ca52bc..1dc50666 100644 --- a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java +++ b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java @@ -18,4 +18,7 @@ public class ProjectApisProperties { /** 支付接口 */ private String costToPay; + /** 调度系统-发货单 */ + private String diaoduPlanOrder; + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java index 5cca733f..65a1c0a5 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java @@ -74,6 +74,13 @@ public class BmsSupplierAddressController { @SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.UPDATE) @PreAuthorize("hasRole('bms:supplierAddress:update')") public R updateById(@RequestBody @Valid BmsSupplierAddress param){ + LambdaQueryWrapper supplierAddrLqw = new LambdaQueryWrapper<>(); + supplierAddrLqw.eq(BmsSupplierAddress::getTmsSysId,param.getTmsSysId()); + supplierAddrLqw.ne(BmsSupplierAddress::getId,param.getId()); + long count = bmsSupplierAddressService.count(supplierAddrLqw); + if(count>0){ + return R.error("tms_sys_id is exist!!"); + } boolean result = bmsSupplierAddressService.updateById(param); return R.isTrue(result); } @@ -93,6 +100,12 @@ public class BmsSupplierAddressController { }else { param.setDefaultFlag(0); } + LambdaQueryWrapper supplierAddrLqw = new LambdaQueryWrapper<>(); + supplierAddrLqw.eq(BmsSupplierAddress::getTmsSysId,param.getTmsSysId()); + long count = bmsSupplierAddressService.count(supplierAddrLqw); + if(count>0){ + return R.error("tms_sys_id is exist!!"); + } bmsSupplierAddressService.save(param); return R.ok(param); } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java index 1c79ad03..94b7a127 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java @@ -8,12 +8,16 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.bms.entity.BmsSupplierAddress; +import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.OmsCheckParam; import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.bo.OmsUrgentParam; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.service.OmsOrderItemService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -41,6 +45,8 @@ public class OmsOrderController { private OmsOrderService omsOrderService; private OmsOrderItemService omsOrderItemService; + private BmsSupplierAddressService bmsSupplierAddressService; + private SysUserService sysUserService; /** * 翻页 @@ -48,11 +54,19 @@ public class OmsOrderController { * @return */ @GetMapping("/page") - @PreAuthorize("hasRole('oms:order:query')") public R> getPage(OmsOrder param){ PageUtil.startPage(); LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(param); + orderWrapper.orderByDesc(OmsOrder::getId); List list = omsOrderService.list(orderWrapper); + for (OmsOrder order : list) { + BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId()); + order.setAddressInfo(supplierAddress); + SysUser sysUser = sysUserService.getById(order.getCheckUserId()); + if(sysUser!=null){ + order.setCheckUserInfo(sysUser.toSysUserVo()); + } + } return R.byPageHelperList(list); } @@ -63,7 +77,6 @@ public class OmsOrderController { */ @GetMapping("/getById/{id}") @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.QUERY) - @PreAuthorize("hasRole('oms:order:query')") public R getById(@PathVariable("id") String id){ OmsOrder omsOrder = omsOrderService.getById(id); return R.ok(omsOrder); @@ -76,7 +89,6 @@ public class OmsOrderController { */ @PostMapping("/check") @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.UPDATE) - @PreAuthorize("hasRole('oms:order:update')") public R check(@RequestBody @Valid OmsCheckParam param){ OmsOrder dbOmsOrder = omsOrderService.getById(param.getOrderId()); if(dbOmsOrder.getStatus().equals(0)){ @@ -98,7 +110,6 @@ public class OmsOrderController { */ @PostMapping("/urgent") @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.UPDATE) - @PreAuthorize("hasRole('oms:order:update')") public R urgent(@RequestBody @Valid OmsUrgentParam param){ OmsOrder dbOmsOrder = omsOrderService.getById(param.getOrderId()); if(dbOmsOrder.getStatus().equals(0)){ @@ -118,7 +129,6 @@ public class OmsOrderController { */ @DeleteMapping("/deleteById/{id}") @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE) - @PreAuthorize("hasRole('oms:order:delete')") public R deleteById(@PathVariable("id") Long id){ OmsOrder dbOmsOrder = omsOrderService.getById(id); if(dbOmsOrder.getStatus().equals(0)&&dbOmsOrder.getCheckState().equals(0)){ diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 7ce7c760..e02f445b 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java @@ -165,5 +165,23 @@ public class OmsOrderApi { return R.error(); } + /** + * 创建报价单 + * @param id + * @return + */ + @PostMapping("/buildPriceOrder") + @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE) + public R buildPriceOrder(@PathVariable("id") String id){ + OmsOrder omsOrder = omsOrderService.getById(id); + String userId = AuthContextUtils.getSysUserId(); + if(omsOrder==null || !omsOrder.getUserId().equals(userId)){ + return R.error("订单不存在或被移除"); + } + + return R.error(); + } + + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index 27d1916d..df9d881a 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -36,7 +36,7 @@ public class OmsOrder implements Serializable { @TableField(condition = SqlCondition.LIKE) private String orderSn; - /** 订单类型:0->普通订单 */ + /** 订单类型:0->普通订单;1->赠品;2->试吃品 */ private Integer orderType; /** 供应商ID */ diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/ErpOfferOrderParam.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/ErpOfferOrderParam.java new file mode 100644 index 00000000..c9527cac --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/dto/ErpOfferOrderParam.java @@ -0,0 +1,142 @@ +package com.qs.serve.modules.oms.entity.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 报价订单参数 + * @Author YenHex + * @Date 2021/6/10 + * @Version: 1.0 + **/ +@Getter +@Setter +public class ErpOfferOrderParam { + + /** + * 单据号 + */ + @NotNull(message = "单据号不能为空") + private String code; + + /** + * 销路通订单ID + */ + @NotNull(message = "销路通订单ID不能为空") + private String empOrderId; + + /** + * 日期 + */ + private Date date; + + /** + * 销售类型 + */ + @NotNull(message = "销售类型不能为空") + private String saleTypeCode; + + /** + * 客户编码 + */ + @NotNull(message = "客户编码不能为空") + private String cusCode; + + /** + * 部门编号 + */ + @NotNull(message = "部门编号不能为空") + private String depCode; + + + /** + * 税率 + */ + private BigDecimal taxRate; + + /** + * 备注 + */ + private String remark; + + /** + * 备注 + */ + private String remark2; + + /** + * 客户帐余 + */ + private BigDecimal cusPrice; + + /** + * 未完成的发货单数量 + */ + private Integer unfinishedOrderCount; + + /** + * 存货商品列表 + */ + private List inventoryItemList; + + private String cusName; + + private String makerName; + + /** + * 存货商品 + */ + @Getter + @Setter + public static class InventoryItem{ + + /** + * 销路通明细ID(不用传) + */ + private String empItemId; + + /** + * 销路通数量(不用传) + */ + private Long empQty; + + /** + * 存货编码 + */ + @JsonProperty("InvCode") + private String invCode; + + /** + * 报价 m + * + */ + private BigDecimal offerPrice; + + /** + * 数量 + */ + private Long quantity; + + /** + * 含税单价 + */ + private BigDecimal hasRatePrice; + + /** + * 价税合计 + */ + private BigDecimal hasRateSumPrice; + + /** + * 备注 + */ + private String remark; + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java new file mode 100644 index 00000000..2586a7b0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsSpuToSkuKey.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.oms.entity.dto; + +import lombok.Data; + +/** + * @author YenHex + * @since 2023/10/7 + */ +@Data +public class OmsSpuToSkuKey { + + private Long spuId; + + private Long skuId; + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 8a76ebf7..3b641e91 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -7,6 +7,8 @@ import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo; import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; +import org.springframework.web.bind.annotation.PathVariable; + import java.util.List; /** * 订单 服务接口 @@ -52,5 +54,11 @@ public interface OmsOrderService extends IService { */ List getSpuAssess(OmsSpuAssesInfoBo param); + /** + * 对接调度系统,生成ERP的报价单 + * @param id + */ + void buildPriceOrder(String id); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index c38a0944..d02c9a60 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -19,7 +19,9 @@ import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; import com.qs.serve.modules.oms.entity.bo.OmsOrderBo.*; import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo; import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; +import com.qs.serve.modules.oms.entity.dto.ErpOfferOrderParam; import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; +import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey; import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; @@ -29,7 +31,9 @@ import com.qs.serve.modules.sale.entity.SalePlan; import com.qs.serve.modules.sale.entity.SalePlanGoods; import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper; import com.qs.serve.modules.sale.mapper.SalePlanMapper; +import com.qs.serve.modules.sys.entity.SysDept; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -59,6 +63,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im private GoodsSpuService goodsSpuService; private BmsSupplierAddressService bmsSupplierAddressService; private SysUserService sysUserService; + private SysDeptService sysDeptService; private OmsOrderItemService omsOrderItemService; private SalePlanMapper salePlanMapper; private SalePlanGoodsMapper salePlanGoodsMapper; @@ -121,6 +126,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im .map(OmsOrderPcBo.SpuParam::getSpuId).collect(Collectors.toList()); List spuList = goodsSpuService.listByIds(spuIds); + //通过当前函数获取当前账套对于的skuID + List spuToSkuKeys = this.getSpuToSkuInfo("",spuIds); + //构建临时购物车列表 List shoppingCartList = new ArrayList<>(); for (GoodsSpu goodsSpu : spuList) { @@ -132,11 +140,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im } OmsShoppingCart shoppingCart = new OmsShoppingCart(); shoppingCart.setSpuId(goodsSpu.getId()); - shoppingCart.setSkuId(0L); shoppingCart.setSpuCode(goodsSpu.getSpuCode()); - shoppingCart.setSkuCode(""); shoppingCart.setQuantity(qty); - shoppingCart.setSpecInfo(goodsSpu.getName()); + //设置订单的sku信息 + GoodsSku goodsSku = null; + for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) { + if(goodsSpu.getId().equals(toSkuKey.getSpuId())){ + goodsSku = goodsSkuService.getById(toSkuKey.getSkuId()); + break; + } + } + if(goodsSku==null){ + shoppingCart.setSkuId(0L); + shoppingCart.setSkuCode(""); + shoppingCart.setSpecInfo(goodsSpu.getName()); + shoppingCart.setAddPrice(BigDecimal.ZERO); + }else { + shoppingCart.setSkuId(goodsSku.getId()); + shoppingCart.setSkuCode(goodsSku.getSkuCode()); + shoppingCart.setSpecInfo(goodsSku.getSpecInfos()); + shoppingCart.setAddPrice(goodsSku.getSalesPrice()); + } shoppingCartList.add(shoppingCart); } @@ -286,5 +310,66 @@ public class OmsOrderServiceImpl extends ServiceImpl im } return spuAssesInfoList; } + + @Override + public void buildPriceOrder(String id) { + OmsOrder omsOrder = super.getById(id); + String userId = AuthContextUtils.getSysUserId(); + SysUser sysUser = sysUserService.getById(userId); + SysDept dept = sysDeptService.getById(sysUser.getDeptId()); + if(omsOrder==null || !omsOrder.getUserId().equals(userId)){ + Assert.throwEx("订单不存在或被移除"); + } + LambdaQueryWrapper iteLqw = new LambdaQueryWrapper<>(); + iteLqw.eq(OmsOrderItem::getOrderId,id); + List list = omsOrderItemService.list(iteLqw); + + List inventoryItemList = new ArrayList<>(); + for (OmsOrderItem orderItem : list) { + ErpOfferOrderParam.InventoryItem inventoryItem = new ErpOfferOrderParam.InventoryItem(); + inventoryItem.setEmpItemId(orderItem.getId()+""); + inventoryItem.setEmpQty(orderItem.getQuantity().longValue()); + inventoryItem.setInvCode(orderItem.getSpuCode()); + inventoryItem.setQuantity(orderItem.getQuantity().longValue()); + //设置客户特殊价 + + inventoryItem.setOfferPrice(orderItem.getSalesPrice()); + inventoryItem.setHasRatePrice(orderItem.getSalesPrice()); + inventoryItem.setHasRateSumPrice(orderItem.getSalesPrice().multiply(new BigDecimal(orderItem.getQuantity()))); + inventoryItem.setRemark("CRM创建的报价单"); + inventoryItemList.add(inventoryItem); + } + + ErpOfferOrderParam offerOrder = new ErpOfferOrderParam(); + offerOrder.setCode(omsOrder.getOrderSn()); + offerOrder.setEmpOrderId(omsOrder.getId()+""); + offerOrder.setDate(new Date()); + //offerOrder.setSaleTypeCode(); + offerOrder.setCusCode(omsOrder.getSupplierCode()); + offerOrder.setDepCode(dept.getCode()); + //TODO 普通13,赠品&试吃品0 + //offerOrder.setTaxRate(); + offerOrder.setRemark(omsOrder.getRemark()); + //offerOrder.setRemark2(); + //offerOrder.setCusPrice(); + //offerOrder.setUnfinishedOrderCount(); + offerOrder.setInventoryItemList(inventoryItemList); + offerOrder.setCusName(omsOrder.getSupplierName()); + offerOrder.setMakerName(sysUser.getName()); + + + } + + + /** + * TODO: 根据账套,获取spuId对应的skuId + * @param book + * @param spuIds + * @return + */ + public List getSpuToSkuInfo(String book, List spuIds){ + return null; + } + } diff --git a/src/main/java/com/qs/serve/modules/sale/controller/my/SalePlanMyController.java b/src/main/java/com/qs/serve/modules/sale/controller/my/SalePlanMyController.java new file mode 100644 index 00000000..05a7c878 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sale/controller/my/SalePlanMyController.java @@ -0,0 +1,54 @@ +package com.qs.serve.modules.sale.controller.my; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.sale.entity.SalePlan; +import com.qs.serve.modules.sale.entity.SalePlanGoods; +import com.qs.serve.modules.sale.entity.bo.SalePlanBo; +import com.qs.serve.modules.sale.service.SalePlanGoodsService; +import com.qs.serve.modules.sale.service.SalePlanService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * 销售 销售计划 + * @author YenHex + * @since 2023-09-20 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("my/sale/plan") +public class SalePlanMyController { + + private final SalePlanService salePlanService; + private final SalePlanGoodsService salePlanGoodsService; + + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(SalePlan param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + lqw.eq(SalePlan::getUserId, AuthContextUtils.getSysUserId()); + PageUtil.startPage(); + List list = salePlanService.list(lqw); + return R.byPageHelperList(list); + } + +} +