瀏覽代碼

feat(ProdIoPay): 更新出入库单付款数据功能开发

hejq 7 年之前
父節點
當前提交
2c8351d0a2

+ 33 - 1
db/ddl.sql

@@ -140,4 +140,36 @@ return 0;
 else
 return 1;
 end if;
-end
+end;
+
+-- date: 2019-01-03 13:40
+-- author: hejq
+-- content: 出入库单据添加字段收款金额,收款日期
+-- 采购验收单
+alter table `purc$acceptitem`
+  add column pai_payment double comment '付款金额',
+  add column pai_paydate datetime comment '付款日期';
+-- 采购验退单
+alter table `purc$returnitem`
+  add column pri_payment double comment '付款金额',
+  add column pri_paydate datetime comment '付款日期';
+-- 不良品入库单
+alter table `purc$badinitem`
+  add column pbi_payment double comment '付款金额',
+  add column pbi_paydate datetime comment '付款日期';
+-- 不良品出库单
+alter table `purc$badoutitem`
+  add column poi_payment double comment '付款金额',
+  add column poi_paydate datetime comment '付款日期';
+-- 委外验收单
+alter table `make$acceptitem`
+  add column mai_payment double comment '付款金额',
+  add column mai_paydate datetime comment '付款日期';
+-- 委外验退单
+alter table `make$returnitem`
+  add column mri_payment double comment '付款金额',
+  add column mri_paydate datetime comment '付款日期';
+-- 货款调账
+alter table `purc$apbilladjustment`
+  add column aa_payment double comment '付款金额',
+  add column aa_paydate datetime comment '付款日期';

+ 5 - 0
pom.xml

@@ -366,6 +366,11 @@
             <groupId>com.uas.dfs</groupId>
             <artifactId>dfs-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.20</version>
+        </dependency>
     </dependencies>
     <build>
         <finalName>platform-b2b</finalName>

+ 40 - 0
src/main/java/com/uas/platform/b2b/erp/controller/ProdIoPayController.java

