11816 2 päivää sitten
vanhempi
commit
01d43bcb5b

+ 70
- 0
src/main/java/com/example/backend/pAndSExe/mapper/GongyingshangMapper.java Näytä tiedosto

@@ -0,0 +1,70 @@
1
+package com.example.backend.pAndSExe.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.example.backend.pAndSExe.model.Gongyingshang;
5
+import org.apache.ibatis.annotations.Select;
6
+
7
+public interface GongyingshangMapper  extends BaseMapper<Gongyingshang> {
8
+
9
+    @Select("select a.id, a.fno,a.rptg,a.ctCnNm,a.ctEnNm,\n" +
10
+            "        case\n" +
11
+            "        when IFNULL(ctAbbr, '') = '' then IFNULL(ctEnAbbr, '')\n" +
12
+            "        else IFNULL(ctAbbr, '')\n" +
13
+            "        end as cpal\n" +
14
+            "        , case\n" +
15
+            "        when IFNULL(ctCnNm, '') = '' then IFNULL(ctEnNm, '')\n" +
16
+            "        else IFNULL(ctCnNm, '')\n" +
17
+            "        end as cpny\n" +
18
+            "        , case\n" +
19
+            "        when IFNULL(ctCnAddr, '') = '' then IFNULL(ctEnAddr, '')\n" +
20
+            "        else IFNULL(ctCnAddr, '')\n" +
21
+            "        end as addr, a.ctrylmbAddr, estabDt, ctLevel, a.tel\n" +
22
+            "        , a.email,\n" +
23
+            "        case when nvl(b.bankNm,'')='' then '' else  nvl(b.bankNm,'')  end  as ctBankName,\n" +
24
+            "        case when nvl(b.bankAcct,'')='' then '' else  nvl(b.bankAcct,'')  end  as ctBankAcct,\n" +
25
+            "        case when nvl(c.name,'')='' then '' else  nvl(c.name,'')  end  as ctContNm\n" +
26
+            "        from SGGMIIP.custctrl a\n" +
27
+            "        LEFT JOIN (\n" +
28
+            "        SELECT  rid , bankNm , bankAcct , ROW_NUMBER() OVER (PARTITION BY rid ORDER BY id) as row_num\n" +
29
+            "        FROM SGGMIIP.custbank   WHERE NVL(del_flag, 0) != 1\n" +
30
+            "        ) b ON a.id = b.rid AND b.row_num = 1\n" +
31
+            "        left join SGGMIIP.custattn c on a.id = c.rid\n" +
32
+            "        where ifnull(a.del_flag, 0) != 1\n" +
33
+            "        and INSTR(ctNature, '供应商') > 0\n" +
34
+            "        and nvl(ctStatus,'')='已准入'\n" +
35
+            "        and a.ctCnNm = #{ctName}\n" +
36
+            "        order by a.fno\n" +
37
+            "        limit 1")
38
+    Gongyingshang selectGongyingshangByName(String ctName);
39
+
40
+    @Select(" select a.id, a.fno,a.rptg,a.ctCnNm,a.ctEnNm,\n" +
41
+            "        case\n" +
42
+            "        when IFNULL(ctAbbr, '') = '' then IFNULL(ctEnAbbr, '')\n" +
43
+            "        else IFNULL(ctAbbr, '')\n" +
44
+            "        end as cpal\n" +
45
+            "        , case\n" +
46
+            "        when IFNULL(ctCnNm, '') = '' then IFNULL(ctEnNm, '')\n" +
47
+            "        else IFNULL(ctCnNm, '')\n" +
48
+            "        end as cpny\n" +
49
+            "        , case\n" +
50
+            "        when IFNULL(ctCnAddr, '') = '' then IFNULL(ctEnAddr, '')\n" +
51
+            "        else IFNULL(ctCnAddr, '')\n" +
52
+            "        end as addr, a.ctrylmbAddr, estabDt, ctLevel, a.tel\n" +
53
+            "        , a.email,\n" +
54
+            "        case when nvl(b.bankNm,'')='' then '' else  nvl(b.bankNm,'')  end  as ctBankName,\n" +
55
+            "        case when nvl(b.bankAcct,'')='' then '' else  nvl(b.bankAcct,'')  end  as ctBankAcct,\n" +
56
+            "        case when nvl(c.name,'')='' then '' else  nvl(c.name,'')  end  as ctContNm\n" +
57
+            "        from SGGMIIP.custctrl a\n" +
58
+            "        LEFT JOIN (\n" +
59
+            "        SELECT  rid , bankNm , bankAcct , ROW_NUMBER() OVER (PARTITION BY rid ORDER BY id) as row_num\n" +
60
+            "        FROM SGGMIIP.custbank   WHERE NVL(del_flag, 0) != 1\n" +
61
+            "        ) b ON a.id = b.rid AND b.row_num = 1\n" +
62
+            "        left join SGGMIIP.custattn c on a.id = c.rid\n" +
63
+            "        where ifnull(a.del_flag, 0) != 1\n" +
64
+            "        and INSTR(ctNature, '供应商') > 0\n" +
65
+            "        and nvl(ctStatus,'')='已准入'\n" +
66
+            "        and a.fno=#{fno}\n" +
67
+            "        order by a.fno\n" +
68
+            "        limit 1")
69
+    Gongyingshang selectGongyingshangByFno(String fno);
70
+}

