Jelajahi Sumber

Merge remote-tracking branch 'origin/develop' into develop

‘linchangsheng’ 1 tahun lalu
induk
melakukan
beb3de3460
30 mengubah file dengan 1537 tambahan dan 73 penghapusan
  1. 21 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/base/WebsitGoodsBean.java
  2. 2 2
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/base/WebsitGoodsMVO.java
  3. 6 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitMPurchaseBean.java
  4. 5 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitMPurchaseItemBean.java
  5. 19 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseAdjustmentBean.java
  6. 64 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseAdjustmentVO.java
  7. 83 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseOrderVO.java
  8. 3 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/stock/WebsitStockDTO.java
  9. 77 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitPurchaseCheckVO.java
  10. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitVenderGoodsRelaVO.java
  11. 3 3
      mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitVenderVO.java
  12. 25 0
      mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/MaterialMapper.java
  13. 159 0
      mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseAdjustmentController.java
  14. 9 15
      mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseApplyController.java
  15. 77 0
      mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseController.java
  16. 111 0
      mall-server-api/src/main/java/com/gree/mall/manager/controller/material/vender/VenderCheckPurchaseController.java
  17. 28 0
      mall-server-api/src/main/java/com/gree/mall/manager/enums/material/HeadPartsEnum.java
  18. 2 2
      mall-server-api/src/main/java/com/gree/mall/manager/enums/material/MaterialFlagEnum.java
  19. 28 0
      mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsWebsitAttrEnum.java
  20. 10 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java
  21. 22 18
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/base/WebsitGoodsLogic.java
  22. 281 17
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitMPurchaseLogic.java
  23. 335 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPurchaseAdjustmentLogic.java
  24. 8 3
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPurchaseLogic.java
  25. 71 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WebitPurchaseStockLogic.java
  26. 16 8
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WebsitGoodsStockLogic.java
  27. 2 2
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/vender/VenderGoodsLogic.java
  28. 1 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/material/vender/VenderLogic.java
  29. 68 0
      mall-server-api/src/main/resources/mapper/MaterialMapper.xml
  30. TEMPAT SAMPAH
      mall-server-api/src/main/resources/template/辅材模板.xlsx

+ 21 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/base/WebsitGoodsBean.java

@@ -113,4 +113,25 @@ public class WebsitGoodsBean {
 
     @ApiModelProperty(value = "产品大类")
     List<String> categoryList;
+
+    @ApiModelProperty(value = "进价范围最小")
+    private BigDecimal costRangeMini;
+
+    @ApiModelProperty(value = "进价范围最大")
+    private BigDecimal costRangeMax;
+
+    @ApiModelProperty(value = "优惠价1")
+    private BigDecimal firstPrice;
+
+    @ApiModelProperty(value = "优惠价2")
+    private BigDecimal secondPrice;
+
+    @ApiModelProperty(value = "是否首选配件 false=非首选配件 true=首选配件")
+    private Boolean isHeadParts;
+
+    @ApiModelProperty(value = "返厂方式")
+    private String refundFactoryMode;
+
+    @ApiModelProperty(value = "物料组名称")
+    private String materialGroupName;
 }

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/base/WebsitGoodsMVO.java

@@ -27,8 +27,8 @@ public class WebsitGoodsMVO {
     @ApiModelProperty(value = "商品代码")
     private String goodsCode;
 
-    @ApiModelProperty(value = "商品条码")
-    private String goodsBarcodeId;
+//    @ApiModelProperty(value = "商品条码")
+//    private String goodsBarcodeId;
 
     @ZfireField(hide = true, tbName = "b", colName = "parent_category_id")
     @ApiModelProperty(value = "商品父类编号")

+ 6 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitMPurchaseBean.java

@@ -57,6 +57,12 @@ public class WebsitMPurchaseBean {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "核实备注")
+    private String checkRemark;
+
+    @ApiModelProperty(value = "审核备注")
+    private String confirmRemark;
+
     @ApiModelProperty(value = "创建人")
     private String createBy;
 

+ 5 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitMPurchaseItemBean.java

@@ -82,4 +82,9 @@ public class WebsitMPurchaseItemBean {
     @ApiModelProperty(value = "备注")
     private String note;
 
+    @ApiModelProperty(value = "入库数量")
+    private BigDecimal inStockQty;
+
+    @ApiModelProperty(value = "入库进价")
+    private BigDecimal inStockCost;
 }

+ 19 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseAdjustmentBean.java

@@ -0,0 +1,19 @@
+package com.gree.mall.manager.bean.material.manage;
+
+import com.gree.mall.manager.plus.entity.WebsitPurchaseAdjustment;
+import com.gree.mall.manager.plus.entity.WebsitPurchaseAdjustmentItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel
+public class WebsitPurchaseAdjustmentBean extends WebsitPurchaseAdjustment {
+
+    @ApiModelProperty(value = "明细")
+    private List<WebsitPurchaseAdjustmentItem> items;
+}

+ 64 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseAdjustmentVO.java

@@ -0,0 +1,64 @@
+package com.gree.mall.manager.bean.material.manage;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.material.MaterialFlagEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel
+@ZfireField(tbName = "a")
+public class WebsitPurchaseAdjustmentVO {
+
+    @ApiModelProperty(value = "单号")
+    private String purchaseAdjustmentId;
+
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "网点编号")
+    private String websitId;
+
+    @ApiModelProperty(value = "网点名称")
+    private String websitName;
+
+    @ApiModelProperty(value = "采购单号")
+    private String ref;
+
+    @ApiModelProperty(value = "仓储名称")
+    private String storageName;
+
+    @ApiModelProperty(value = "单据状态")
+    private MaterialFlagEnum flag;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "提交人")
+    private String submitBy;
+
+    @ApiModelProperty(value = "提交时间")
+    private Date submitTime;
+
+    @ApiModelProperty(value = "审核人")
+    private String confirmBy;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date confirmTime;
+}

+ 83 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/manage/WebsitPurchaseOrderVO.java

@@ -0,0 +1,83 @@
+package com.gree.mall.manager.bean.material.manage;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.IsYesNoEnum;
+import com.gree.mall.manager.enums.material.MaterialFlagEnum;
+import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel
+@Data
+@ZfireField(tbName = "a")
+public class WebsitPurchaseOrderVO {
+    @ApiModelProperty(value = "单号")
+    private String purchaseId;
+
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "网点编号")
+    private String websitId;
+
+    @ApiModelProperty(value = "网点名称")
+    private String websitName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商品类型")
+    private WebsitGoodsTypeEnum goodsType;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "供应商编号")
+    private String venderId;
+
+    @ApiModelProperty(value = "供应商名称")
+    private String venderName;
+
+    @ApiModelProperty(value = "采购总金额")
+    private String totalAmount;
+
+    @ApiModelProperty(value = "单据状态")
+    private MaterialFlagEnum flag;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "是否核实")
+    private IsYesNoEnum isRecheck;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "核实备注")
+    private String checkRemark;
+
+    @ApiModelProperty(value = "审核备注")
+    private String confirmRemark;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "核实人")
+    private String checkBy;
+
+    @ApiModelProperty(value = "核实时间")
+    private Date checkTime;
+
+    @ApiModelProperty(value = "审核人")
+    private String confirmBy;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date confirmTime;
+}

+ 3 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/stock/WebsitStockDTO.java

@@ -93,6 +93,9 @@ public class WebsitStockDTO {
     @NotNull(message = "仓位不能空")
     private String storageId;
 
+    @ApiModelProperty("采购订单号")
+    private String purchaseId;
+
     public WebsitStock createPartsStock() {
         WebsitStock websitStock = new WebsitStock();
         BeanUtils.copyProperties(this, websitStock);

+ 77 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitPurchaseCheckVO.java

@@ -0,0 +1,77 @@
+package com.gree.mall.manager.bean.material.vender;
+
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.IsYesNoEnum;
+import com.gree.mall.manager.enums.material.MaterialFlagEnum;
+import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel
+@Data
+@ZfireField(tbName = "a")
+public class WebsitPurchaseCheckVO {
+    @ApiModelProperty(value = "单号")
+    private String purchaseId;
+
+    @ApiModelProperty(value = "商户名称")
+    private String companyWechatName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "网点编号")
+    private String websitId;
+
+    @ApiModelProperty(value = "网点名称")
+    private String websitName;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "商品类型")
+    private WebsitGoodsTypeEnum goodsType;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "供应商编号")
+    private String venderId;
+
+    @ApiModelProperty(value = "供应商名称")
+    private String venderName;
+
+    @ApiModelProperty(value = "采购总金额")
+    private String totalAmount;
+
+    @ZfireField(hide = true)
+    @ApiModelProperty(value = "单据状态")
+    private MaterialFlagEnum flag;
+
+    @ApiModelProperty(value = "是否核实")
+    private IsYesNoEnum isRecheck;
+
+    @ApiModelProperty(value = "备注")
+    private String checkRemark;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "核实人")
+    private String checkBy;
+
+    @ApiModelProperty(value = "核实时间")
+    private Date checkTime;
+
+    @ApiModelProperty(value = "审核人")
+    private String confirmBy;
+
+    @ApiModelProperty(value = "审核时间")
+    private Date confirmTime;
+}

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitVenderGoodsRelaVO.java

@@ -58,7 +58,7 @@ public class WebsitVenderGoodsRelaVO {
     @ApiModelProperty(value = "商品小类编号")
     private String goodsCategoryId;
 
-    @ZfireField(tbName = "b", colName = "category_name")
+    @ZfireField(tbName = "c", colName = "category_name")
     @ApiModelProperty(value = "分类名称")
     private String categoryName;
 

+ 3 - 3
mall-server-api/src/main/java/com/gree/mall/manager/bean/material/vender/WebsitVenderVO.java

@@ -14,7 +14,7 @@ import java.util.Date;
 public class WebsitVenderVO {
 
     @ZfireField(hide = true)
-    @ApiModelProperty(value = "户编号")
+    @ApiModelProperty(value = "户编号")
     private String companyWechatId;
 
     @ApiModelProperty(value = "供应商编号")
@@ -23,8 +23,8 @@ public class WebsitVenderVO {
     @ApiModelProperty(value = "供应商名称")
     private String venderName;
 
-    @ApiModelProperty(value = "商品类型")
-    private String venderType;
+//    @ApiModelProperty(value = "商品类型")
+//    private String venderType;
 
     @ApiModelProperty(value = "联系人")
     private String linkName;

+ 25 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/MaterialMapper.java

@@ -8,6 +8,7 @@ import com.gree.mall.manager.bean.material.base.*;
 import com.gree.mall.manager.bean.material.manage.*;
 import com.gree.mall.manager.bean.material.stock.WebsitSalesCategoryVO;
 import com.gree.mall.manager.bean.material.stock.WebsitSalesGoodsVO;
+import com.gree.mall.manager.bean.material.vender.WebsitPurchaseCheckVO;
 import com.gree.mall.manager.bean.material.vender.WebsitVenderGoodsRelaVO;
 import com.gree.mall.manager.bean.material.vender.WebsitVenderGoodsVO;
 import com.gree.mall.manager.bean.material.vender.WebsitVenderVO;
@@ -225,4 +226,28 @@ public interface MaterialMapper {
      * @return
      */
     IPage<WebsitPurchaseApplyVO> websitPurchaseApplyPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 核实采购列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<WebsitPurchaseCheckVO> websitPurchaseCheckPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 采购订单列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<WebsitPurchaseOrderVO> websitPurchaseOrderPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
+
+    /**
+     * 采购调整单列表
+     * @param page
+     * @param zfireParamBean
+     * @return
+     */
+    IPage<WebsitPurchaseAdjustmentVO> websitPurchaseAdjustmentPage(Page page, @Param("ex") ZfireParamBean zfireParamBean);
 }

+ 159 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseAdjustmentController.java

@@ -0,0 +1,159 @@
+package com.gree.mall.manager.controller.material.manage;
+
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseAdjustmentBean;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseAdjustmentVO;
+import com.gree.mall.manager.constant.Constant;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.material.manage.WebsitPurchaseAdjustmentLogic;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.integration.redis.util.RedisLockRegistry;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+
+@Slf4j
+@RestController
+@Api(value = "网点采购调整API", tags ={"网点采购调整API"} )
+@Validated
+@RequestMapping(value = "/websit/purchase/adjustment", produces = "application/json; charset=utf-8")
+public class WebsitPurchaseAdjustmentController {
+
+    @Resource
+    WebsitPurchaseAdjustmentLogic websitPurchaseAdjustmentLogic;
+    @Resource
+    RedisLockRegistry redisLockRegistry;
+
+    @ZfireList
+    @PostMapping("/list")
+    @ApiOperation(value = "网点采购调整-列表")
+    public ResponseHelper<IPage<WebsitPurchaseAdjustmentVO>> page(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<WebsitPurchaseAdjustmentVO> page = websitPurchaseAdjustmentLogic.page(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<WebsitPurchaseAdjustmentVO>() {});
+    }
+
+    @PostMapping("/list/export")
+    @ApiOperation("网点采购调整-导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<WebsitPurchaseAdjustmentVO> baseVOIPage = websitPurchaseAdjustmentLogic.page(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(baseVOIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @PostMapping("/detail")
+    @ApiOperation(value = "网点采购调整-详情")
+    public ResponseHelper<WebsitPurchaseAdjustmentBean> detail(
+            @ApiParam(value = "purchaseAdjustmentId", required = true) @RequestParam String purchaseAdjustmentId
+    ) throws RemoteServiceException {
+        WebsitPurchaseAdjustmentBean bean = websitPurchaseAdjustmentLogic.detail(purchaseAdjustmentId);
+        return ResponseHelper.success(bean);
+    }
+
+    @PostMapping("/add")
+    @ApiOperation(value = "网点采购调整-添加")
+    public ResponseHelper<WebsitPurchaseAdjustmentBean> add(
+            @RequestBody WebsitPurchaseAdjustmentBean bean
+    ) throws Exception {
+        WebsitPurchaseAdjustmentBean result;
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + bean.getRef());
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            result = websitPurchaseAdjustmentLogic.add(bean);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success(result);
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "修改采购调整单")
+    public ResponseHelper update(@RequestBody WebsitPurchaseAdjustmentBean purchaseAdjustmentBean) throws RemoteServiceException {
+        websitPurchaseAdjustmentLogic.update(purchaseAdjustmentBean);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/submit")
+    @ApiOperation(value = "采购调整单提交")
+    public ResponseHelper submit(
+            @ApiParam(value = "采购调整单id",required = true) @RequestParam String purchaseAdjustmentId
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseAdjustmentId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitPurchaseAdjustmentLogic.submit(purchaseAdjustmentId);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/revoke")
+    @ApiOperation(value = "采购调整单撤消")
+    public ResponseHelper revoke(
+            @ApiParam(value = "采购调整单id",required = true) @RequestParam String purchaseAdjustmentId
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseAdjustmentId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitPurchaseAdjustmentLogic.revoke(purchaseAdjustmentId);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/del")
+    @ApiOperation(value = "采购调整单删除")
+    public ResponseHelper del(@ApiParam(value = "采购调整单id",required = true) @RequestParam String purchaseAdjustmentId)
+            throws RemoteServiceException {
+        websitPurchaseAdjustmentLogic.del(purchaseAdjustmentId);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/confirm")
+    @ApiOperation(value = "采购调整单审核")
+    public ResponseHelper confirm(
+            @ApiParam(value = "采购调整单id",required = true) @RequestParam String purchaseAdjustmentId
+    ) throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseAdjustmentId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitPurchaseAdjustmentLogic.confirm(purchaseAdjustmentId);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+}

+ 9 - 15
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseApplyController.java

@@ -100,16 +100,13 @@ public class WebsitPurchaseApplyController {
     @PostMapping("/revoke")
     @ApiOperation(value = "网点采购申请-撤消")
     public ResponseHelper revoke(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
-            throws RemoteServiceException {
+            throws Exception {
         Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
         try {
-            if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
-                log.error("获取采购申请单锁超时!");
-            }
-            websitMPurchaseLogic.revoke(purchaseId);
-        } catch (InterruptedException e) {
-            log.error(purchaseId + " 撤消失败!", e);
-            throw new RemoteServiceException(purchaseId + " 撤消失败!" + e.getMessage());
+            websitMPurchaseLogic.revoke(purchaseId, 1);
         } finally {
             obtain.unlock();
         }
@@ -119,16 +116,13 @@ public class WebsitPurchaseApplyController {
     @PostMapping("/submit")
     @ApiOperation(value = "网点采购申请-提交")
     public ResponseHelper submit(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
-            throws RemoteServiceException {
+            throws Exception {
         Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
         try {
-            if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
-                log.error("获取采购申请单锁超时!");
-            }
             websitMPurchaseLogic.submit(purchaseId);
-        } catch (InterruptedException e) {
-            log.error(purchaseId + " 提交失败!", e);
-            throw new RemoteServiceException(purchaseId + " 提交失败!" + e.getMessage());
         } finally {
             obtain.unlock();
         }

+ 77 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/manage/WebsitPurchaseController.java

@@ -3,12 +3,15 @@ package com.gree.mall.manager.controller.material.manage;
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.material.manage.WebsitMPurchaseBean;
 import com.gree.mall.manager.bean.material.manage.WebsitPurchaseBean;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseOrderVO;
 import com.gree.mall.manager.bean.material.manage.WebsitPurchaseVO;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.material.MaterialFlagEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.material.manage.WebsitMPurchaseLogic;
 import com.gree.mall.manager.logic.material.manage.WebsitPurchaseLogic;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -41,6 +44,8 @@ public class WebsitPurchaseController {
     WebsitPurchaseLogic websitPurchaseLogic;
     @Resource
     RedisLockRegistry redisLockRegistry;
+    @Resource
+    WebsitMPurchaseLogic websitMPurchaseLogic;
 
     @ZfireList
     @PostMapping("/list")
@@ -133,4 +138,76 @@ public class WebsitPurchaseController {
     ) throws Exception {
         return ResponseHelper.success(websitPurchaseLogic.importData(file, goodsType));
     }
+
+    @ZfireList
+    @PostMapping("/order/list")
+    @ApiOperation(value = "网点采购订单-列表")
+    public ResponseHelper<IPage<WebsitPurchaseOrderVO>> orderPage(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<WebsitPurchaseOrderVO> page = websitPurchaseLogic.orderPage(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<WebsitPurchaseOrderVO>() {});
+    }
+
+    @PostMapping("/order/list/export")
+    @ApiOperation("网点采购订单-导出")
+    public void orderListExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<WebsitPurchaseOrderVO> baseVOIPage = websitPurchaseLogic.orderPage(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(baseVOIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @PostMapping("/order/detail")
+    @ApiOperation(value = "网点采购订单-详情")
+    public ResponseHelper<WebsitMPurchaseBean> orderDetail(
+            @ApiParam(value = "purchaseId", required = true) @RequestParam String purchaseId
+    ) throws RemoteServiceException {
+        final WebsitMPurchaseBean bean = websitMPurchaseLogic.detail(purchaseId);
+        return ResponseHelper.success(bean);
+    }
+
+    @PostMapping("/order/update")
+    @ApiOperation(value = "网点采购订单-修改")
+    public ResponseHelper update(@RequestBody WebsitMPurchaseBean bean) throws RemoteServiceException {
+        websitMPurchaseLogic.orderUpdate(bean);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/order/revoke")
+    @ApiOperation(value = "网点采购订单-作废")
+    public ResponseHelper orderRevoke(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
+            throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitMPurchaseLogic.orderRevoke(purchaseId);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/order/confirm")
+    @ApiOperation(value = "网点采购订单-审核")
+    public ResponseHelper orderConfirm(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
+            throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitMPurchaseLogic.orderConfirm(purchaseId);
+        } finally {
+            obtain.unlock();
+        }
+        return ResponseHelper.success();
+    }
 }

+ 111 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/vender/VenderCheckPurchaseController.java

@@ -0,0 +1,111 @@
+package com.gree.mall.manager.controller.material.vender;
+
+import cn.hutool.core.lang.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gree.mall.manager.annotation.ZfireList;
+import com.gree.mall.manager.bean.material.manage.WebsitMPurchaseBean;
+import com.gree.mall.manager.bean.material.vender.WebsitPurchaseCheckVO;
+import com.gree.mall.manager.constant.Constant;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.material.manage.WebsitMPurchaseLogic;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.integration.redis.util.RedisLockRegistry;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+
+@Slf4j
+@RestController
+@Api(value = "供应商核实采购API", tags ={"供应商核实采购API"} )
+@RequestMapping(value = "/vender/check/purchase", produces = "application/json; charset=utf-8")
+public class VenderCheckPurchaseController {
+
+    @Resource
+    WebsitMPurchaseLogic websitMPurchaseLogic;
+    @Resource
+    RedisLockRegistry redisLockRegistry;
+
+    @ZfireList
+    @PostMapping("/list")
+    @ApiOperation(value = "核实采购-列表")
+    public ResponseHelper<IPage<WebsitPurchaseCheckVO>> page(
+            @RequestBody ZfireParamBean zfireParamBean
+    ) {
+        IPage<WebsitPurchaseCheckVO> page = websitMPurchaseLogic.checkPage(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<WebsitPurchaseCheckVO>() {});
+    }
+
+    @PostMapping("/list/export")
+    @ApiOperation("核实采购-导出")
+    public void listExport(
+            @RequestBody ZfireParamBean zfireParamBean,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws Exception {
+        //2.查询要导出的内容
+        IPage<WebsitPurchaseCheckVO> baseVOIPage = websitMPurchaseLogic.checkPage(zfireParamBean);
+        //3.导出
+        FieldUtils.exportData(baseVOIPage.getRecords(), zfireParamBean.getExportFields(), request, response);
+    }
+
+    @PostMapping("/detail")
+    @ApiOperation(value = "核实采购-详情")
+    public ResponseHelper<WebsitMPurchaseBean> detail(
+            @ApiParam(value = "purchaseId", required = true) @RequestParam String purchaseId
+    ) throws RemoteServiceException {
+        WebsitMPurchaseBean bean = websitMPurchaseLogic.detail(purchaseId);
+        return ResponseHelper.success(bean);
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "核实采购-修改")
+    public ResponseHelper update(@RequestBody WebsitMPurchaseBean bean) throws RemoteServiceException {
+        websitMPurchaseLogic.checkUpdate(bean);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/revoke")
+    @ApiOperation(value = "核实采购-撤消")
+    public ResponseHelper revoke(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
+            throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitMPurchaseLogic.revoke(purchaseId, 2);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/verify")
+    @ApiOperation(value = "核实采购-核实")
+    public ResponseHelper verify(@ApiParam(value = "采购申请单id",required = true) @RequestParam String purchaseId)
+            throws Exception {
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_MATERIAL_PURCHASE + purchaseId);
+        if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
+            throw new RemoteServiceException("系统繁忙,请稍后再尝试");
+        }
+        try {
+            websitMPurchaseLogic.verify(purchaseId);
+        } finally {
+            obtain.unlock();
+        }
+
+        return ResponseHelper.success();
+    }
+
+}

+ 28 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/material/HeadPartsEnum.java

@@ -0,0 +1,28 @@
+package com.gree.mall.manager.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum HeadPartsEnum implements BaseEnum,IEnum<Boolean> {
+    Y("true","首选配件"),
+    N("false","非首选配件"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+
+
+    @Override
+    public Boolean getValue() {
+        return Boolean.parseBoolean(key);
+    }
+}

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/enums/material/MaterialFlagEnum.java

@@ -13,9 +13,9 @@ import lombok.RequiredArgsConstructor;
 public enum MaterialFlagEnum implements BaseEnum {
 
     SAVE("SAVE","保存"),
-    OK("OK","通过"),
-    FAIL("FAIL","失败"),
     SUBMIT("SUBMIT","提交"),
+    OK("OK","通过"),
+    CANCEL("CANCEL","作废"),
     ;
 
     @EnumValue

+ 28 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/material/PartsWebsitAttrEnum.java

@@ -0,0 +1,28 @@
+package com.gree.mall.manager.enums.material;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+public enum PartsWebsitAttrEnum implements BaseEnum,IEnum<Boolean> {
+    INNER("true","内区"),
+    OUT("false","外区"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+
+
+    @Override
+    public Boolean getValue() {
+        return Boolean.parseBoolean(key);
+    }
+}

+ 10 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java

@@ -204,6 +204,11 @@ public class AdminUserLogic {
         if (StringUtils.isBlank(adminUser.getUserName()) || StringUtils.isBlank(adminUser.getPassword())) {
             throw new RemoteServiceException("参数错误");
         }
+        if (Objects.nonNull(adminUser.getIsVender())
+                && adminUser.getIsVender()
+                && StringUtils.isBlank(adminUser.getVenderId())) {
+            throw new RemoteServiceException("请选择供应商");
+        }
         Integer count = adminUserService.lambdaQuery().eq(AdminUser::getUserName, adminUser.getUserName()).count();
         if (count > 0) {
             throw new RemoteServiceException("帐号已被注册");
@@ -276,7 +281,6 @@ public class AdminUserLogic {
 
         //添加部门
         this.addAdminUserDept(adminUser);
-
     }
 
     private void addAdminUserDept(AdminUserAddReqBean adminUser) {
@@ -317,6 +321,11 @@ public class AdminUserLogic {
         if (StringUtils.isBlank(newUser.getRoleId()) || (addUserRole = adminRoleService.getById(newUser.getRoleId())) == null) {
             throw new RemoteServiceException("请为用户选择角色");
         }
+        if (Objects.nonNull(newUser.getIsVender())
+                && newUser.getIsVender()
+                && StringUtils.isBlank(newUser.getVenderId())) {
+            throw new RemoteServiceException("请选择供应商");
+        }
         //  添加用户的角色级别 <= 被添加的用户的角色级别
 //        if (loginRole.getType() <= addUserRole.getType()) {
 //            throw new RemoteServiceException("无法为用户赋予与自身级别相当的角色");

+ 22 - 18
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/base/WebsitGoodsLogic.java

@@ -216,6 +216,12 @@ public class WebsitGoodsLogic {
     private void handlePartsInfo(HttpServletRequest request, WebsitGoods goods, WebsitGoodsBean bean) {
         if (goods.getGoodsType().equals(WebsitGoodsTypeEnum.P.getKey())) {
             if (goods.getNormType().equals(NormTypeEnum.M.getKey())) {
+                if (Objects.isNull(goods.getFirstPrice())) {
+                    throw new RemoteServiceException("优惠价1不能为空");
+                }
+                if (Objects.isNull(goods.getSecondPrice())) {
+                    throw new RemoteServiceException("优惠价2不能为空");
+                }
                 if (CollectionUtil.isNotEmpty(bean.getBrandList())) {
                     List<Brand> brandList = brandService.lambdaQuery()
                             .eq(Brand::getCompanyWechatId, bean.getCompanyWechatId())
@@ -411,19 +417,7 @@ public class WebsitGoodsLogic {
 
         for (int i = 0; i < objects.size(); i++) {
             List<Object> row = (List<Object>) objects.get(i);
-            CommonUtils.initList2(row, 12);
-            if (row.size() < 8) {
-                row.add(null);
-                row.add(null);
-                row.add(null);
-            }
-            if (row.size() < 9) {
-                row.add(null);
-                row.add(null);
-            }
-            if (row.size() < 10) {
-                row.add(null);
-            }
+            CommonUtils.initList2(row, 14);
             if (Objects.isNull(row.get(0))) {
                 throw new RemoteServiceException("第" + (i+1) + "行, 大类不能为空");
             }
@@ -448,6 +442,12 @@ public class WebsitGoodsLogic {
             if (Objects.isNull(row.get(7))) {
                 throw new RemoteServiceException("第" + (i+1) + "行, 销售价格不能为空");
             }
+            if (Objects.isNull(row.get(8))) {
+                throw new RemoteServiceException("第" + (i+1) + "行, 进价最小值不能为空");
+            }
+            if (Objects.isNull(row.get(9))) {
+                throw new RemoteServiceException("第" + (i+1) + "行, 进价最大值不能为空");
+            }
 
             String parentCategoryStr = (String) row.get(0);
             String categoryStr = (String) row.get(1);
@@ -456,11 +456,13 @@ public class WebsitGoodsLogic {
             String saleUnitStr = (String) row.get(4);
             String costStr = (String) row.get(5);
             String salesStr = (String) row.get(6);
-            String goodsCodeStr = (String) row.get(7);
-            String specificationStr = (String) row.get(8);
-            String remark = (String) row.get(9);
-            String manageWorkerStock = (String) row.get(10);
-            String salesConvertQty = (String) row.get(11);
+            String costMiniStr = (String) row.get(7);
+            String costMaxStr = (String) row.get(8);
+            String goodsCodeStr = (String) row.get(9);
+            String specificationStr = (String) row.get(10);
+            String remark = (String) row.get(11);
+            String manageWorkerStock = (String) row.get(12);
+            String salesConvertQty = (String) row.get(13);
 
             if (!treeMap.containsKey(parentCategoryStr)) {
                 throw new RemoteServiceException("第" + (i+1) + "行, 大类信息不存在");
@@ -508,6 +510,8 @@ public class WebsitGoodsLogic {
             goods.setRemark(remark);
             goods.setCost(new BigDecimal(costStr));
             goods.setMarketPrice(new BigDecimal(salesStr));
+            goods.setCostRangeMini(new BigDecimal(costMiniStr));
+            goods.setCostRangeMax(new BigDecimal(costMaxStr));
 
             goods.setGoodsStockUnit(StrUtil.trim(unitStr));
             goods.setGoodsSalesUnit(StrUtil.trim(saleUnitStr));

+ 281 - 17
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitMPurchaseLogic.java

@@ -9,21 +9,20 @@ import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.material.manage.WebsitMPurchaseBean;
 import com.gree.mall.manager.bean.material.manage.WebsitMPurchaseItemBean;
 import com.gree.mall.manager.bean.material.manage.WebsitPurchaseApplyVO;
+import com.gree.mall.manager.bean.material.vender.WebsitPurchaseCheckVO;
 import com.gree.mall.manager.bean.material.vender.WebsitVenderGoodsRelaVO;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
+import com.gree.mall.manager.enums.IsEnum;
 import com.gree.mall.manager.enums.IsYesNoEnum;
 import com.gree.mall.manager.enums.material.MaterialFlagEnum;
 import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.logic.material.stock.WebitPurchaseStockLogic;
 import com.gree.mall.manager.logic.material.vender.VenderGoodsLogic;
-import com.gree.mall.manager.plus.entity.WebsitPurchase;
-import com.gree.mall.manager.plus.entity.WebsitPurchaseItem;
-import com.gree.mall.manager.plus.entity.WebsitVender;
-import com.gree.mall.manager.plus.service.WebsitPurchaseItemService;
-import com.gree.mall.manager.plus.service.WebsitPurchaseService;
-import com.gree.mall.manager.plus.service.WebsitVenderService;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.zfire.bean.QueryParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -50,6 +49,10 @@ public class WebsitMPurchaseLogic {
     private final WebsitPurchaseItemService websitPurchaseItemService;
     private final VenderGoodsLogic venderGoodsLogic;
     private final WebsitVenderService websitVenderService;
+    private final StorageService storageService;
+    private final WebitPurchaseStockLogic webitPurchaseStockLogic;
+    private final WebsitGoodsService websitGoodsService;
+    private final WebsitGoodsPriceService websitGoodsPriceService;
 
     public IPage<WebsitPurchaseApplyVO> page(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -92,6 +95,7 @@ public class WebsitMPurchaseLogic {
         bean.setCompanyWechatName(adminUser.getAdminCompanyWechat().getCompanyName());
 
         bean.setFlag(MaterialFlagEnum.SAVE.getKey());
+        bean.setTotalAmount(BigDecimal.ZERO);
 
         // 检查参数值
         this.validApplyParams(bean);
@@ -218,17 +222,33 @@ public class WebsitMPurchaseLogic {
                         && itemBean.getApplyCost().compareTo(relaGoods.getCostRangeMax()) > 0) {
                     throw new RemoteServiceException(preStr + "不能高于辅材资料最大进价范围值");
                 }
+                // 申请进价*申请数量=申请进价金额
+                itemBean.setApplyCostValue(itemBean.getApplyCost().multiply(itemBean.getApplyQty()).setScale(2, BigDecimal.ROUND_DOWN));
+                itemBean.setCheckQty(itemBean.getApplyCost());
+                itemBean.setGoodsCode(relaGoods.getGoodsCode());
+                itemBean.setGoodsSpecification(relaGoods.getGoodsSpecification());
+                itemBean.setGoodsStockUnit(relaGoods.getGoodsStockUnit());
+                itemBean.setParentCategoryId(relaGoods.getParentCategoryId());
+                itemBean.setParentCategoryName(relaGoods.getParentCategoryName());
+                itemBean.setGoodsCategoryId(relaGoods.getGoodsCategoryId());
+                itemBean.setGoodsCategoryName(relaGoods.getCategoryName());
+                bean.setTotalAmount(bean.getTotalAmount().add(itemBean.getApplyCostValue()));
+            } else if (bean.getFlag().equals(MaterialFlagEnum.SUBMIT.getKey())) {
+                // 检查进价范围值
+                if (Objects.nonNull(relaGoods.getCostRangeMini())
+                        && itemBean.getCost().compareTo(relaGoods.getCostRangeMini()) < 0) {
+                    throw new RemoteServiceException(preStr + "不能低于辅材资料最小进价范围值");
+                }
+                if (Objects.nonNull(relaGoods.getCostRangeMax())
+                        && itemBean.getCost().compareTo(relaGoods.getCostRangeMax()) > 0) {
+                    throw new RemoteServiceException(preStr + "不能高于辅材资料最大进价范围值");
+                }
+                itemBean.setInStockCost(itemBean.getCost());
+                itemBean.setInStockQty(itemBean.getRecQty().add(itemBean.getRecGiftQty()));
+                itemBean.setCostValue(itemBean.getRecQty().multiply(itemBean.getCost()).setScale(2, BigDecimal.ROUND_DOWN));
+                bean.setTotalAmount(bean.getTotalAmount().add(itemBean.getCostValue()));
             }
-            // 申请进价*申请数量=申请进价金额
-            itemBean.setApplyCostValue(itemBean.getApplyCost().multiply(itemBean.getApplyQty()).setScale(2, BigDecimal.ROUND_HALF_UP));
-            itemBean.setCheckQty(itemBean.getApplyCost());
-            itemBean.setGoodsCode(relaGoods.getGoodsCode());
-            itemBean.setGoodsSpecification(relaGoods.getGoodsSpecification());
-            itemBean.setGoodsStockUnit(relaGoods.getGoodsStockUnit());
-            itemBean.setParentCategoryId(relaGoods.getParentCategoryId());
-            itemBean.setParentCategoryName(relaGoods.getParentCategoryName());
-            itemBean.setGoodsCategoryId(relaGoods.getGoodsCategoryId());
-            itemBean.setGoodsCategoryName(relaGoods.getCategoryName());
+
         }
     }
 
@@ -267,12 +287,15 @@ public class WebsitMPurchaseLogic {
     }
 
     @Transactional
-    public void revoke(String purchaseId) {
+    public void revoke(String purchaseId, int position) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
         if (!websitPurchaseService.lambdaUpdate()
                 .eq(WebsitPurchase::getPurchaseId, purchaseId)
                 .eq(WebsitPurchase::getFlag, MaterialFlagEnum.SUBMIT.getKey())
                 .eq(WebsitPurchase::getIsRecheck, IsYesNoEnum.NO.getKey())
                 .set(WebsitPurchase::getFlag, MaterialFlagEnum.SAVE.getKey())
+                .set(position == 2, WebsitPurchase::getCheckBy, adminUser.getNickName())
+                .set(position == 2, WebsitPurchase::getCheckTime, DateUtil.date())
                 .update()) {
             throw new RemoteServiceException("撤消失败,单据状态已发生变化,非“提交待核实”");
         }
@@ -301,4 +324,245 @@ public class WebsitMPurchaseLogic {
                 .setSubmitTime(DateUtil.date())
                 .updateById();
     }
+
+    public IPage<WebsitPurchaseCheckVO> checkPage(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.materialParam(zfireParamBean, WebsitPurchaseCheckVO.class, adminUser);
+        if (CollectionUtil.isEmpty(zfireParamBean.getParams())) {
+            zfireParamBean.setParams(new ArrayList<>());
+        }
+
+        if (adminUser.getIsVender()) {
+            QueryParamBean paramBean = new QueryParamBean();
+            paramBean.setParam("a.vender_id").setCompare("=").setValue(adminUser.getVenderId());
+            zfireParamBean.getParams().add(paramBean);
+        }
+
+        return materialMapper.websitPurchaseCheckPage(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+
+    }
+
+    @Transactional
+    public void checkUpdate(WebsitMPurchaseBean bean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPurchase purchase = websitPurchaseService.getById(bean.getPurchaseId());
+        purchase.setCheckRemark(bean.getCheckRemark())
+                .updateById();
+
+        List<WebsitPurchaseItem> items = websitPurchaseItemService.lambdaQuery()
+                .eq(WebsitPurchaseItem::getPurchaseId, purchase.getPurchaseId())
+                .list();
+
+        final Map<String, BigDecimal> checkItemMap = bean.getItems().stream()
+                .collect(Collectors.toMap(WebsitMPurchaseItemBean::getGoodsId, WebsitMPurchaseItemBean::getCheckQty));
+
+        for (WebsitPurchaseItem item : items) {
+            BigDecimal checkQty = checkItemMap.get(item.getGoodsId());
+            if (Objects.nonNull(checkQty)) {
+                item.setCheckQty(checkQty);
+            }
+        }
+
+        websitPurchaseItemService.saveOrUpdateBatch(items);
+    }
+
+    @Transactional
+    public void verify(String purchaseId) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        websitPurchaseService.lambdaUpdate()
+                .eq(WebsitPurchase::getPurchaseId, purchaseId)
+                .eq(adminUser.getIsVender(), WebsitPurchase::getVenderId, adminUser.getVenderId())
+                .eq(WebsitPurchase::getFlag, MaterialFlagEnum.SUBMIT.getKey())
+                .eq(WebsitPurchase::getIsRecheck, IsYesNoEnum.NO.getKey())
+                .set(WebsitPurchase::getIsRecheck, IsYesNoEnum.YES.getKey())
+                .set(WebsitPurchase::getCheckBy, adminUser.getNickName())
+                .set(WebsitPurchase::getCheckTime, DateUtil.date())
+                .update();
+    }
+
+    @Transactional
+    public void orderUpdate(WebsitMPurchaseBean bean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPurchase purchase = websitPurchaseService.getById(bean.getPurchaseId());
+
+        if (Objects.isNull(purchase)) {
+            throw new RemoteServiceException("单据不存在或状态已发生变化");
+        }
+
+        if (StringUtils.isBlank(bean.getImageUrl())) {
+            throw new RemoteServiceException("请添加附件图片");
+        }
+
+        if (Objects.isNull(bean.getPurchaseTime())) {
+            throw new RemoteServiceException("请选择采购日期");
+        }
+
+        final Storage storage = storageService.lambdaQuery()
+                .eq(Storage::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .eq(Storage::getWebsitId, purchase.getWebsitId())
+                .eq(Storage::getIsDefault, IsEnum.Y.getValue())
+                .one();
+
+        List<WebsitPurchaseItem> purchaseItems = websitPurchaseItemService.lambdaQuery()
+                .eq(WebsitPurchaseItem::getPurchaseId, purchase.getPurchaseId())
+                .list();
+
+        if (StringUtils.isBlank(bean.getStorageId())) {
+            bean.setStorageId(storage.getStorageId());
+            bean.setStorageName(storage.getStorageName());
+        }
+
+        bean.setFlag(purchase.getFlag());
+        this.convertOrderParams(bean, purchase, purchaseItems);
+
+        purchase.updateById();
+        websitPurchaseItemService.saveOrUpdateBatch(purchaseItems);
+    }
+
+    @Transactional
+    public void orderRevoke(String purchaseId) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        websitPurchaseService.lambdaUpdate()
+                .eq(WebsitPurchase::getPurchaseId, purchaseId)
+                .eq(WebsitPurchase::getFlag, MaterialFlagEnum.SUBMIT.getKey())
+                .eq(WebsitPurchase::getIsRecheck, IsYesNoEnum.YES.getKey())
+                .set(WebsitPurchase::getUpdateBy, adminUser.getNickName())
+                .set(WebsitPurchase::getUpdateTime, DateUtil.date())
+                .set(WebsitPurchase::getFlag, MaterialFlagEnum.CANCEL.getKey())
+                .update();
+    }
+
+    private void convertOrderParams(WebsitMPurchaseBean bean, WebsitPurchase purchase, List<WebsitPurchaseItem> purchaseItems) {
+        // 获取供应商商品记录
+        List<WebsitVenderGoodsRelaVO> relaList = this.queryVenderGoods(bean);
+        final Map<String, WebsitVenderGoodsRelaVO> relaMap = relaList.stream()
+                .collect(Collectors.toMap(WebsitVenderGoodsRelaVO::getGoodsId, Function.identity()));
+
+        // 校验供应商商品
+        this.validVendorGoods(bean, relaMap);
+
+        final Map<String, WebsitMPurchaseItemBean> itemBeanMap = bean.getItems().stream()
+                .collect(Collectors.toMap(WebsitMPurchaseItemBean::getGoodsId, Function.identity()));
+
+        for (WebsitPurchaseItem item : purchaseItems) {
+            final WebsitMPurchaseItemBean itemBean = itemBeanMap.get(item.getGoodsId());
+            if (Objects.nonNull(itemBean)) {
+                item.setRecQty(itemBean.getRecQty())
+                        .setRecGiftQty(itemBean.getRecGiftQty())
+                        .setCost(itemBean.getCost())
+                        .setCostValue(itemBean.getCostValue())
+                        .setInStockCost(itemBean.getInStockCost())
+                        .setInStockQty(itemBean.getInStockQty());
+            }
+            purchase.setTotalAmount(purchase.getTotalAmount().add(item.getCostValue()));
+        }
+
+        purchase.setImageUrl(bean.getImageUrl())
+                .setPurchaseTime(bean.getPurchaseTime())
+                .setConfirmRemark(bean.getConfirmRemark());
+    }
+
+    @Transactional
+    public void orderConfirm(String purchaseId) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        WebsitPurchase purchase = websitPurchaseService.getById(purchaseId);
+        if (Objects.isNull(purchase)
+                || !StrUtil.equals(purchase.getFlag(), MaterialFlagEnum.SUBMIT.getKey())
+                || StrUtil.equals(purchase.getIsRecheck(), IsYesNoEnum.YES.getKey())) {
+            throw new RemoteServiceException("单据不存在或状态已发生变化");
+        }
+
+        final List<WebsitPurchaseItem> purchaseItems = websitPurchaseItemService.lambdaQuery()
+                .eq(WebsitPurchaseItem::getPurchaseId, purchase.getPurchaseId())
+                .list();
+
+        this.checkPurchaseItemsCount(purchase, purchaseItems);
+
+        purchase.setFlag(MaterialFlagEnum.OK.getKey())
+                .setConfirmBy(adminUser.getNickName())
+                .setConfirmTime(DateUtil.date())
+                .updateById();
+
+        // 库存处理
+        webitPurchaseStockLogic.newInStock(purchase, purchaseItems, "采购入库");
+
+        // 没有入库过的辅材增加售价为0记录
+        if (purchase.getGoodsType().equals(WebsitGoodsTypeEnum.M.getKey())) {
+            List<WebsitGoods> goodsList = websitGoodsService.lambdaQuery()
+                    .eq(WebsitGoods::getCompanyWechatId, purchase.getCompanyWechatId())
+                    .in(WebsitGoods::getGoodsId, purchaseItems.stream()
+                            .map(WebsitPurchaseItem::getGoodsId)
+                            .collect(Collectors.toList()))
+                    .list();
+
+            List<WebsitGoodsPrice> priceList = websitGoodsPriceService.lambdaQuery()
+                    .eq(WebsitGoodsPrice::getCompanyWechatId, purchase.getCompanyWechatId())
+                    .eq(WebsitGoodsPrice::getWebsitId, purchase.getWebsitId())
+                    .in(WebsitGoodsPrice::getGoodsId, purchaseItems.stream()
+                            .map(WebsitPurchaseItem::getGoodsId)
+                            .collect(Collectors.toList()))
+                    .list();
+            // 数量不相等
+            if (priceList.size() != purchaseItems.size()) {
+                List<WebsitGoodsPrice> createPriceList = new ArrayList<>();
+
+                Map<String, WebsitGoodsPrice> goodsPriceMap = priceList.stream()
+                        .collect(Collectors.toMap(WebsitGoodsPrice::getGoodsId, Function.identity(), (key1,key2) -> key2));
+
+                Map<String, BigDecimal> goodsMap = goodsList.stream()
+                        .collect(Collectors.toMap(WebsitGoods::getGoodsId, WebsitGoods::getMarketPrice, (key1,key2) -> key2));
+
+                for (WebsitPurchaseItem item : purchaseItems) {
+                    if (!goodsPriceMap.containsKey(item.getGoodsId())) {
+                        WebsitGoodsPrice price = new WebsitGoodsPrice();
+                        BigDecimal salesPrice = goodsMap.getOrDefault(item.getGoodsId(), BigDecimal.ZERO);
+                        price.setCompanyWechatId(item.getCompanyWechatId());
+                        price.setWebsitId(item.getWebsitId());
+                        price.setWebsitName(item.getWebsitName());
+                        price.setGoodsType(item.getGoodsType());
+                        price.setGoodsId(item.getGoodsId());
+                        price.setPrice(salesPrice);
+                        price.setSheetId("");
+                        price.setRemark(purchase.getRemark());
+
+                        createPriceList.add(price);
+                    }
+                }
+
+                if (CollectionUtil.isNotEmpty(createPriceList)) {
+                    websitGoodsPriceService.saveBatch(createPriceList);
+                }
+            }
+        }
+    }
+
+    private void checkPurchaseItemsCount(WebsitPurchase purchase, List<WebsitPurchaseItem> purchaseItems) {
+        BigDecimal zero = new BigDecimal("0");
+        List<WebsitPurchaseItem> zeroItems = purchaseItems.stream()
+                .filter(item -> item.getInStockQty().compareTo(zero) == 0)
+                .collect(Collectors.toList());
+
+        List<WebsitPurchaseItem> purchaseItemList = purchaseItems.stream()
+                .filter(item -> item.getRecQty().compareTo(item.getApplyQty()) > 0)
+                .collect(Collectors.toList());
+
+        if (zeroItems.size() == purchaseItems.size()) {
+            throw new RemoteServiceException("辅材验收数量为0,审核失败");
+        }
+
+        if (CollectionUtil.isNotEmpty(purchaseItemList)) {
+            throw new RemoteServiceException(purchaseItemList.get(0).getGoodsName() + " 辅材验收数量不能大于订货数量,审核失败");
+        }
+
+        BigDecimal rateQty = new BigDecimal("5");
+        for (WebsitPurchaseItem item : purchaseItems) {
+            BigDecimal resultRateQty = Optional.ofNullable(item.getRecGiftQty()).orElse(BigDecimal.ZERO)
+                    .divide(item.getApplyQty(), 4, BigDecimal.ROUND_HALF_UP)
+                    .multiply(new BigDecimal("100"));
+            if (resultRateQty.compareTo(rateQty) > 0) {
+                throw new RemoteServiceException(item.getGoodsName() + "的赠品数量不能超过订货数量的5%,审核失败");
+            }
+        }
+    }
 }

+ 335 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPurchaseAdjustmentLogic.java

@@ -0,0 +1,335 @@
+package com.gree.mall.manager.logic.material.manage;
+
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseAdjustmentBean;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseAdjustmentVO;
+import com.gree.mall.manager.bean.material.manage.WebsitPurchaseApplyVO;
+import com.gree.mall.manager.commonmapper.MaterialMapper;
+import com.gree.mall.manager.enums.material.MaterialFlagEnum;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.logic.material.stock.WebitPurchaseStockLogic;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
+import com.gree.mall.manager.zfire.bean.ZfireParamBean;
+import com.gree.mall.manager.zfire.util.FieldUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WebsitPurchaseAdjustmentLogic {
+
+    private final CommonLogic commonLogic;
+    private final MaterialMapper materialMapper;
+    private final WebsitPurchaseAdjustmentService websitPurchaseAdjustmentService;
+    private final WebsitPurchaseAdjustmentItemService websitPurchaseAdjustmentItemService;
+    private final WebsitPurchaseService websitPurchaseService;
+    private final WebsitPurchaseItemService websitPurchaseItemService;
+    private final WebsitGoodsService websitGoodsService;
+    private final WebitPurchaseStockLogic webitPurchaseStockLogic;
+
+    public IPage<WebsitPurchaseAdjustmentVO> page(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.materialParam(zfireParamBean, WebsitPurchaseApplyVO.class, adminUser);
+
+        return materialMapper.websitPurchaseAdjustmentPage(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+    }
+
+    public WebsitPurchaseAdjustmentBean detail(String purchaseAdjustmentId) {
+        final WebsitPurchaseAdjustment adjustment = websitPurchaseAdjustmentService.getById(purchaseAdjustmentId);
+        WebsitPurchaseAdjustmentBean bean = new WebsitPurchaseAdjustmentBean();
+        BeanUtils.copyProperties(adjustment, bean);
+        final List<WebsitPurchaseAdjustmentItem> items = websitPurchaseAdjustmentItemService.lambdaQuery()
+                .eq(WebsitPurchaseAdjustmentItem::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .list();
+        bean.setItems(items);
+        return bean;
+    }
+
+    @Transactional
+    public WebsitPurchaseAdjustmentBean add(WebsitPurchaseAdjustmentBean bean) {
+        WebsitPurchaseAdjustment existObj = websitPurchaseAdjustmentService.lambdaQuery()
+                .eq(WebsitPurchaseAdjustment::getRef, bean.getRef())
+                .lt(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.OK.getKey())
+                .one();
+
+        if (Objects.nonNull(existObj)) {
+            throw new RemoteServiceException("发现一张未审核采购调整单单号为:" + existObj.getPurchaseAdjustmentId() + ",请先处理!");
+        }
+
+        // 获取采购订单信息
+        getPurchaseInfo(bean);
+
+        // 保存采购调整单
+        bean.insert();
+        // 保存采购调整单明细
+        websitPurchaseAdjustmentItemService.saveBatch(bean.getItems());
+
+        return bean;
+    }
+
+    private void getPurchaseInfo(WebsitPurchaseAdjustmentBean bean) throws RemoteServiceException {
+        bean.setPurchaseAdjustmentId(IdWorker.getIdStr());
+        // 获取采购订单信息
+        WebsitPurchase purchase = websitPurchaseService.lambdaQuery()
+                .eq(WebsitPurchase::getPurchaseId, bean.getRef())
+                .eq(WebsitPurchase::getWebsitId, bean.getWebsitId())
+                .eq(WebsitPurchase::getFlag, MaterialFlagEnum.OK.getKey())
+                .one();
+;
+
+        if (Objects.isNull(purchase)) {
+            throw new RemoteServiceException("找不到对应的采购订单:" + bean.getRef());
+        }
+
+        bean.setFlag(MaterialFlagEnum.SAVE.getKey());
+        bean.setPurchaseTime(purchase.getPurchaseTime());
+        bean.setStorageId(purchase.getStorageId());
+        bean.setStorageName(purchase.getStorageName());
+
+        // 获取采购订单明细信息
+        List<WebsitPurchaseItem> purchaseItemList = websitPurchaseItemService.lambdaQuery()
+                .eq(WebsitPurchaseItem::getPurchaseId, purchase.getPurchaseId())
+                .list();
+
+        List<WebsitPurchaseAdjustmentItem> adjustmentBeanItems = new ArrayList<>();
+
+        for (WebsitPurchaseItem item : purchaseItemList) {
+            WebsitPurchaseAdjustmentItem purchaseAdjustmentItem = new WebsitPurchaseAdjustmentItem();
+            purchaseAdjustmentItem.setPurchaseAdjustmentId(bean.getPurchaseAdjustmentId());
+            purchaseAdjustmentItem.setGoodsId(item.getGoodsId());
+            purchaseAdjustmentItem.setGoodsName(item.getGoodsName());
+            purchaseAdjustmentItem.setCost(item.getCost());
+            purchaseAdjustmentItem.setRecQty(item.getRecQty());
+            purchaseAdjustmentItem.setRecGiftQty(item.getRecGiftQty());
+            purchaseAdjustmentItem.setInStockCost(item.getInStockCost());
+            purchaseAdjustmentItem.setInStockQty(item.getInStockQty());
+            purchaseAdjustmentItem.setAdjustCost(item.getCost());
+            purchaseAdjustmentItem.setAdjustQty(item.getRecQty());
+            purchaseAdjustmentItem.setAdjustGiftQty(item.getRecGiftQty());
+            purchaseAdjustmentItem.setAdjustInStockCost(item.getInStockCost());
+            purchaseAdjustmentItem.setAdjustInStockQty(item.getInStockQty());
+            purchaseAdjustmentItem.setGoodsStockUnit(item.getGoodsStockUnit());
+            purchaseAdjustmentItem.setGoodsSpecification(item.getGoodsSpecification());
+            adjustmentBeanItems.add(purchaseAdjustmentItem);
+        }
+
+        bean.setItems(adjustmentBeanItems);
+    }
+
+    @Transactional
+    public void update(WebsitPurchaseAdjustmentBean purchaseAdjustmentBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        // 检查明细
+        this.validPurchaseItem(purchaseAdjustmentBean);
+        // 校验商品进价倍率并转换入库数量
+        this.validGoodsCost(purchaseAdjustmentBean);
+        // 更新主表
+        websitPurchaseAdjustmentService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustment::getPurchaseAdjustmentId, purchaseAdjustmentBean.getPurchaseAdjustmentId())
+                .eq(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SAVE.getKey())
+                .set(WebsitPurchaseAdjustment::getUpdateBy, adminUser.getNickName())
+                .set(WebsitPurchaseAdjustment::getUpdateTime, DateUtil.date())
+                .set(WebsitPurchaseAdjustment::getRemark, purchaseAdjustmentBean.getRemark())
+                .set(WebsitPurchaseAdjustment::getStorageId, purchaseAdjustmentBean.getStorageId())
+                .set(WebsitPurchaseAdjustment::getStorageName, purchaseAdjustmentBean.getStorageName())
+                .update();
+        // 更新明细
+        websitPurchaseAdjustmentItemService.updateBatchById(purchaseAdjustmentBean.getItems());
+    }
+
+    private void validPurchaseItem(WebsitPurchaseAdjustmentBean purchaseAdjustmentBean) throws RemoteServiceException {
+        // 过滤校验调整进价、调整数量少于等于0,调整增品数量少于0的明细
+        BigDecimal zeroVal = new BigDecimal("0");
+        List<WebsitPurchaseAdjustmentItem> existFilter = purchaseAdjustmentBean.getItems().stream()
+                .filter((item) ->
+                        item.getAdjustCost().compareTo(zeroVal) < 1
+                                || item.getAdjustQty().compareTo(zeroVal) < 1
+                                || item.getAdjustGiftQty().compareTo(zeroVal) < 0
+                ).collect(Collectors.toList());
+
+        if (existFilter.size() > 0) {
+            StringBuilder sb = new StringBuilder();
+            for (WebsitPurchaseAdjustmentItem purchaseAdjustmentItem : existFilter) {
+                sb.append(purchaseAdjustmentItem.getGoodsId())
+                        .append(" ")
+                        .append(purchaseAdjustmentItem.getGoodsName())
+                        .append(":");
+                if (purchaseAdjustmentItem.getAdjustCost().compareTo(zeroVal) < 1) {
+                    sb.append("调整进价不能少于等于0;");
+                }
+                if (purchaseAdjustmentItem.getAdjustQty().compareTo(zeroVal) < 1) {
+                    sb.append("调整数量不能少于等于0;");
+                }
+                if (purchaseAdjustmentItem.getAdjustGiftQty().compareTo(zeroVal) < 0) {
+                    sb.append("调整赠品数量不能少于0;");
+                }
+                sb.append("<br/><br/>");
+            }
+            sb.delete(sb.length()-10, sb.length());
+            throw new RemoteServiceException(sb.toString());
+        }
+
+        // 查询明细表信息
+        List<WebsitPurchaseAdjustmentItem> purchaseAdjustmentItems = websitPurchaseAdjustmentItemService.lambdaQuery()
+                .eq(WebsitPurchaseAdjustmentItem::getPurchaseAdjustmentId, purchaseAdjustmentBean.getPurchaseAdjustmentId())
+                .list();
+
+        Map<String, WebsitPurchaseAdjustmentItem> goodsMap = purchaseAdjustmentBean.getItems().stream()
+                .collect(Collectors.toMap((p) -> p.getPurchaseAdjustmentId() + "|" + p.getGoodsId(), Function.identity(), (key1, key2) -> key2));
+
+        for (WebsitPurchaseAdjustmentItem realItem : purchaseAdjustmentItems) {
+            WebsitPurchaseAdjustmentItem item = goodsMap.get(realItem.getPurchaseAdjustmentId() + "|" + realItem.getGoodsId());
+            realItem.setAdjustCost(item.getAdjustCost());
+            realItem.setAdjustQty(item.getAdjustQty());
+            realItem.setAdjustGiftQty(item.getAdjustGiftQty());
+        }
+
+        purchaseAdjustmentBean.setItems(purchaseAdjustmentItems);
+    }
+
+    private void validGoodsCost(WebsitPurchaseAdjustmentBean purchaseAdjustmentBean) throws RemoteServiceException {
+        List<WebsitGoods> list = websitGoodsService.lambdaQuery()
+                .in(WebsitGoods::getGoodsId, purchaseAdjustmentBean.getItems().stream()
+                        .map(WebsitPurchaseAdjustmentItem::getGoodsId)
+                        .collect(Collectors.toList()))
+                .list();
+
+        Map<String, WebsitGoods> goodsMap = list.stream()
+                .collect(Collectors.toMap(WebsitGoods::getGoodsId, Function.identity(), (key1, key2) -> key2));
+
+        for (int i = 0; i < purchaseAdjustmentBean.getItems().size(); i++) {
+            WebsitPurchaseAdjustmentItem item = purchaseAdjustmentBean.getItems().get(i);
+            WebsitGoods goods = goodsMap.get(item.getGoodsId());
+            String preStr = "第" + (i+1) + "行, ";
+            if (Objects.nonNull(goods.getCostRangeMini())
+                    && item.getAdjustCost().compareTo(goods.getCostRangeMini()) < 0) {
+                throw new RemoteServiceException(preStr + "不能低于辅材资料最小进价范围值");
+            }
+            if (Objects.nonNull(goods.getCostRangeMax())
+                    && item.getAdjustCost().compareTo(goods.getCostRangeMax()) > 0) {
+                throw new RemoteServiceException(preStr + "不能高于辅材资料最大进价范围值");
+            }
+
+            item.setAdjustInStockCost(item.getAdjustCost());
+            item.setAdjustInStockQty(item.getAdjustQty().add(item.getAdjustGiftQty()));
+        }
+
+    }
+
+    @Transactional
+    public void submit(String purchaseAdjustmentId) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        websitPurchaseAdjustmentService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustment::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .eq(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SAVE.getKey())
+                .set(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SUBMIT.getKey())
+                .set(WebsitPurchaseAdjustment::getSubmitBy, adminUser.getNickName())
+                .set(WebsitPurchaseAdjustment::getSubmitTime, DateUtil.date())
+                .update();
+    }
+
+    @Transactional
+    public void revoke(String purchaseAdjustmentId) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        websitPurchaseAdjustmentService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustment::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .eq(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SUBMIT.getKey())
+                .set(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SAVE.getKey())
+                .set(WebsitPurchaseAdjustment::getUpdateBy, adminUser.getNickName())
+                .set(WebsitPurchaseAdjustment::getUpdateTime, DateUtil.date())
+                .update();
+    }
+
+    @Transactional
+    public void del(String purchaseAdjustmentId) {
+        websitPurchaseAdjustmentService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustment::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .eq(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SAVE.getKey())
+                .remove();
+
+        websitPurchaseAdjustmentItemService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustmentItem::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .remove();
+    }
+
+    @Transactional
+    public void confirm(String purchaseAdjustmentId) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        final boolean update = websitPurchaseAdjustmentService.lambdaUpdate()
+                .eq(WebsitPurchaseAdjustment::getPurchaseAdjustmentId, purchaseAdjustmentId)
+                .eq(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.SUBMIT.getKey())
+                .set(WebsitPurchaseAdjustment::getFlag, MaterialFlagEnum.OK.getKey())
+                .set(WebsitPurchaseAdjustment::getConfirmBy, adminUser.getNickName())
+                .set(WebsitPurchaseAdjustment::getConfirmTime, DateUtil.date())
+                .update();
+
+        if (!update) {
+            throw new RemoteServiceException("单据不存在或状态已发生变化");
+        }
+        WebsitPurchaseAdjustment purchaseAdjustment = websitPurchaseAdjustmentService.getById(purchaseAdjustmentId);
+
+        // 获取调整明细
+        List<WebsitPurchaseAdjustmentItem> purchaseAdjustmentItems = websitPurchaseAdjustmentItemService.lambdaQuery()
+                .eq(WebsitPurchaseAdjustmentItem::getPurchaseAdjustmentId, purchaseAdjustment.getPurchaseAdjustmentId())
+                .list();
+
+        // 调整明细转为Map
+        Map<String, WebsitPurchaseAdjustmentItem> goodsMap = purchaseAdjustmentItems.stream()
+                .collect(Collectors.toMap(WebsitPurchaseAdjustmentItem::getGoodsId, Function.identity(), (key1, key2) -> key2));
+
+        // 获取采购明细
+        List<WebsitPurchaseItem> purchaseItems = websitPurchaseItemService.lambdaQuery()
+                .eq(WebsitPurchaseItem::getPurchaseId, purchaseAdjustment.getRef())
+                .list();
+
+        List<WebsitPurchaseItem> changePurchaseList = new ArrayList<>();
+        List<WebsitPurchaseAdjustmentItem> changeAdjustList = new ArrayList<>();
+
+        // 遍历修改采购明细
+        for (WebsitPurchaseItem purchaseItem : purchaseItems) {
+            WebsitPurchaseAdjustmentItem item = goodsMap.get("" + purchaseItem.getGoodsId());
+
+            if (purchaseItem.getCost().compareTo(item.getAdjustCost()) != 0
+                    || purchaseItem.getRecQty().compareTo(item.getAdjustQty()) != 0
+                    || purchaseItem.getRecGiftQty().compareTo(item.getAdjustGiftQty()) != 0) {
+                // 进价或验收数量或验收赠品数量不等时执行变更
+                purchaseItem.setCost(item.getAdjustCost());
+                purchaseItem.setRecQty(item.getAdjustQty());
+                purchaseItem.setRecGiftQty(item.getAdjustGiftQty());
+                purchaseItem.setCostValue(item.getRecQty()
+                        .multiply(item.getCost())
+                        .setScale(2, BigDecimal.ROUND_DOWN));
+                purchaseItem.setInStockQty(item.getAdjustInStockQty());
+                purchaseItem.setInStockCost(item.getAdjustInStockCost());
+                changePurchaseList.add(purchaseItem);
+                changeAdjustList.add(item);
+            }
+        }
+
+        // 更改采购明细信息
+        websitPurchaseItemService.updateBatchById(changePurchaseList);
+
+        if (changeAdjustList.size() > 0) {
+            // 处理库存
+            webitPurchaseStockLogic.adjustmentStock(purchaseAdjustment, changeAdjustList, "采购调整");
+        }
+    }
+}

+ 8 - 3
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPurchaseLogic.java

@@ -6,9 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
-import com.gree.mall.manager.bean.material.manage.WebsitPurchaseBean;
-import com.gree.mall.manager.bean.material.manage.WebsitPurchaseItemBean;
-import com.gree.mall.manager.bean.material.manage.WebsitPurchaseVO;
+import com.gree.mall.manager.bean.material.manage.*;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
 import com.gree.mall.manager.enums.material.MaterialFlagEnum;
@@ -502,4 +500,11 @@ public class WebsitPurchaseLogic {
         return "";
     }
 
+    public IPage<WebsitPurchaseOrderVO> orderPage(ZfireParamBean zfireParamBean) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        FieldUtils.materialParam(zfireParamBean, WebsitPurchaseOrderVO.class, adminUser);
+
+        return materialMapper.websitPurchaseOrderPage(new Page(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
+
+    }
 }

+ 71 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WebitPurchaseStockLogic.java

@@ -1,9 +1,11 @@
 package com.gree.mall.manager.logic.material.stock;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.material.stock.WebsitStockDTO;
 import com.gree.mall.manager.enums.material.DirectFlagEnum;
 import com.gree.mall.manager.enums.material.PartsAttrEnum;
+import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.StorageService;
@@ -14,6 +16,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -31,6 +34,9 @@ public class WebitPurchaseStockLogic {
     public void newInStock(WebsitPurchase purchase, List<WebsitPurchaseItem> websitPurchaseItems, String refType) throws Exception {
         List<WebsitStockDTO> shopStockDTOS = new ArrayList<>();
         for (WebsitPurchaseItem websitPurchaseItem : websitPurchaseItems) {
+            if (websitPurchaseItem.getInStockQty().compareTo(BigDecimal.ZERO) <= 0) {
+                continue;
+            }
             // 入库注值
             WebsitStockDTO websitStockDTO = new WebsitStockDTO();
             websitStockDTO.setCompanyWechatId(websitPurchaseItem.getCompanyWechatId());
@@ -45,7 +51,7 @@ public class WebitPurchaseStockLogic {
             websitStockDTO.setPrice(websitPurchaseItem.getCost());
             websitStockDTO.setRef(websitPurchaseItem.getPurchaseId());
             websitStockDTO.setRefType(refType);
-            websitStockDTO.setChangeQty(websitPurchaseItem.getRecQty());
+            websitStockDTO.setChangeQty(websitPurchaseItem.getInStockQty());
             websitStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
             websitStockDTO.setRemark(purchase.getRemark());
             websitStockDTO.setOperateBy(purchase.getConfirmBy());
@@ -55,6 +61,10 @@ public class WebitPurchaseStockLogic {
             shopStockDTOS.add(websitStockDTO);
         }
 
+        if (CollectionUtil.isEmpty(shopStockDTOS)) {
+            return;
+        }
+
         // 开始处理库存
         websitGoodsStockLogic.handleWebsitStock(shopStockDTOS);
     }
@@ -90,6 +100,64 @@ public class WebitPurchaseStockLogic {
         websitGoodsStockLogic.handleWebsitStock(shopStockDTOS);
     }
 
+    public void adjustmentStock(WebsitPurchaseAdjustment purchaseAdjustment, List<WebsitPurchaseAdjustmentItem> changeAdjustList, String refType) throws Exception {
+        List<WebsitStockDTO> shopStockDTOS = new ArrayList<>();
+        for (WebsitPurchaseAdjustmentItem adjustmentItem : changeAdjustList) {
+            // 入库注值
+            WebsitStockDTO subStockDTO = new WebsitStockDTO();
+            subStockDTO.setCompanyWechatId(purchaseAdjustment.getCompanyWechatId());
+            subStockDTO.setCompanyWechatName(purchaseAdjustment.getCompanyWechatName());
+            subStockDTO.setWebsitId(purchaseAdjustment.getWebsitId());
+            subStockDTO.setWebsitName(purchaseAdjustment.getWebsitName());
+            subStockDTO.setSdate(purchaseAdjustment.getCreateTime());
+            subStockDTO.setPartsAttr(PartsAttrEnum.NEW.toString());
+            subStockDTO.setGoodsId(adjustmentItem.getGoodsId());
+            subStockDTO.setGoodsName(adjustmentItem.getGoodsName());
+            subStockDTO.setGoodsType(WebsitGoodsTypeEnum.M.getKey());
+            subStockDTO.setPrice(adjustmentItem.getCost());
+            subStockDTO.setRef(adjustmentItem.getPurchaseAdjustmentId());
+            subStockDTO.setRefType(refType);
+            subStockDTO.setChangeQty(adjustmentItem.getInStockQty());
+            subStockDTO.setDirectFlag(DirectFlagEnum.SUB.getKey());
+            subStockDTO.setRemark(purchaseAdjustment.getRemark());
+            subStockDTO.setOperateBy(purchaseAdjustment.getConfirmBy());
+            subStockDTO.setOperateTime(purchaseAdjustment.getConfirmTime());
+            subStockDTO.setObj("供应商");
+            subStockDTO.setStorageId(purchaseAdjustment.getStorageId());
+            shopStockDTOS.add(subStockDTO);
+
+            WebsitStockDTO addStockDTO = new WebsitStockDTO();
+            addStockDTO.setCompanyWechatId(purchaseAdjustment.getCompanyWechatId());
+            addStockDTO.setCompanyWechatName(purchaseAdjustment.getCompanyWechatName());
+            addStockDTO.setWebsitId(purchaseAdjustment.getWebsitId());
+            addStockDTO.setWebsitName(purchaseAdjustment.getWebsitName());
+            addStockDTO.setSdate(purchaseAdjustment.getCreateTime());
+            addStockDTO.setPartsAttr(PartsAttrEnum.NEW.toString());
+            addStockDTO.setGoodsId(adjustmentItem.getGoodsId());
+            addStockDTO.setGoodsName(adjustmentItem.getGoodsName());
+            addStockDTO.setGoodsType(WebsitGoodsTypeEnum.M.getKey());
+            addStockDTO.setPrice(adjustmentItem.getAdjustCost());
+            addStockDTO.setRef(adjustmentItem.getPurchaseAdjustmentId());
+            addStockDTO.setRefType(refType);
+            addStockDTO.setChangeQty(adjustmentItem.getAdjustInStockQty());
+            addStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
+            addStockDTO.setRemark(purchaseAdjustment.getRemark());
+            addStockDTO.setOperateBy(purchaseAdjustment.getConfirmBy());
+            addStockDTO.setOperateTime(purchaseAdjustment.getConfirmTime());
+            addStockDTO.setObj("供应商");
+            addStockDTO.setStorageId(purchaseAdjustment.getStorageId());
+            addStockDTO.setPurchaseId(purchaseAdjustment.getRef());
+            shopStockDTOS.add(addStockDTO);
+        }
+
+        if (CollectionUtil.isEmpty(shopStockDTOS)) {
+            return;
+        }
+
+        // 开始处理库存
+        websitGoodsStockLogic.handleWebsitStock(shopStockDTOS);
+    }
+
     public Storage handleStorage(AdminUserCom adminUser, String websitId, String goodsType, String storageId) {
 //        String storageType = goodsType.equals(WebsitGoodsTypeEnum.M.getKey()) ? WebsitGoodsTypeEnum.M.getRemark() : WebsitGoodsTypeEnum.P.getRemark();
 //        if (adminUser.getAdminCompanyWechat().getJoinCode().equals("NO")) {
@@ -126,4 +194,6 @@ public class WebitPurchaseStockLogic {
 
         return storage;
     }
+
+
 }

+ 16 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WebsitGoodsStockLogic.java

@@ -5,15 +5,10 @@ import com.gree.mall.manager.bean.material.stock.WebsitStockDTO;
 import com.gree.mall.manager.bean.material.stock.WorkerStockDTO;
 import com.gree.mall.manager.commonmapper.WebsitStockCMapper;
 import com.gree.mall.manager.constant.Constant;
+import com.gree.mall.manager.enums.material.DirectFlagEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
-import com.gree.mall.manager.plus.entity.WebsitStock;
-import com.gree.mall.manager.plus.entity.WebsitStockAcc;
-import com.gree.mall.manager.plus.entity.WorkerStock;
-import com.gree.mall.manager.plus.entity.WorkerStockAcc;
-import com.gree.mall.manager.plus.service.WebsitStockAccService;
-import com.gree.mall.manager.plus.service.WebsitStockService;
-import com.gree.mall.manager.plus.service.WorkerStockAccService;
-import com.gree.mall.manager.plus.service.WorkerStockService;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.ValidateUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -45,6 +40,7 @@ public class WebsitGoodsStockLogic {
     private final WebsitStockAccService websitStockAccService;
     private final WorkerStockService workerStockService;
     private final WorkerStockAccService workerStockAccService;
+    private final WebsitPurchaseService websitPurchaseService;
 
     /**
      * 单个网点库存处理
@@ -225,6 +221,18 @@ public class WebsitGoodsStockLogic {
             if (websitStockDTO.getRefType().equals("采购入库")) {
                 shopStock.setLastCost(websitStockDTO.getPrice());
             }
+            if (websitStockDTO.getRefType().equals("采购调整")
+                    && websitStockDTO.getDirectFlag().equals(DirectFlagEnum.ADD.getKey())) {
+                // 如果是采购调整并且方向是增加检查是否需要注入最后一次采购价
+                final WebsitPurchase purchase = websitPurchaseService.lambdaQuery()
+                        .select(WebsitPurchase::getPurchaseId)
+                        .orderByDesc(WebsitPurchase::getConfirmTime)
+                        .last("limit 1")
+                        .one();
+                if (purchase.getPurchaseId().equals(websitStockDTO.getPurchaseId())) {
+                    shopStock.setLastCost(websitStockDTO.getPrice());
+                }
+            }
         }
         return existStockMap;
     }

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/vender/VenderGoodsLogic.java

@@ -118,7 +118,7 @@ public class VenderGoodsLogic {
     @Transactional
     public void confirm(WebsitVenderGoodsBean bean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
-        this.edit(bean);
+        bean = this.detail(bean.getSheetId());
         bean.setStatus(ExamineStatusEnum.OK.getKey())
                 .setConfirmBy(adminUser.getNickName())
                 .setConfirmTime(DateUtil.date())
@@ -164,7 +164,7 @@ public class VenderGoodsLogic {
     public void del(List<String> ids) {
         websitVenderGoodsService.removeByIds(ids);
         websitVenderGoodsItemService.lambdaUpdate()
-                .eq(WebsitVenderGoodsItem::getSheetId, ids)
+                .in(WebsitVenderGoodsItem::getSheetId, ids)
                 .remove();
     }
 

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/vender/VenderLogic.java

@@ -42,6 +42,7 @@ public class VenderLogic {
     public void add(WebsitVender bean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         bean.setVenderId(null);
+        bean.setVenderType("辅材");
 
         if (Objects.nonNull(adminUser.getAdminCompanyWechat())) {
             bean.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());

+ 68 - 0
mall-server-api/src/main/resources/mapper/MaterialMapper.xml

@@ -429,6 +429,74 @@
         FROM
             websit_purchase a
         ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND a.flag IN ('SAVE', 'SUBMIT')
+        AND a.is_recheck = 'NO'
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
+    <select id="websitPurchaseCheckPage"
+            resultType="com.gree.mall.manager.bean.material.vender.WebsitPurchaseCheckVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            websit_purchase a
+        ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND a.flag IN ('SUBMIT', 'OK')
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
+    <select id="websitPurchaseOrderPage"
+            resultType="com.gree.mall.manager.bean.material.manage.WebsitPurchaseOrderVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            websit_purchase a
+        ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND a.flag IN ('SUBMIT', 'OK', 'CANCEL')
+        AND a.is_recheck = 'YES'
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY a.create_time DESC
+        </if>
+        ${ex.orderBy}
+    </select>
+
+    <select id="websitPurchaseAdjustmentPage"
+            resultType="com.gree.mall.manager.bean.material.manage.WebsitPurchaseAdjustmentVO">
+        SELECT
+            ${ex.selected}
+        FROM
+            websit_purchase_adjustment a
+        ${ex.query}
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         <if test="ex.orderBy == null or ex.orderBy ==''">
             ORDER BY a.create_time DESC
         </if>

TEMPAT SAMPAH
mall-server-api/src/main/resources/template/辅材模板.xlsx