@@ -0,0 +1,40 @@
+package com.uas.platform.b2b.erp.controller;
+
+import com.uas.platform.b2b.erp.model.ProdIoPay;
+import com.uas.platform.b2b.erp.service.ProdIoPayService;
+import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 出入库单支付
+ *
+ * @author hejq
+ * @date 2019-01-03 11:53
+ */
+@RestController
+@RequestMapping("/erp/prodIoPay")
+public class ProdIoPayController {
+
+    private final static ErpBufferedLogger LOGGER = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+
+    @Autowired
+    private ProdIoPayService payService;
+
+    /**
+     * 客户付款记录同步到B2B更新
+     *
+     * @param payloadList 付款数据
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    public void updateProdIoPay(@RequestBody List<ProdIoPay> payloadList) {
+        payService.saveAndUpdate(payloadList);
+    }
+
+}

+ 66 - 0
src/main/java/com/uas/platform/b2b/erp/model/ProdIoPay.java

@@ -0,0 +1,66 @@
+package com.uas.platform.b2b.erp.model;
+
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 出入库单付款信息
+ *
+ * @author hejq
+ * @date 2019-01-03 10:31
+ */
+@Data
+public class ProdIoPay {
+
+    /**
+     * 单据编号
+     */
+    private String piCode;
+
+    /**
+     * 单据类型
+     */
+    private String piClass;
+
+    /**
+     * 明细行号
+     */
+    private Short piDetNo;
+
+    /**
+     * 付款金额
+     */
+    private Double amount;
+
+    /**
+     * 付款日期
+     */
+    private Date inDate;
+
+    /**
+     * 上传状态
+     */
+    private String status;
+
+    /**
+     * 明细id
+     */
+    private Long pdId;
+
+    public static final String SALE_ACCEPT = "采购验收单";
+
+    public static final String SALE_RETURN = "采购验退单";
+
+    public static final String SALE_BAD_OUT = "不良品出库单";
+
+    public static final String SALE_BAD_IN = "不良品入库单";
+
+    public static final String MAKE_ACCEPT = "委外验收单";
+
+    public static final String MAKE_RETURN = "委外验退单";
+
+    public static final String ADJUSTMENT = "其它应付单";
+
+}

+ 21 - 0
src/main/java/com/uas/platform/b2b/erp/service/ProdIoPayService.java

@@ -0,0 +1,21 @@
+package com.uas.platform.b2b.erp.service;
+
+import com.uas.platform.b2b.erp.model.ProdIoPay;
+
+import java.util.List;
+
+/**
+ * 出库单付款金额
+ *
+ * @author hejq
+ * @date 2019-01-03 14:09
+ */
+public interface ProdIoPayService {
+
+    /**
+     * 更新出入库单付款金额
+     *
+     * @param payloadList 出入库单付款记录
+     */
+    void saveAndUpdate(List<ProdIoPay> payloadList);
+}

+ 115 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/ProdIoPayServiceImpl.java

@@ -0,0 +1,115 @@
+package com.uas.platform.b2b.erp.service.impl;
+
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.erp.model.ProdIoPay;
+import com.uas.platform.b2b.erp.service.ProdIoPayService;
+import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 出入库单付款金额
+ *
+ * @author hejq
+ * @date 2019-01-03 14:10
+ */
+@Service
+public class ProdIoPayServiceImpl implements ProdIoPayService {
+
+    @Autowired
+    private CommonDao commonDao;
+
+    /**
+     * 更新出入库单付款金额
+     *
+     * @param payList 出入库单付款记录
+     */
+    @Override
+    public void saveAndUpdate(List<ProdIoPay> payList) {
+        Set<String> classSet = payList.parallelStream().map(ProdIoPay::getPiClass).collect(Collectors.toSet());
+        List<String> sqlList = new ArrayList<>();
+        classSet.forEach(clazz -> {
+            List<ProdIoPay> filterPayList = payList.stream().filter(pay -> clazz.equals(pay.getPiClass())).collect(Collectors.toList());
+            Long enUU = SystemSession.getUser().getEnterprise().getUu();
+            if (clazz.equals(ProdIoPay.SALE_ACCEPT)) {
+                sqlList.addAll(updateSaleAccept(filterPayList, enUU));
+            } else if (clazz.equals(ProdIoPay.SALE_RETURN)) {
+                sqlList.addAll(updateSaleReturn(filterPayList, enUU));
+            } else if (clazz.equals(ProdIoPay.SALE_BAD_IN)) {
+                sqlList.addAll(updateSaleBadIn(filterPayList, enUU));
+            }
+        });
+    }
+
+    /**
+     * 更新不良品入库单付款相关
+     *
+     * @param payList 不良品入库单付款数据
+     * @param enUU 企业UU(客户方)
+     * @return sqlList
+     */
+    private List<String> updateSaleBadIn(List<ProdIoPay> payList, Long enUU) {
+        List<String> sqlList = new ArrayList<>();
+        payList.forEach(pay -> {
+            String sql = "update purc$badinitem" +
+                " right join purc$badin on pbi_pbid = pbi_id" +
+                " set pbi_payment = " + pay.getAmount() + "," +
+                " pbi_paydate = " + pay.getInDate() +
+                " where pb_enuu = " + enUU +
+                " and pb_code = '" + pay.getPiCode() + "'" +
+                " and pbi_number = " + pay.getPiDetNo();
+            sqlList.add(sql);
+        });
+        return sqlList;
+    }
+
+    /**
+     * 更新采购验退单付款相关
+     *
+     * @param payList 采购验退单付款数据
+     * @param enUU 企业UU(客户方)
+     * @return sqlList
+     */
+    private List<String> updateSaleReturn(List<ProdIoPay> payList, Long enUU) {
+        List<String> sqlList = new ArrayList<>();
+        payList.forEach(pay -> {
+            String sql = "update purc$returnitem" +
+                " right join purc$return on pri_prid = pr_id" +
+                " set pri_payment = " + pay.getAmount() + "," +
+                " pri_paydate = " + pay.getInDate() +
+                " where pr_enuu = " + enUU +
+                " and purc$return.pr_code = '" + pay.getPiCode() + "'" +
+                " and pri_number = " + pay.getPiDetNo();
+            sqlList.add(sql);
+        });
+        return sqlList;
+    }
+
+    /**
+     * 更新采购验收单付款相关
+     *
+     * @param payList 采购验收单付款数据
+     * @param enUU 企业UU(客户方)
+     * @return sqlList
+     */
+    private List<String> updateSaleAccept(List<ProdIoPay> payList, Long enUU) {
+        List<String> sqlList = new ArrayList<>();
+        payList.forEach(pay -> {
+            String sql = "update purc$acceptitem" +
+                " right join purc$accept on pai_paid = pa_id" +
+                " set pai_payment = " + pay.getAmount() + "," +
+                " pai_paydate = " + pay.getInDate() +
+                " where pa_enuu = " + enUU +
+                " and pa_code = '" + pay.getPiCode() + "'" +
+                " and pai_number = " + pay.getPiDetNo();
+            sqlList.add(sql);
+        });
+        return sqlList;
+    }
+}