+ 44
- 0
src/main/java/com/example/backend/pAndSExe/model/Gongyingshang.java Näytä tiedosto

@@ -0,0 +1,44 @@
1
+package com.example.backend.pAndSExe.model;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import lombok.Data;
7
+
8
+import java.util.Date;
9
+
10
+@Data
11
+public class Gongyingshang {
12
+    @TableId(type = IdType.ASSIGN_ID)
13
+    private Long id;
14
+    @TableField("fno")
15
+    private String fno;
16
+    @TableField("rptg")
17
+    private String rptg;
18
+    @TableField("ctCnNm")
19
+    private String ctCnNm;
20
+    @TableField("ctEnNm")
21
+    private String ctEnNm;
22
+    @TableField("cpal")
23
+    private String cpal;
24
+    @TableField("cpny")
25
+    private String cpny;
26
+    @TableField("addr")
27
+    private String addr;
28
+    @TableField("ctrylmbAddr")
29
+    private String ctrylmbAddr;
30
+    @TableField("estabDt")
31
+    private Date estabDt;
32
+    @TableField("ctLevel")
33
+    private String ctLevel;
34
+    @TableField("tel")
35
+    private String tel;
36
+    @TableField("email")
37
+    private String email;
38
+    @TableField("ctBankName")
39
+    private String ctBankName;
40
+    @TableField("ctBankAcct")
41
+    private String ctBankAcct;
42
+    @TableField("ctContNm")
43
+    private String ctContNm;
44
+}

+ 8
- 0
src/main/java/com/example/backend/pAndSExe/service/impl/StockServiceImpl.java Näytä tiedosto

