Просмотр исходного кода

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

于继渤 2 лет назад
Родитель
Сommit
eb0b90881d
36 измененных файлов с 760 добавлено и 118 удалено
  1. 10 0
      pom.xml
  2. 22 0
      src/main/java/com/dk/mdm/controller/common/CommonController.java
  3. 37 4
      src/main/java/com/dk/mdm/controller/ivt/OutboundController.java
  4. 1 1
      src/main/java/com/dk/mdm/controller/ivt/OutboundItemController.java
  5. 7 7
      src/main/java/com/dk/mdm/controller/mst/MoneyAccountController.java
  6. 22 0
      src/main/java/com/dk/mdm/controller/mst/SupplierController.java
  7. 1 2
      src/main/java/com/dk/mdm/controller/sale/OutReturnController.java
  8. 1 2
      src/main/java/com/dk/mdm/controller/sale/OutReturnItemController.java
  9. 87 0
      src/main/java/com/dk/mdm/controller/wxapi/basic/WechatPayController.java
  10. 56 0
      src/main/java/com/dk/mdm/infrastructure/config/WechatPayConfigInfo.java
  11. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/OutboundConvert.java
  12. 21 0
      src/main/java/com/dk/mdm/infrastructure/convert/ivt/OutboundItemConvert.java
  13. 14 0
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.java
  14. 32 32
      src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml
  15. 17 1
      src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.java
  16. 7 1
      src/main/java/com/dk/mdm/mapper/ivt/OutboundMapper.java
  17. 20 2
      src/main/java/com/dk/mdm/mapper/mst/GoodsSkuMapper.xml
  18. 4 4
      src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.java
  19. 4 27
      src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml
  20. 4 4
      src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml
  21. 1 1
      src/main/java/com/dk/mdm/mapper/mst/SupplierMapper.java
  22. 20 9
      src/main/java/com/dk/mdm/mapper/mst/SupplierMapper.xml
  23. 3 3
      src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml
  24. 10 1
      src/main/java/com/dk/mdm/model/query/mst/GoodsSkuQuery.java
  25. 2 2
      src/main/java/com/dk/mdm/model/query/mst/MoneyAccountQuery.java
  26. 2 2
      src/main/java/com/dk/mdm/model/query/mst/StaffQuery.java
  27. 9 0
      src/main/java/com/dk/mdm/model/query/mst/SupplierQuery.java
  28. 6 0
      src/main/java/com/dk/mdm/model/response/mst/GoodsSkuResponse.java
  29. 12 5
      src/main/java/com/dk/mdm/model/response/mst/SpplierResponse.java
  30. 6 0
      src/main/java/com/dk/mdm/model/vo/ivt/OutboundVO.java
  31. 22 0
      src/main/java/com/dk/mdm/service/common/CommonService.java
  32. 110 0
      src/main/java/com/dk/mdm/service/ivt/OutboundService.java
  33. 4 4
      src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java
  34. 13 4
      src/main/java/com/dk/mdm/service/mst/SupplierService.java
  35. 138 0
      src/main/java/com/dk/mdm/service/wxapi/basic/WechatPayService.java
  36. 14 0
      src/main/resources/dev/bootstrap.yml

+ 10 - 0
pom.xml

@@ -106,6 +106,16 @@
             <artifactId>commons-lang</artifactId>
             <version>2.6</version>
         </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-pay</artifactId>
+            <version>4.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-miniapp</artifactId>
+            <version>4.4.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 22 - 0
src/main/java/com/dk/mdm/controller/common/CommonController.java

@@ -1533,6 +1533,28 @@ public class CommonController extends BaseController<Map<String, Object>> {
     public ResponseResultVO<PageList<Map<String, Object>>> getInventoryByPage(@RequestBody Map<String, Object> param) {
         return commonService.getInventoryByPage(param);
     }
+
+    /**
+     * @desc   : 供应商类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:28
+     */
+    @ApiOperation(value = "获取供应商类别", notes = "获取供应商类别")
+    @PostMapping({"get_supType"})
+    public ResponseResultVO<List<Map<String, Object>>> getSupType(@RequestBody Map<String, Object> param) {
+        return commonService.getSupType(param);
+    }
+
+    /**
+     * @desc   : 供应商服务类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:29
+     */
+    @ApiOperation(value = "获取供应商服务类别", notes = "获取供应商服务类别")
+    @PostMapping({"get_serviceCategories"})
+    public ResponseResultVO<List<Map<String, Object>>> getServiceCategories(@RequestBody Map<String, Object> param) {
+        return commonService.getServiceCategories(param);
+    }
 }
 
 

+ 37 - 4
src/main/java/com/dk/mdm/controller/ivt/OutboundController.java

@@ -1,17 +1,18 @@
 package com.dk.mdm.controller.ivt;
 
+import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.model.pojo.ivt.Outbound;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.dk.mdm.model.vo.ivt.OutboundVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.ivt.OutboundService;
 
 @Api(tags = "出库单API接口")
 @RestController