@@ -36,6 +36,9 @@ public class StockServiceImpl implements StockService {
36 36
     @Autowired
37 37
     private SOrderDtlMapper sOrderDtlMapper;
38 38
 
39
+    @Autowired
40
+    private SalesContractExeMapper salesContractExeMapper;
41
+
39 42
 
40 43
     /**
41 44
      * 批量导入inf_exe1数据到业务表(事务控制,保证主从表一致性)
@@ -84,6 +87,7 @@ public class StockServiceImpl implements StockService {
84 87
                 Purchasecontract purchasecontract =new Purchasecontract();
85 88
                 PurchaseOrder purchaseOrder =new PurchaseOrder();
86 89
                 SalesOrder salesOrder =new SalesOrder();
90
+                SalesContract salesContract=new SalesContract();
87 91
 
88 92
 
89 93
 
@@ -105,6 +109,7 @@ public class StockServiceImpl implements StockService {
105 109
                     }
106 110
                 }else if (exe1.getFmodalid()==24){
107 111
                      salesOrder = salesorderMapper.selectBySalesContract(exe1.getSfno());
112
+                    salesContract = salesContractExeMapper.selectByFno(exe1.getSfno());
108 113
                     if (salesOrder!=null) {
109 114
                         ctrl.setFours(salesOrder.getFours());
110 115
                         ctrl.setFoursname(salesOrder.getFoursname());
@@ -199,6 +204,7 @@ public class StockServiceImpl implements StockService {
199 204
                     }
200 205
                 }else if (exe1.getFmodalid()==24){
201 206
                     String id =mdkcctrlMapper.selectBySno(exe1.getSfno());
207
+                    salesContract = salesContractExeMapper.selectByFno(exe1.getSfno());
202 208
                     if (id!=null) {
203 209
                         SOrderDtl sOrderDtl=sOrderDtlMapper.selectBySalesContractId(id);
204 210
                         if (sOrderDtl!=null){
@@ -215,6 +221,8 @@ public class StockServiceImpl implements StockService {
215 221
                                 dtl.setAcctSet(salesOrder.getAcctSet());
216 222
 
217 223
                             }
224
+                            dtl.setSoOrderNo(salesContract.getFno());
225
+
218 226
                             Long soid=salesorderMapper.selectSoidById(id);
219 227
                             dtl.setSoid(soid);
220 228
                         }

+ 56
- 25
src/main/java/com/example/backend/pAndSExe/util/PsExeExcelUtil.java Näytä tiedosto

@@ -4,7 +4,10 @@ import com.alibaba.excel.EasyExcel;
4 4
 import com.alibaba.excel.context.AnalysisContext;
5 5
 import com.alibaba.excel.event.AnalysisEventListener;
6 6
 import com.alibaba.excel.exception.ExcelDataConvertException;
7
+import com.example.backend.entity.common.SysUser;
8
+import com.example.backend.mapper.contract.SysUserMapper;
7 9
 import com.example.backend.pAndSExe.dto.*;
10
+import com.example.backend.pAndSExe.mapper.GongyingshangMapper;
8 11
 import com.example.backend.pAndSExe.mapper.InfExe1AmountMapper;
9 12
 import com.example.backend.pAndSExe.mapper.InfExe1Mapper;
10 13
 import com.example.backend.pAndSExe.mapper.ShangpinkuMapper;
@@ -45,6 +48,9 @@ public class PsExeExcelUtil {
45 48
     @Autowired
46 49
     private ShangpinkuMapper shangpinkuMapper;
47 50
 
51
+    @Autowired
52
+    private GongyingshangMapper gongyingshangMapper;
53
+
48 54
 
49 55
     // 日期格式化器
50 56
     private   final String[] DATE_FORMATS = {"yyyy-MM-dd", "yyyy.MM.dd", "yyyy/MM/dd"};
@@ -607,14 +613,20 @@ public class PsExeExcelUtil {
607 613
         if (dto.getCombinedPaymentInfo() == null || dto.getCombinedPaymentInfo().trim().isEmpty()) {
608 614
             errorLogList.add("收款/受益人名称+银行名称+银行账号为空");
609 615
         }else {
610
-            if (dto.getCombinedPaymentInfo().contains(",")||dto.getCombinedPaymentInfo().contains(",")) {
611
-                String[] strings = splitCombinedField(dto.getCombinedPaymentInfo());
612
-                if ("无".equals(strings[1]) || "无".equals(strings[2])) {
616
+            String[] strings = splitCombinedField(dto.getCombinedPaymentInfo());
617
+            if (strings.length<3) {
618
+                errorLogList.add("收款人名称+收款人银行+银行账号格式不正确");
619
+            }else {
620
+                Gongyingshang gongyingshang = gongyingshangMapper.selectGongyingshangByName(strings[0]);
621
+                if (gongyingshang == null) {
622
+                    errorLogList.add("供应商名称没有审批通过,需要先申请供应商; ");
623
+                }
624
+                else if ("无".equals(strings[1]) || "无".equals(strings[2]) || "".equals(gongyingshang.getCtBankAcct())||gongyingshang.getCtBankAcct()==null) {
613 625
                     errorLogList.add("银行名称/账号为空,需要申请客商银行信息");
614 626
                 }
615
-            }else {
616
-                errorLogList.add("收款/受益人信息格式错误,请按照收款/受益人名称+银行名称+银行账号格式填写,不可缺少");
617 627
             }
628
+
629
+
618 630
         }
619 631
 
620 632
         // 付款类型:非空校验
@@ -732,9 +744,19 @@ public class PsExeExcelUtil {
732 744
         }
733 745
         else {
734 746
             String[] strings = splitCombinedField(dto.getCombinedSuppInfo());
735
-            if("无".equals(strings[1])||"无".equals(strings[2])){
736
-                errorLogList.add("银行名称/账号为空,需要申请客商银行信息");
747
+            if (strings.length<3) {
748
+                errorLogList.add("收款人名称+收款人银行+银行账号格式不正确");
749
+            }else {
750
+                Gongyingshang gongyingshang = gongyingshangMapper.selectGongyingshangByName(strings[0]);
751
+                if (gongyingshang == null) {
752
+                    errorLogList.add("供应商名称没有审批通过,需要先申请供应商; ");
753
+                }
754
+                else if ("无".equals(strings[1]) || "无".equals(strings[2]) || "".equals(gongyingshang.getCtBankAcct())||gongyingshang.getCtBankAcct()==null) {
755
+                    errorLogList.add("银行名称/账号为空,需要申请客商银行信息");
756
+                }
737 757
             }
758
+
759
+
738 760
         }
739 761
 
740 762
         // 付款方式:非空校验(和Exe3一致)
@@ -1148,8 +1170,6 @@ public class PsExeExcelUtil {
1148 1170
         // 金额:非空 + 正数校验
1149 1171
         if (dto.getAmount() == null) {
1150 1172
             errorLogList.add("金额为空");
1151
-        } else if (dto.getAmount() <= 0) {
1152
-            errorLogList.add("金额必须大于0,当前值:" + dto.getAmount());
1153 1173
         }
1154 1174
 
1155 1175
         // 3. 构建错误日志
@@ -1232,25 +1252,36 @@ public class PsExeExcelUtil {
1232 1252
         } else {
1233 1253
             // 拆分规则:按第一个空格/逗号拆分,左侧为编号,右侧为名称
1234 1254
 
1235
-            String[] ctArr = ctNoCtName.split("[,\\s]+", 2);
1255
+            String[] ctArr = ctNoCtName.split("[-,\\s]+");
1256
+
1257
+            if (ctArr.length<2) {
1258
+                errorLogList.add("客户编号+客户名称格式不正确");
1259
+            }else {
1260
+                Gongyingshang gongyingshang = gongyingshangMapper.selectGongyingshangByFno(ctArr[0].trim());
1261
+                if (gongyingshang == null) {
1262
+                    errorLogList.add("供应商没有,需要先申请供应商; ");
1263
+                }
1264
+                else if (!ctArr[1].trim().equals(gongyingshang.getCtCnNm())) {
1265
+                    errorLogList.add("客商编码和客商名称不匹配");
1266
+                }
1267
+            }
1236 1268
             if (ctArr.length >= 1) {
1237 1269
                 ctNo = ctArr[0];
1238 1270
                 ctName = ctArr.length == 2 ? ctArr[1] : "";
1239 1271
             }
1240
-            if (ctNo.isEmpty()) {
1241
-                errorLogList.add("客户编号解析失败,原始值:" + ctNoCtName);
1242
-            }
1243 1272
         }
1244 1273
 
1274
+
1275
+
1245 1276
         // 认领金额:非空 + 正数校验
1246 1277
         BigDecimal claimedAmt = BigDecimal.ZERO;
1247 1278
         if (dto.getClaimedAmt() == null) {
1248 1279
             errorLogList.add("认领金额为空");
1249 1280
         } else {
1250 1281
             claimedAmt = BigDecimal.valueOf(dto.getClaimedAmt()).setScale(6, BigDecimal.ROUND_HALF_UP);
1251
-            if (claimedAmt.compareTo(BigDecimal.ZERO) <= 0) {
1282
+            /*if (claimedAmt.compareTo(BigDecimal.ZERO) <= 0) {
1252 1283
                 errorLogList.add("认领金额必须大于0,当前值:" + dto.getClaimedAmt());
1253
-            }
1284
+            }*/
1254 1285
         }
1255 1286
 
1256 1287
         // 币别:非空校验
@@ -1419,9 +1450,9 @@ public class PsExeExcelUtil {
1419 1450
             errorLogList.add("数量为空");
1420 1451
         } else {
1421 1452
             qty = BigDecimal.valueOf(dto.getQty()).setScale(6, BigDecimal.ROUND_HALF_UP);
1422
-            if (qty.compareTo(BigDecimal.ZERO) <= 0) {
1453
+           /* if (qty.compareTo(BigDecimal.ZERO) <= 0) {
1423 1454
                 errorLogList.add("数量必须大于0,当前值:" + dto.getQty());
1424
-            }
1455
+            }*/
1425 1456
         }
1426 1457
 
1427 1458
         // -------------------- 金额校验(非空+正数) --------------------
@@ -1430,9 +1461,9 @@ public class PsExeExcelUtil {
1430 1461
             errorLogList.add("含税金额为空");
1431 1462
         } else {
1432 1463
             soamt = BigDecimal.valueOf(dto.getSoamt()).setScale(6, BigDecimal.ROUND_HALF_UP);
1433
-            if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1464
+            /*if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1434 1465
                 errorLogList.add("金额必须大于0,当前值:" + dto.getSoamt());
1435
-            }
1466
+            }*/
1436 1467
         }
1437 1468
 
1438 1469
         BigDecimal ntSoAmt = BigDecimal.ZERO;
@@ -1440,9 +1471,9 @@ public class PsExeExcelUtil {
1440 1471
             errorLogList.add("不含税金额为空");
1441 1472
         } else {
1442 1473
             ntSoAmt = BigDecimal.valueOf(dto.getNtSoAmt()).setScale(6, BigDecimal.ROUND_HALF_UP);
1443
-            if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1474
+            /*if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1444 1475
                 errorLogList.add("金额必须大于0,当前值:" + dto.getSoamt());
1445
-            }
1476
+            }*/
1446 1477
         }
1447 1478
 
1448 1479
         // -------------------- 销项税率校验(非空+0-100之间) --------------------
@@ -1713,18 +1744,18 @@ public class PsExeExcelUtil {
1713 1744
             errorLogList.add("金额为空");
1714 1745
         } else {
1715 1746
             soamt = BigDecimal.valueOf(dto.getSoamt()).setScale(6, BigDecimal.ROUND_HALF_UP);
1716
-            if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1747
+            /*if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1717 1748
                 errorLogList.add("金额必须大于0,当前值:" + dto.getSoamt());
1718
-            }
1749
+            }*/
1719 1750
         }
1720 1751
         BigDecimal ntSoAmt = BigDecimal.ZERO;
1721 1752
         if (dto.getNtSoAmt() == null) {
1722 1753
             errorLogList.add("不含税金额为空");
1723 1754
         } else {
1724 1755
             ntSoAmt = BigDecimal.valueOf(dto.getNtSoAmt()).setScale(6, BigDecimal.ROUND_HALF_UP);
1725
-            if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1756
+            /*if (soamt.compareTo(BigDecimal.ZERO) <= 0) {
1726 1757
                 errorLogList.add("金额必须大于0,当前值:" + dto.getSoamt());
1727
-            }
1758
+            }*/
1728 1759
         }
1729 1760
 
1730 1761
 

+ 8
- 5
src/main/java/com/example/backend/pAndSExe/util/Shujvzidian.java Näytä tiedosto

@@ -3,9 +3,12 @@ package com.example.backend.pAndSExe.util;
3 3
 public class Shujvzidian {
4 4
     public static String danwei ="湿吨干吨辆架套个头块张件支枝根条筒长吨卷副片组份幅双对棵株井米盘平方米面节千克克盆万个具百副百支百把百个百片刀疋公担扇百枝千只千块千盒千枝千个亿支亿个万套千张万张千伏安千瓦千瓦时千升英尺吨立方米短吨司马担司马斤斤磅担英担短担两市担盎司克拉市尺码英寸寸升毫升英加仑美加仑立方英尺数量单位立方尺税务登记证平方码平方英尺平方尺英制马力公制马力令箱批罐桶扎包箩打筐罗匹册本发枚捆袋粒盒合瓶千支万双万粒千粒千米千英尺厘米部层床顶把只樘盏艘座其它";
5 5
     public static String fapiaozhonglei="增值税专用发票增值税普通发票全电增值税普通发票全电增值税专用发票其他发票全电增值税专用发票其他发票海关增值税完税证明海关关税完税证明";
6
-
7
-
8
-
9
-
6
+    public static String jizhongfangshi="理重计算实重计算净重计算";
7
+    public static String jijiafangshi="干吨计算湿吨计算";
8
+    public static String yewuleibie="采购类销售类";
9
+    public static String fukuanleixing="预付款发货前预付款发货后发票后结算";
10
+    public static String fukuanfangshi="电汇(海外TT)手工网银(国内TT)直联网银LC新票据-电子银票新票据-电子商票新票据-电子银票背书新票据-电子商票背书抹帐通宝开具通宝背书收取通宝";
11
+    public static String feiyongmingcheng="装卸费库厂使用费仓储费港口费超期堆存费检验费理货费货代费代理费保险费运输费加工费开证费用境外开证打包费汇兑损益银行手续费利息费用海关税费其他税费海关关税";
12
+    public static String bibie="USDCNYEURJPYHKDSGD";
13
+    public static String kaizhengyinhangmingcheng="上海浦东发展银行股份有限公司新加坡分行东亚银行香港分行东亚银行(中国)有限公司东营银行济南高新科技支行中信银行济南天桥支行中信银行股份有限公司中信银行股份有限公司天桥支行中信银行股份有限公司新加坡分行中国农业银行股份有限公司新加坡分行中国农业银行股份有限公司济南历下支行中国农业银行香港分行中国工商银行亚洲有限公司中国工商银行股份有限公司新加坡分行中国建设银行股份有限公司中国建设银行股份有限公司日照分行中国建设银行股份有限公司青岛山东路支行中国民生银行股份有限公司中国邮政储蓄银行历下自贸区支行中国邮政储蓄银行股份有限公司中国银行股份有限公司中国银行股份有限公司新加坡分行中国银行股份有限公司日照岚山支行中国银行股份有限公司莱芜钢城支行中国银行股份有限公司青岛东海路支行中国银行香港有限公司交通银行股份有限公司交通银行股份有限公司青岛市北第三支行交通银行香港分行兴业银行股份有限公司兴业银行股份有限公司日照分行兴业银行股份有限公司青岛分行营业部兴业银行香港分行北京银行股份有限公司北京银行股份有限公司青岛分行华夏银行股份有限公司华夏银行股份有限公司青岛分行大华银行大华银行香港分行平安银行股份有限公司平安银行股份有限公司平安银行股份有限公司青岛分行广发银行股份有限公司恒丰银行股份有限公司日照分行新加坡华侨银行有限公司日照银行股份有限公司虎山支行日照银行股份有限公司青岛分行星展银行星展银行香港分行法兴银行香港分行法国兴业银行香港分行法国巴黎银行新加坡分行法国巴黎银行香港分行济宁银行股份有限公司日照分行浙商银行股份有限公司浙商银行股份有限公司青岛分行渣打银行香港分行渤海银行股份有限公司青岛分行潍坊银行股份有限公司青岛分行荷兰合作银行香港分行荷兰国际集团银行荷兰安智银行香港分行青岛农村商业银行市北支行青岛银行股份有限公司齐商银行股份有限公司齐鲁银行股份有限公司日照分行";
10 14
 }
11
-

Loading…
Peruuta
Tallenna