-@RequestMapping("/outbound")
+@RequestMapping("/ivt/outbound")
 public class OutboundController{
 
     public BaseService<Outbound> getService() {
@@ -21,4 +22,36 @@ public class OutboundController{
     @Autowired
     private OutboundService outboundService;
 
+    /**
+     * @desc : 新建出库单
+     * @author : 付斌
+     * @date : 2023/1/9 10:48
+     */
+    @ApiOperation(value = "新建出库单", notes = "新建出库单")
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> insert(@RequestBody OutboundVO outboundVO) {
+        return outboundService.insert(outboundVO);
+    }
+
+    /**
+     * @desc   : 获取出库单信息(编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-03 9:28
+     */
+    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+    @PostMapping({"get_outbound_for_update/{id}"})
+    public ResponseResultVO<?> getOutboundForUpdate(@PathVariable String id) {
+        return outboundService.getOutboundForUpdate(id);
+    }
+
+    /**
+     * @desc : 编辑出库单
+     * @author : 付斌
+     * @date : 2023/1/9 10:49
+     */
+    @ApiOperation(value = "编辑出库单", notes = "编辑出库单")
+    @PostMapping({"update"})
+    public ResponseResultVO<Boolean> update(@RequestBody OutboundVO outboundVO) {
+        return outboundService.update(outboundVO);
+    }
 }

+ 1 - 1
src/main/java/com/dk/mdm/controller/ivt/OutboundItemController.java

@@ -11,7 +11,7 @@ import com.dk.mdm.service.ivt.OutboundItemService;
 
 @Api(tags = "出库明细API接口")
 @RestController
-@RequestMapping("/outboundItem")
+@RequestMapping("/ivt/outboundItem")
 public class OutboundItemController{
 
     public BaseService<OutboundItem> getService() {

+ 7 - 7
src/main/java/com/dk/mdm/controller/mst/MoneyAccountController.java

@@ -27,7 +27,7 @@ public class MoneyAccountController{
 
     /**
      * @desc : 条件查询
-     * @author : songy
+     * @author : 宋扬
      * @date : 2023/2/29 10:36
      */
     @ApiOperation(value = "分页、关联、条件查询", notes = "分页、关联、条件查询")
@@ -38,7 +38,7 @@ public class MoneyAccountController{
 
     /**
      * @desc   : 通过ID查询
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024/3/1 16:01
      */
     @PostMapping({"/{id}"})
@@ -49,7 +49,7 @@ public class MoneyAccountController{
 
     /**
      * @desc : 新建资金账户
-     * @author : songy
+     * @author : 宋扬
      * @date : 2023/2/29 10:48
      */
     @ApiOperation(value = "新建资金账户", notes = "新建资金账户")
@@ -60,7 +60,7 @@ public class MoneyAccountController{
 
     /**
      * @desc : 编辑员工
-     * @author : songy
+     * @author : 宋扬
      * @date : 2023/2/29 10:49
      */
     @ApiOperation(value = "编辑资金账户", notes = "编辑资金账户")
@@ -70,10 +70,9 @@ public class MoneyAccountController{
     }
 
 
-
     /**
      * @desc : 停用
-     * @author : songy
+     * @author : 宋扬
      * @date : 2023/2/29 10:34
      */
     @ApiOperation(value = "停用", notes = "停用")
@@ -84,7 +83,7 @@ public class MoneyAccountController{
 
     /**
      * @desc : 启用
-     * @author : songy
+     * @author : 宋扬
      * @date : 2023/2/29 10:34
      */
     @ApiOperation(value = "启用", notes = "启用")
@@ -93,4 +92,5 @@ public class MoneyAccountController{
         return this.getService().enable(id);
     }
 
+
 }

+ 22 - 0
src/main/java/com/dk/mdm/controller/mst/SupplierController.java

@@ -73,6 +73,28 @@ public class SupplierController{
     }
 
     /**
+     * @desc : 停用
+     * @author : songy
+     * @date : 2023/2/29 10:34
+     */
+    @ApiOperation(value = "停用", notes = "停用")
+    @PostMapping("disable/{id}")
+    public ResponseResultVO<Boolean> disable(@PathVariable String id) {
+        return this.getService().disable(id);
+    }
+
+    /**
+     * @desc : 启用
+     * @author : songy
+     * @date : 2023/2/29 10:34
+     */
+    @ApiOperation(value = "启用", notes = "启用")
+    @PostMapping("enable/{id}")
+    public ResponseResultVO<Boolean> enable(@PathVariable String id) {
+        return this.getService().enable(id);
+    }
+
+    /**
      * @desc : 通过ID查询
      * @author : 王英杰
      * @date : 2023/1/9 10:41

+ 1 - 2
src/main/java/com/dk/mdm/controller/sale/OutReturnController.java

@@ -1,7 +1,6 @@
 package com.dk.mdm.controller.sale;
 
 import com.dk.mdm.model.pojo.sale.OutReturn;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +10,7 @@ import com.dk.mdm.service.sale.OutReturnService;
 
 @Api(tags = "出库退货API接口")
 @RestController
-@RequestMapping("/outReturn")
+@RequestMapping("/sale/outReturn")
 public class OutReturnController{
 
     public BaseService<OutReturn> getService() {

+ 1 - 2
src/main/java/com/dk/mdm/controller/sale/OutReturnItemController.java

@@ -1,7 +1,6 @@
 package com.dk.mdm.controller.sale;
 
 import com.dk.mdm.model.pojo.sale.OutReturnItem;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +10,7 @@ import com.dk.mdm.service.sale.OutReturnItemService;
 
 @Api(tags = "出库退货明细API接口")
 @RestController
-@RequestMapping("/outReturnItem")
+@RequestMapping("/sale/outReturnItem")
 public class OutReturnItemController{
 
     public BaseService<OutReturnItem> getService() {

+ 87 - 0
src/main/java/com/dk/mdm/controller/wxapi/basic/WechatPayController.java

@@ -0,0 +1,87 @@
+package com.dk.mdm.controller.wxapi.basic;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.service.wxapi.basic.WechatPayService;
+import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/**
+ * @author : admin
+ * @desc : 微信支付的接口
+ * @date : 2024/2/22 17:21
+ */
+@Api(tags = "微信支付的接口")
+@RestController
+@RequestMapping("/wxapi/basic/wechat/pay")
+@Slf4j
+public class WechatPayController {
+    private ExecutorService executorService = Executors.newFixedThreadPool(20);
+
+    @Autowired
+    private WechatPayService wechatPayService;
+
+    /**
+     * 商户 下单选取旗舰版或专业版的订单
+     *
+     * @param paymentSn
+     * @return
+     * @throws WxPayException
+     */
+    @ApiOperation(value = "下单选取旗舰版或专业版的订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "openId", value = "openId"),
+            @ApiImplicitParam(name = "paymentSn", value = "支付单号")
+    })
+    @PostMapping("/create_order/{openId}/{paymentSn}")
+    public ResponseResultVO createOrderMiniPlat(@PathVariable String paymentSn, @PathVariable String openId)
+            throws WxPayException {
+        return wechatPayService.createOrderMiniPlat(paymentSn, openId);
+    }
+
+    /**
+     * @desc : 微信支付的回调
+     * @author : 姜永辉
+     * @date : 2024/03/06 11:20
+     */
+    @PostMapping("/notify/order/{appId}")
+    public String parseOrderNotifyResult(@PathVariable(value = "appId") String appId, @RequestBody String xmlData)
+            throws WxPayException {
+        WxPayService wxPayService = wechatPayService.getWxPayService();
+        final WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
+        // 另起线程处理业务
+        executorService.execute(new Runnable() {
+            @Override
+            public void run() {
+                String resultCode = notifyResult.getResultCode();
+                // 支付成功
+                if (resultCode.equals("SUCCESS")) {
+                    // 处理支付成功逻辑
+                    try {
+                        wechatPayService.notifyWechatPay(notifyResult);
+                    } catch (Exception e) {
+                        log.error("微信回调业务处理报错,params:" + notifyResult, e);
+                    }
+                } else {
+                    log.error("没有处理微信回调业务,交易状态:{},params:{}", resultCode, JSONObject.toJSON(notifyResult));
+                }
+            }
+        });
+        return WxPayNotifyResponse.success("成功");
+    }
+
+
+}

+ 56 - 0
src/main/java/com/dk/mdm/infrastructure/config/WechatPayConfigInfo.java

@@ -0,0 +1,56 @@
+package com.dk.mdm.infrastructure.config;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author : aamin
+ * @desc : 微信支付配置信息
+ * @date : 2022-7-7 19:49
+ */
+@Getter
+@Configuration
+public class WechatPayConfigInfo {
+
+    /**
+     * 小程序appid
+     */
+    @Value("${wx.pay.appId}")
+    private String appId;
+
+    /**
+     * 安全码
+     */
+    @Value("${wx.pay.appSecret}")
+    private String appSecret;
+
+    /**
+     * 支付商户号
+     */
+    @Value("${wx.pay.mchId}")
+    private String mchId;
+
+    /**
+     * 支付密钥
+     */
+    @Value("${wx.pay.mchKey}")
+    private String mchKey;
+
+    /**
+     * 证书路径
+     */
+    @Value("${wx.pay.keyPath}")
+    private String keyPath;
+
+
+    /**
+     * 小程序支付的回调接口地址
+     */
+    @Value("${wx.pay.wechatNotifyUrl}")
+    private String wechatNotifyUrl;
+
+
+}

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/OutboundConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.Outbound;
+import com.dk.mdm.model.vo.ivt.OutboundVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : Outbound转换类
+ * @author : 付斌
+ * @date   : 2024-02-28 10:18
+ */
+@Mapper(componentModel = "spring")
+public interface OutboundConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 付斌
+     * @date   : 2024-02-28 15:26
+     */
+    Outbound convertToPo(OutboundVO outboundVO);
+}

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/OutboundItemConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.OutboundItem;
+import com.dk.mdm.model.vo.ivt.OutboundItemVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : OutboundItem转换类
+ * @author : 付斌
+ * @date   : 2024-02-28 10:18
+ */
+@Mapper(componentModel = "spring")
+public interface OutboundItemConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 付斌
+     * @date   : 2024-02-28 15:25
+     */
+    OutboundItem convertToPo(OutboundItemVO outboundVO);
+}

+ 14 - 0
src/main/java/com/dk/mdm/mapper/common/CommonMapper.java

@@ -1067,4 +1067,18 @@ public interface CommonMapper extends BaseMapper<Map<String, Object>> {
      * @date : 2024-03-05 10:52
      */
     Long getInventoryCountByPage(Map param);
+
+    /**
+     * @desc   : 供应商类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:45
+     */
+    List<Map<String, Object>> getSupType(Map param);
+
+    /**
+     * @desc   : 供应商服务类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:45
+     */
+    List<Map<String, Object>> getServiceCategories(Map param);
 }

+ 32 - 32
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -2625,37 +2625,6 @@
         </if>
     </select>
 
-    <!--获取仓库-->
-    <select id="getWarehouseByPage" resultType="java.util.Map">
-        SELECT mtw.wh_id as "whId",sys.f_code_name(mtw.wh_code,mtw.wh_name) AS "whCodeName"
-        FROM mst.t_warehouse mtw left join core.t_user ctu on ctu.user_id = mtw.op_create_user_id
-        WHERE mtw.fty_id = #{ftyId}
-        and mtw.flg_valid
-        <if test="whCode!=null and whCode!=''">
-            and position(#{whCode} in mtw.wh_code) > 0
-        </if>
-        <if test="whName!=null and whName!=''">
-            and position(#{warehouseName} in mtw.wh_name) > 0
-        </if>
-        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
-            limit #{end} offset #{start}
-        </if>
-    </select>
-
-    <!--获取仓库个数-->
-    <select id="countWarehouseByPage" resultType="Long">
-        select count(1)
-        from mst.t_warehouse mtw
-        WHERE mtw.fty_id = #{ftyId}
-        and mtw.flg_valid
-        <if test="whCode!=null and whCode!=''">
-            and position(#{whCode} in mtw.wh_code) > 0
-        </if>
-        <if test="whName!=null and whName!=''">
-            and position(#{warehouseName} in mtw.wh_name) > 0
-        </if>
-    </select>
-
     <!--获取仓位-->
     <select id="getWarehousePlaceByPage" resultType="java.util.Map">
         SELECT mtwp.place_id as "placeId", mtwp.place_name as "placeName",
@@ -3206,7 +3175,7 @@
 
     <!-- 查询库存 -->
     <select id="getInventory" resultType="java.util.Map">
-        select tmgs.sku_id            as "skuId",
+        select tpi.sku_id            as "skuId",
                tmgs.sku_code          as "skuCode",
                tmgs.sku_name          as "skuName",
                tmgs.sku_model         as "skuModel",
@@ -3242,6 +3211,12 @@
                  left join dkic_b.t_mst_unit as tmgu on tmgs.unit_id = tmgu.unit_id
         where tpi.flg_valid
           AND tpi.cp_id = #{cpId}
+        <if test="skuId != null">
+            AND tpi.sku_id = #{skuId} ::uuid
+        </if>
+        <if test="nonStdCode != null">
+            AND tpi.non_std_code = #{nonStdCode}
+        </if>
         <if test="skuCode != null">
             AND tmgs.sku_code = #{skuCode}
         </if>
@@ -3262,6 +3237,12 @@
                 inner join dkic_b.t_mst_goods_sku as tmgs on tmgs.sku_id = tpi.sku_id
         where tpi.flg_valid
           AND tpi.cp_id = #{cpId}
+        <if test="skuId != null">
+            AND tpi.sku_id = #{skuId} ::uuid
+        </if>
+        <if test="nonStdCode != null">
+            AND tpi.non_std_code = #{nonStdCode}
+        </if>
         <if test="skuCode != null">
             AND tmgs.sku_code = #{skuCode}
         </if>
@@ -3272,4 +3253,23 @@
             AND tmgs.wh_name = #{whName}
         </if>
     </select>
+
+    <!--供应商类别 -->
+    <select id="getSupType" resultType="java.util.Map">
+        select sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' )AS name, tdk.kind_code as code
+        from sys.t_data_kind tdk
+        where tdk.flg_valid
+          and tdk.kind_type = '供应商类别'
+        order by tdk.display_no
+    </select>
+
+    <!--供应商服务类别 -->
+    <select id="getServiceCategories" resultType="java.util.Map">
+        select sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' ) AS name, tdk.kind_code as code
+        from sys.t_data_kind tdk
+        where tdk.flg_valid
+          and tdk.kind_type = '服务类别'
+        order by tdk.display_no
+    </select>
+
 </mapper>

+ 17 - 1
src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.java

@@ -2,13 +2,29 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.OutboundItem;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.ivt.OutboundItemQuery;
+import com.dk.mdm.model.response.ivt.OutboundItemResponse;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
 *  出库明细 Mapper
 */
 @Repository
 public interface OutboundItemMapper extends BaseMapper<OutboundItem>{
-	
+    /**
+     * @desc   : 根据条件进行查询
+     * @author : 付斌
+     * @date   : 2024-02-28 10:18
+     */
+    List<OutboundItemResponse> selectByCond(OutboundItemQuery orderQuery);
+
+    /**
+     * @desc   : 根据条件进行查询(数量)
+     * @author : 付斌
+     * @date   : 2024-02-28 10:19
+     */
+    Long countByCond(OutboundItemQuery orderQuery);
 }
 

+ 7 - 1
src/main/java/com/dk/mdm/mapper/ivt/OutboundMapper.java

@@ -2,6 +2,7 @@ package com.dk.mdm.mapper.ivt;
 
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -9,6 +10,11 @@ import org.springframework.stereotype.Repository;
 */
 @Repository
 public interface OutboundMapper extends BaseMapper<Outbound>{
-	
+    /**
+     * @desc   : 根据Id进行查询
+     * @author : 付斌
+     * @date   : 2024-03-03 9:25
+     */
+    OutboundResponse selectById(String id);
 }
 

+ 20 - 2
src/main/java/com/dk/mdm/mapper/mst/GoodsSkuMapper.xml

@@ -122,7 +122,16 @@
             <if test="cpId != null">
                 AND tmgs.cp_id = #{cpId}
             </if>
-
+            <if test="brandIds != null">
+                AND   EXISTS (
+                SELECT 1
+                FROM unnest(string_to_array(#{brandIds}, ',')) AS brand_uuid
+                WHERE brand_uuid::uuid = tmgs.brand_id
+                )
+            </if>
+            <if test="searchText !=null">
+                AND ( tmgs.sku_name LIKE concat('%', #{searchText}, '%')
+            </if>
         </where>
     </sql>
 
@@ -138,11 +147,20 @@
     <select id="selectByCond" resultMap="BaseResultMapResponse">
         SELECT
         <include refid="Base_Column_List_JOIN"/>
-        ,tmgb.brand_name AS "brandName",tmgsr.series_name AS "seriesName"
+        ,tmgb.brand_name AS "brandName",tmgsr.series_name AS "seriesName",tpi.usable_qty AS "usableQty"
         FROM dkic_b.t_mst_goods_sku  tmgs
         LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id = tmgs.brand_id
         LEFT JOIN dkic_b.t_mst_goods_series tmgsr ON tmgsr.series_id = tmgs.series_id
+        LEFT JOIN dkic_b.t_psi_inventory tpi ON tpi.sku_id = tmgs.sku_id
         <include refid="Condition"/>
+        ORDER BY CASE
+        WHEN #{sort}  = 2 THEN tpi.usable_qty
+        ELSE NULL
+        END ASC,
+        CASE
+        WHEN #{sort} != 2 THEN tpi.usable_qty
+        ELSE NULL
+        END DESC
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>

+ 4 - 4
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.java

@@ -16,28 +16,28 @@ import java.util.List;
 public interface MoneyAccountMapper extends BaseMapper<MoneyAccount>{
     /**
      * @desc   : 根据条件进行查询
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024/3/1 10:42
      */
     List<MoneyAccountResponse> selectByCond(MoneyAccountQuery moneyAccountQuery);
 
     /**
      * @desc   : 根据条件进行查询(数量)
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024/3/1 10:42
      */
     Long countByCond(MoneyAccountQuery moneyAccountQuery);
 
    /**
     * @desc   : 查询
-    * @author : songy
+    * @author : 宋扬
     * @date   : 2024/3/2 16:19
     */
     Integer selectDisplayNo(MoneyAccountQuery moneyAccountQuery);
 
     /**
      * @desc   : 根据Id进行查询
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024-03-03 9:25
      */
     MoneyAccountResponse selectById(String id);

+ 4 - 27
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml

@@ -34,29 +34,17 @@
     <sql id="Condition">
         <where>
             <if test="macCode != null and macCode != ''">
-                AND ma.mac_code = #{macCode}
+                AND ma.mac_code LIKE concat('%',my_ex.likequery(#{macCode}),'%')
             </if>
             <if test="macName != null and macName != ''">
-                AND ma.mac_name = #{macName}
+                AND ma.mac_name LIKE concat('%',my_ex.likequery(#{macName}),'%')
             </if>
             <if test="remarks != null and remarks != ''">
-                AND ma.remarks = #{remarks}
+                AND ma.remarks = LIKE concat('%',my_ex.likequery(#{remarks}),'%')
             </if>
             <if test="cpId != null">
                 AND ma.cp_id = #{cpId}
             </if>
-            <if test="opCreateTime != null">
-                AND ma.op_create_time = #{opCreateTime}
-            </if>
-            <if test="opCreateUserId != null and opCreateUserId != ''">
-                AND ma.op_create_user_id = #{opCreateUserId}
-            </if>
-            <if test="opUpdateTime != null">
-                AND ma.op_update_time = #{opUpdateTime}
-            </if>
-            <if test="opUpdateUserId != null and opUpdateUserId != ''">
-                AND ma.op_update_user_id = #{opUpdateUserId}
-            </if>
             <if test="opTimestamp != null">
                 AND ma.op_timestamp = #{opTimestamp}
             </if>
@@ -69,14 +57,6 @@
         </where>
     </sql>
 
-    <sql id="idsForeach">
-        <!-- 根据主键macId批量操作 -->
-        WHERE mac_id in
-        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </sql>
-
     <!-- 查询表t_mst_money_account,(条件查询+分页)列表 -->
     <select id="selectByCond" resultMap="BaseResultMap">
         SELECT ma.mac_Type,ma.mac_code,ma.mac_name,ma.remarks
@@ -86,9 +66,6 @@
         FROM dkic_b.t_mst_money_account ma
         left join dkic_b.t_mst_dictionary_data dd on ma.mac_type=dd.data_id
         <include refid="Condition"/>
-        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
-            limit #{end} offset #{start}
-        </if>
     </select>
 
     <!-- 查询表t_mst_money_account,(条件查询)个数 -->
@@ -103,7 +80,7 @@
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM t_mst_money_account
+        FROM dkic_b.t_mst_money_account
         WHERE mac_id = #{macId}::uuid
     </select>
 

+ 4 - 4
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml

@@ -69,16 +69,16 @@
                 AND t.hr_status = #{hrStatus}
             </if>
             <if test="roleIds != null and roleIds.size()>0">
-                AND t.role_ids =
-                any(#{roleIds, typeHandler=StringListTypeHandler})
+                AND t.role_ids &amp;&amp;
+                #{roleIds, typeHandler=UuidListTypeHandler}
             </if>
             <if test="orgIds != null and orgIds.size()>0">
                 AND t.org_id =
                 any(#{orgIds, typeHandler=UuidListTypeHandler})
             </if>
             <if test="searchText !=null">
-                AND ( t.staff_name LIKE concat('%', #{searchText}, '%')
-                or t.staff_phone LIKE concat('%', #{searchText}, '%'))
+                AND ( t.staff_name LIKE concat('%', my_ex.likequery(#{searchText}), '%')
+                or t.staff_phone LIKE concat('%', my_ex.likequery(#{searchText}), '%'))
             </if>
         </where>
     </sql>

+ 1 - 1
src/main/java/com/dk/mdm/mapper/mst/SupplierMapper.java

@@ -48,7 +48,7 @@ public interface SupplierMapper extends BaseMapper<Supplier>{
      * @author : 王英杰
      * @date   : 2024/2/29 17:49
      */
-    int   batchDelete (Supplier supplierVo);
+    int   batchDeleteBrand (List<String> supIdList );
     /**
      * @desc   : 自动生id
      * @author : 王英杰

+ 20 - 9
src/main/java/com/dk/mdm/mapper/mst/SupplierMapper.xml

@@ -178,7 +178,7 @@
     <select id="selectByCond" resultMap="BaseResultMap">
         SELECT
         <include refid="msl_Base_Column_List"/>
-        ,tms.staff_name,sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' )AS  "supTypeName"
+        ,tms.staff_name,sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' ) AS  "supTypeName"
           ,
         (
         SELECT
@@ -197,6 +197,7 @@
         tsmb.sup_id = msl.sup_id
         ) AS "brandName"
         ,tmo.org_name
+        ,tmo.org_code
         FROM dkic_b.t_mst_supplier msl
         LEFT JOIN dkic_b.t_mst_staff  tms   ON tms.staff_id = msl.staff_id
         LEFT JOIN dkic_b.t_mst_org  tmo   ON tmo.org_id = msl.org_id
@@ -220,27 +221,37 @@
     <select id="selectById" resultMap="BaseResultMap">
         SELECT
         <include refid="msl_Base_Column_List"/>
-       , (SELECT COALESCE
-        ( array_to_string( ARRAY_AGG ( tsm.brand_id ), ',' ), '' )
+        ,tms.staff_name,sys.f_get_name_i18n(tdk.kind_name_i18n,'zh_CN' )AS  "supTypeName"
+        ,
+        (
+        SELECT
+        string_agg ( sys.f_get_name_i18n ( tdk1.kind_name_i18n, 'zh_CN' ), ',' )
+        FROM
+        sys.t_data_kind AS tdk1
+        WHERE
+        tdk1.kind_code = ANY ( msl.service_categories )
+        ) AS "serviceCategoriesNames",
+        (SELECT COALESCE
+        ( array_to_string( ARRAY_AGG ( tsm.brand_name ), ',' ), '' )
         FROM
         dkic_b.t_mst_supplier_brand tsmb
         LEFT JOIN dkic_b.t_mst_goods_brand tsm ON tsm.brand_id = tsmb.brand_id
         WHERE
         tsmb.sup_id = msl.sup_id
-        ) AS "brandIds",
+        ) AS "brandNames"
+        ,tmo.org_name,
         (SELECT COALESCE
-        ( array_to_string( ARRAY_AGG ( tsm.brand_name ), ',' ), '' )
+        ( array_to_string( ARRAY_AGG ( tsm.brand_id ), ',' ), '' )
         FROM
         dkic_b.t_mst_supplier_brand tsmb
         LEFT JOIN dkic_b.t_mst_goods_brand tsm ON tsm.brand_id = tsmb.brand_id
         WHERE
         tsmb.sup_id = msl.sup_id
-        ) AS "brandNames"
-        ,tms.staff_name
-        ,tmo.org_name
+        ) AS "brandIds"
         FROM dkic_b.t_mst_supplier msl
         LEFT JOIN dkic_b.t_mst_staff  tms   ON tms.staff_id = msl.staff_id
         LEFT JOIN dkic_b.t_mst_org  tmo   ON tmo.org_id = msl.org_id
+        LEFT JOIN sys.t_data_kind tdk   ON tdk.kind_code = msl.sup_type
         WHERE msl.sup_id = #{supId}::uuid
     </select>
 
@@ -335,7 +346,7 @@
                 #{brandId}::uuid
             )
     </insert>
-    <delete id="batchDelete">
+    <delete id="batchDeleteBrand">
         DELETE FROM dkic_b.t_mst_supplier_brand
         WHERE sup_id =  #{supId}::uuid;
     </delete>

+ 3 - 3
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -256,7 +256,7 @@
     <sql id="Condition_1">
         <where>
             <if test="purNo != null and purNo != ''">
-                AND tpp.pur_no = #{purNo}
+                AND tpp.pur_no like concat('%', my_ex.likequery(#{purNo}) , '%')
             </if>
             <if test="purType != null and purType != ''">
                 AND tpp.pur_type = #{purType}
@@ -271,10 +271,10 @@
                 AND tpp.sup_id = #{supId}::uuid
             </if>
             <if test="contactName != null and contactName != ''">
-                AND tpp.contact_name = #{contactName}
+                AND tpp.contact_name like concat('%', my_ex.likequery(#{contactName}) , '%')
             </if>
             <if test="contactPhone != null and contactPhone != ''">
-                AND tpp.contact_phone = #{contactPhone}
+                AND tpp.contact_phone like concat('%', my_ex.likequery(#{contactPhone}) , '%')
             </if>
             <if test="pickupDate != null">
                 AND tpp.pickup_date = #{pickupDate}

+ 10 - 1
src/main/java/com/dk/mdm/model/query/mst/GoodsSkuQuery.java

@@ -91,7 +91,7 @@ public class GoodsSkuQuery extends PageInfo<GoodsSku> implements Serializable {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String categoryId;
 
-
+    private String searchText;
     /**
      * 计量单位
      */
@@ -263,6 +263,15 @@ public class GoodsSkuQuery extends PageInfo<GoodsSku> implements Serializable {
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "品牌")
+    private String brandIds;
+
+
 
     /*
      * 相关属性

+ 2 - 2
src/main/java/com/dk/mdm/model/query/mst/MoneyAccountQuery.java

@@ -196,7 +196,7 @@ public class MoneyAccountQuery extends PageInfo<MoneyAccountQuery> implements Se
 
     /**
      * @desc   : 有效标识List
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024/3/2 9:31
      */
     @Excel(name = "有效标识 (1:正常 0:停用)")
@@ -206,7 +206,7 @@ public class MoneyAccountQuery extends PageInfo<MoneyAccountQuery> implements Se
 
     /**
      * @desc   : 账户类别list
-     * @author : songy
+     * @author : 宋扬
      * @date   : 2024/3/2 9:27
      */
     @Excel(name = "账户类别 (【数据字典】)")

+ 2 - 2
src/main/java/com/dk/mdm/model/query/mst/StaffQuery.java

@@ -221,8 +221,8 @@ public class StaffQuery extends PageInfo<StaffQuery> implements Serializable {
      * @desc   : 角色list
      */
     @ApiModelProperty(value = "员工状态list")
-    @TableField(typeHandler = UuidListTypeHandler.class)
-    private String roleIds;
+    @TableField(exist = false)
+    private List<String> roleIds;
 
     /**
      * @desc   : 组织部门list

+ 9 - 0
src/main/java/com/dk/mdm/model/query/mst/SupplierQuery.java

@@ -116,6 +116,15 @@ import java.time.LocalDateTime;
 
 
         /**
+         * @desc   : 有效标识List
+         * @author : songy
+         * @date   : 2024/3/2 9:31
+         */
+        @Excel(name = "有效标识 (1:正常 0:停用)")
+        @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+        private List<Boolean> flgValidList;
+
+        /**
          * 备注
          */
         @Excel(name = "备注")

+ 6 - 0
src/main/java/com/dk/mdm/model/response/mst/GoodsSkuResponse.java

@@ -279,6 +279,12 @@ public class GoodsSkuResponse implements Serializable {
     @TableField(exist = false)
     @ApiModelProperty(value = "辅助单位")
     private String subUnitName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "可售量")
+    private Integer usableQty;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 12 - 5
src/main/java/com/dk/mdm/model/response/mst/SpplierResponse.java

@@ -73,7 +73,6 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
     @ApiModelProperty(value = "供应商类别 (【系统字典】)")
     private String supType;
 
-
     /**
      * 联系人
      */
@@ -113,8 +112,9 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
     @ApiModelProperty(value = "业务员")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String staffName;
+
     /**
-     * 业务员
+     * 组织机构
      */
     @Excel(name = "组织机构")
     @ApiModelProperty(value = "组织机构")
@@ -122,6 +122,14 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
     private String orgName;
 
     /**
+     * 组织机构编码
+     */
+    @Excel(name = "组织机构")
+    @ApiModelProperty(value = "组织机构")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String orgCode;
+
+    /**
      * 服务类别 (【系统字典】)
      */
     @Excel(name = "服务类别 (【系统字典】)")
@@ -130,7 +138,6 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
     private List<String> serviceCategories;
 
 
-
     /**
      * 备注
      */
@@ -230,8 +237,8 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
     @ApiModelProperty(value = "剩余应收付")
     private String sumResidue;
 
-    @TableField(exist = false)
     @ApiModelProperty(value = "供应品牌")
+    @TableField(typeHandler = UuidListTypeHandler.class)
     private String brandIds;
 
 
@@ -245,7 +252,7 @@ public class SpplierResponse extends PageInfo<SpplierResponse> implements Serial
 
     @TableField(exist = false)
     @ApiModelProperty(value = "供应商类别")
-    private String serviceCategoriesName;
+    private String serviceCategoriesNames;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 6 - 0
src/main/java/com/dk/mdm/model/vo/ivt/OutboundVO.java

@@ -21,6 +21,7 @@ import lombok.experimental.Accessors;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  出库单
@@ -316,6 +317,11 @@ public class OutboundVO extends PageInfo<OutboundVO> implements Serializable {
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
+    @ApiModelProperty(value = "出库明细")
+    private List<OutboundItemVO> outboundItemList;
+
+    @ApiModelProperty(value = "删除明细")
+    private List<OutboundItemVO> deleteItemList;
 
     /*
      * 相关属性

+ 22 - 0
src/main/java/com/dk/mdm/service/common/CommonService.java

@@ -1540,4 +1540,26 @@ public class CommonService extends BaseService<Map<String, Object>> {
         return super.mergeListWithCount(param, commonMapper.getInventory(param),
                 commonMapper.getInventoryCountByPage(param));
     }
+
+    /**
+     * @desc   : 供应商类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:41
+     */
+    public ResponseResultVO<List<Map<String, Object>>> getSupType(Map<String, Object> param) {
+        // 获取系统基础数据
+        List<Map<String, Object>> list = commonMapper.getSupType(param);
+        return ResponseResultUtil.success(list);
+    }
+
+    /**
+     * @desc   : 供应商服务类别
+     * @author : 宋扬
+     * @date   : 2024/3/6 10:43
+     */
+    public ResponseResultVO<List<Map<String, Object>>> getServiceCategories(Map<String, Object> param) {
+        // 获取系统基础数据
+        List<Map<String, Object>> list = commonMapper.getServiceCategories(param);
+        return ResponseResultUtil.success(list);
+    }
 }

+ 110 - 0
src/main/java/com/dk/mdm/service/ivt/OutboundService.java

@@ -1,13 +1,36 @@
 package com.dk.mdm.service.ivt;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.response.ResponseCodeEnum;
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.infrastructure.convert.ivt.OutboundConvert;
+import com.dk.mdm.infrastructure.convert.ivt.OutboundItemConvert;
+import com.dk.mdm.mapper.ivt.OutboundItemMapper;
 import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.mdm.mapper.ivt.OutboundMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.ivt.OutboundItem;
+import com.dk.mdm.model.query.ivt.OutboundItemQuery;
+import com.dk.mdm.model.response.ivt.OutboundItemResponse;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
+import com.dk.mdm.model.vo.ivt.OutboundItemVO;
+import com.dk.mdm.model.vo.ivt.OutboundVO;
+import com.dk.mdm.service.common.CommonService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
 @Service
 @Transactional
 public class OutboundService extends BaseService<Outbound> {
@@ -20,4 +43,91 @@ public class OutboundService extends BaseService<Outbound> {
 	@Autowired
 	private OutboundMapper outboundMapper;
 
+	@Autowired
+	private OutboundItemService outboundItemService;
+
+	@Autowired
+	private OutboundItemMapper outboundItemMapper;
+
+	@Autowired
+	private CommonService commonService;
+
+	@Autowired
+	private OutboundConvert outboundConvert;
+
+	@Autowired
+	private OutboundItemConvert outboundItemConvert;
+
+	/**
+	 * @desc : 新建方法
+	 * @author : 付斌
+	 * @date : 2023/1/9 10:49
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<?> insert(OutboundVO outboundVO) {
+
+		// 获取单号
+		Map<String , Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(),false);
+		outboundVO.setOutId(codeMap.get("outId").toString()).setOutNo(codeMap.get("outNote").toString()).setOutType(Constant.OutType.SALE.getName());
+		// 转化实体
+		Outbound outbound = outboundConvert.convertToPo(outboundVO);
+		// 总单保存
+		super.insert(outbound);
+
+		// 明细保存
+		if (outboundVO.getOutboundItemList() != null && outboundVO.getOutboundItemList().size() > 0) {
+			for (OutboundItemVO outboundItemVO : outboundVO.getOutboundItemList()) {
+				OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+				outboundItem.setOutId(outbound.getOutId()).setCpId(outbound.getCpId()).setOutStatus(Constant.OutStatus.CHUKUZHONG.getName());
+				outboundItemMapper.insert(outboundItem);
+			}
+		}
+		return ResponseResultUtil.success();
+	}
+
+	/**
+	 * @desc   : 获取订单信息(编辑用)
+	 * @author : 付斌
+	 * @date   : 2024-03-02 17:27
+	 */
+	public ResponseResultVO<?> getOutboundForUpdate(String id) {
+		Map<String, Object> outboundInfo = new HashMap<>();
+		OutboundResponse outboundResponse = outboundMapper.selectById(id);
+		outboundInfo.put("outbound", outboundResponse);
+
+		// 商品明细
+		List<OutboundItemResponse> outboundItemResponse = outboundItemMapper.selectByCond(new OutboundItemQuery().setOutId(id));
+		outboundInfo.put("outboundItem", outboundItemResponse);
+		return ResponseResultUtil.success(outboundInfo);
+	}
+
+	/**
+	 * @desc : 编辑方法
+	 * @author : 付斌
+	 * @date : 2023/1/9 10:49
+	 */
+	@Transactional(
+			rollbackFor = {Exception.class}
+	)
+	public ResponseResultVO<Boolean> update(OutboundVO outboundVO) {
+		// 转化实体
+		Outbound outbound = outboundConvert.convertToPo(outboundVO);
+
+		// 编辑的
+		List<OutboundItemVO> editOutboundItemVOList = outboundVO.getOutboundItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+		for (OutboundItemVO outboundItemVO : editOutboundItemVOList) {
+			// 商品数量不能小于出库中数量
+			if(outboundItemVO.getItemQty().compareTo(outboundItemVO.getOutingQty()) == -1){
+				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+			} else {
+				OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
+				outboundItemService.updateByUuid(outboundItem);
+			}
+		}
+
+		return ResponseResultUtil.success(super.update(outbound, new UpdateWrapper<Outbound>().lambda().eq(Outbound::getOutId,
+				UUID.fromString(outbound.getOutId()))));
+	}
 }

+ 4 - 4
src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java

@@ -42,7 +42,7 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 
 	/**
 	 * @desc   : 重写主键
-	 * @author : songy
+	 * @author : 宋扬
 	 * @date   : 2023/1/9 10:39
 	 */
 	@Override
@@ -53,7 +53,7 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 
 	/**
 	 * @desc   : 条件查询
-	 * @author : songy
+	 * @author : 宋扬
 	 * @date   : 2023/2/29 10:40
 	 */
 	@Pagination
@@ -65,7 +65,7 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 
 	/**
 	 * @desc : 保存方法
-	 * @author : songy
+	 * @author : 宋扬
 	 * @date : 2023/2/29 10:49
 	 */
 	@Transactional(
@@ -90,7 +90,7 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 
 	/**
 	 * @desc : 编辑方法
-	 * @author : songy
+	 * @author : 宋扬
 	 * @date : 2023/2/29 10:49
 	 */
 	@Transactional(

+ 13 - 4
src/main/java/com/dk/mdm/service/mst/SupplierService.java

@@ -127,10 +127,19 @@ public class SupplierService extends BaseService<Supplier> {
         Supplier supplier = supplierConvert.convertToPo(supplierVo);
         try {
           super.updateByUuid(supplier);// 先更新的供应商表
-            supplierMapper.batchDelete(supplier);//批量删除供应商对应的供应商品牌
-            if (supplierVo.getBrandId() != null) {  //如果有 商品品牌
-                // 设置supplierVo的supplierId
-                supplierMapper.insertSupplierBrand(supplier); // 向供应商品牌表插入数据
+          supplierMapper.batchDeleteBrand(supplier.getBrandIds());//批量删除供应商对应的供应商品牌
+            if ((supplier.getBrandIds() != null) && (supplier.getBrandIds().size()>0)) {  //如果有 商品品牌 一起插入品牌
+                List<Supplier>  Supplierlst   = new ArrayList<>();
+                List<String> BrandIdList =  new ArrayList<>();
+                BrandIdList = supplier.getBrandIds();
+                Supplier supplier_center = null;
+                for (int i = 0;  i< BrandIdList.size();i++){
+                    supplier_center= new Supplier();
+                    supplier_center.setBrandId(BrandIdList.get(i));
+                    supplier_center.setSupId(supplier.getSupId());
+                    Supplierlst.add(supplier_center);
+                }
+                supplierMapper.insertSupplierBrandtBatch(Supplierlst); // 向供应商品牌表插入数据
             }
           return ResponseResultUtil.success();
         } catch (Exception e) {

+ 138 - 0
src/main/java/com/dk/mdm/service/wxapi/basic/WechatPayService.java

@@ -0,0 +1,138 @@
+package com.dk.mdm.service.wxapi.basic;
+
+import com.dk.common.response.ResponseResultUtil;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.common.util.*;
+import com.dk.mdm.infrastructure.config.WechatPayConfigInfo;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
+import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
+import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+import java.math.BigDecimal;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 微信支付服务
+ *
+ * @author 姜永辉
+ * @since 20223-07-01 09:41:05
+ */
+@Service("wechatPayService")
+@Slf4j
+public class WechatPayService {
+    @Autowired
+    private WechatPayConfigInfo wechatPayConfigInfo;
+
+    /**
+     * 商户 下单选取旗舰版或专业版的订单
+     *
+     * @param paymentSn
+     * @return
+     * @throws WxPayException
+     */
+    public ResponseResultVO createOrderMiniPlat(String paymentSn, String openId) throws WxPayException {
+        try {
+            // 获取单据的金额
+            BigDecimal payFee = BigDecimal.ONE;
+
+
+            WxPayService wxPayService = this.getWxPayService();
+            WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
+            orderRequest.setBody("");
+            orderRequest.setOutTradeNo(paymentSn);
+            orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(payFee.toString()));//元转成分
+            orderRequest.setOpenid(openId);
+            orderRequest.setSpbillCreateIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
+            orderRequest.setNotifyUrl(wechatPayConfigInfo.getWechatNotifyUrl() + "/" + wechatPayConfigInfo.getAppId());
+            orderRequest.setTradeType("JSAPI");
+            WxPayUnifiedOrderResult wxPayUnifiedOrderResult = wxPayService.unifiedOrder(orderRequest);
+            String prepay_id = wxPayUnifiedOrderResult.getPrepayId();
+            String timeStamp = new Date().getTime() + "";
+            String nonceStr = UUID.fastUUID().toString(true);
+            String pack = "prepay_id=" + prepay_id;
+            String signType = "MD5";
+            String paySign = "";
+            String sigmTemp = "appId=" + wxPayUnifiedOrderResult.getAppid() + "&nonceStr=" + nonceStr + "&package="
+                    + pack + "&signType=" + signType + "&timeStamp=" + timeStamp;
+            sigmTemp = sigmTemp + "&key=" + wechatPayConfigInfo.getMchKey();
+            paySign = Md5Utils.hash(sigmTemp);
+            Map<String, Object> params = new HashMap<String, Object>();
+            params.put("appId", wxPayUnifiedOrderResult.getAppid());
+            params.put("timeStamp", timeStamp);
+            params.put("nonceStr", nonceStr);
+            params.put("pack", pack);
+            params.put("signType", signType);
+            params.put("paySign", paySign);
+            return ResponseResultUtil.success(params);
+        } catch (Exception e) {
+            log.error("微信支付失败!支付单号:{},原因:{}", paymentSn, e.getMessage());
+            return ResponseResultUtil.error("支付失败,请稍后重试!");
+        }
+    }
+
+
+    /**
+     * @desc : 处理支付成功逻辑
+     * @author : 姜永辉
+     * @date : 2024/03/06 11:29
+     */
+    public ResponseResultVO notifyWechatPay(WxPayOrderNotifyResult info) {
+        //  判断支付金额是否一致
+//        ShopOrderPaymentDto sop = new ShopOrderPaymentDto();
+//        sop.setPaymentsn(info.getOutTradeNo());
+//        sop.setPaystatus(0L);
+//        ShopOrderPayment shopOrderPaymentReturn = shopOrderPaymentMapper.selectEntity(sop);
+//        log.info("从订单流水表没有查到数据----------" + info.getOutTradeNo());
+//        if (shopOrderPaymentReturn == null) {
+//            log.error("从订单流水表没有查到数据----------" + info.getOutTradeNo());
+//            return ResponseResultUtil.error("从订单流水表没有查到数据----------" + info.getOutTradeNo());
+//        }
+//        // //  230918  在生成 微信码时候插入 待支付的 数据
+//        BigDecimal payFee = new BigDecimal(info.getTotalFee()).divide(new BigDecimal(100), 2, RoundingMode.HALF_EVEN);
+//        log.info("微信扫码和插入待支付订单的钱不符-------" + shopOrderPaymentReturn.getAmount()
+//                + "--" + payFee);
+//        if (shopOrderPaymentReturn.getAmount().compareTo(payFee) != 0) {
+//            log.error("微信扫码和插入待支付订单的钱不符-------" + shopOrderPaymentReturn.getAmount()
+//                    + "--" + payFee);
+//            return CommonResult.fail("微信扫码和插入待支付订单的钱不符-------" + shopOrderPaymentReturn.getAmount()
+//                    + "--" + payFee);
+//
+//        }
+        //判断是否已经做支付处理
+//        log.info("判断是否已经做支付处理----------" + shopOrderPaymentReturn.getPaystatus().toString());
+
+        return ResponseResultUtil.success();
+    }
+
+    /**
+     * @desc : 获取商户配置信息
+     * @author : 姜永辉
+     * @date : 2023-08-02 17:30
+     */
+    public WxPayService getWxPayService() {
+        WxPayConfig payConfig = new WxPayConfig();
+        payConfig.setAppId(StringUtils.trimToNull(wechatPayConfigInfo.getAppId()));
+        payConfig.setMchId(StringUtils.trimToNull(wechatPayConfigInfo.getMchId()));
+        payConfig.setMchKey(StringUtils.trimToNull(wechatPayConfigInfo.getMchKey()));
+//        payConfig.setSubAppId(null);
+//        payConfig.setSubMchId(null);
+        payConfig.setKeyPath(StringUtils.trimToNull(wechatPayConfigInfo.getKeyPath()));
+        // 可以指定是否使用沙箱环境
+        payConfig.setUseSandboxEnv(false);
+        WxPayService wxPayService = new WxPayServiceImpl();
+        wxPayService.setConfig(payConfig);
+        return wxPayService;
+    }
+}

+ 14 - 0
src/main/resources/dev/bootstrap.yml

@@ -110,6 +110,20 @@ wx:
   edit_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit_corp_tag?access_token=
   #  删除企业客户标签
   del_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token=
+  # 支付的信息
+  pay:
+    mchId: XXXXXXXXXXx
+    # 小程序的appid
+    appId: wxe27c8f5249b7aeab
+    # 小程序的appSecret
+    appSecret: 9bd0efa102f148ff4ca09a1152310555
+    # 支付密钥
+    mchKey: 9bd0efa102f148ff4ca09a1152310555
+    # 证书路径
+    keyPath: /mnt/cert/2021/05/11/404727f0-e5be-424e-b009-59f1ec8d102e.p12
+    # 小程序支付的回调接口地址
+    wechatNotifyUrl: https://ibossmp.dongkesoft.com:7040/mdm-server/wxapi/basic/wechat/pay/notify/order
+
 
 dongke:
   base: