|
@@ -14,7 +14,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.malk.core.McProject;
|
|
import com.malk.core.McProject;
|
|
import com.malk.kabeiyi.service.KabeiyiService;
|
|
import com.malk.kabeiyi.service.KabeiyiService;
|
|
import com.malk.kabeiyi.util.RecognizeAllText;
|
|
import com.malk.kabeiyi.util.RecognizeAllText;
|
|
-import com.malk.kabeiyi.util.U8Util;
|
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
import com.malk.server.aliwork.YDConf;
|
|
import com.malk.server.aliwork.YDParam;
|
|
import com.malk.server.aliwork.YDParam;
|
|
import com.malk.server.common.McException;
|
|
import com.malk.server.common.McException;
|
|
@@ -44,8 +43,12 @@ import java.io.InputStream;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.net.HttpURLConnection;
|
|
import java.net.HttpURLConnection;
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
|
|
+import java.time.DayOfWeek;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
+import java.time.temporal.TemporalAdjusters;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -564,7 +567,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Async
|
|
@Async
|
|
- public McR getDeliveryInfo() {
|
|
|
|
|
|
+ public McR getSaleoutInfo() {
|
|
//现在时间戳
|
|
//现在时间戳
|
|
long beginTime = System.currentTimeMillis();
|
|
long beginTime = System.currentTimeMillis();
|
|
|
|
|
|
@@ -603,15 +606,19 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
|
|
String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
|
|
|
|
|
|
- /*String beginOfMonthString = "2024-12-22";
|
|
|
|
|
|
+ /*String beginOfMonthString = "2025-06-12";
|
|
|
|
|
|
- String yesterday = "2024-12-22";*/
|
|
|
|
|
|
+ String yesterday = "2025-06-12";*/
|
|
for (Integer dsSequence : factory.keySet()) {
|
|
for (Integer dsSequence : factory.keySet()) {
|
|
- /*if (dsSequence != 8){
|
|
|
|
|
|
+ /*if (dsSequence == 2){
|
|
continue;
|
|
continue;
|
|
}*/
|
|
}*/
|
|
|
|
+
|
|
List<String> errorCodes = new ArrayList<>();
|
|
List<String> errorCodes = new ArrayList<>();
|
|
|
|
|
|
|
|
+ //存放存货名称、编码
|
|
|
|
+ Map<String,String> inventory = new HashMap<>();
|
|
|
|
+
|
|
Map<String,Object> param = new HashMap<>();
|
|
Map<String,Object> param = new HashMap<>();
|
|
param.put("from_account",fromAccount);
|
|
param.put("from_account",fromAccount);
|
|
param.put("to_account",toAccount);
|
|
param.put("to_account",toAccount);
|
|
@@ -639,7 +646,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
//查询单个出库单详情
|
|
//查询单个出库单详情
|
|
String id = getString(saleout.get("code"));
|
|
String id = getString(saleout.get("code"));
|
|
|
|
|
|
- /*if (!id.equals("0000008087")){
|
|
|
|
|
|
+ /*if (!id.equals("00000044856")){
|
|
continue;
|
|
continue;
|
|
}*/
|
|
}*/
|
|
|
|
|
|
@@ -693,6 +700,8 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
formData.put("textField_m18nvp8c",getString(saleout2.get("businesscode")));//业务单号
|
|
formData.put("textField_m18nvp8c",getString(saleout2.get("businesscode")));//业务单号
|
|
formData.put("textField_m5nnwiv1", getString(saleout2.get("warehousename")));//仓库名称
|
|
formData.put("textField_m5nnwiv1", getString(saleout2.get("warehousename")));//仓库名称
|
|
formData.put("dateField_m18nvp7x",DateUtil.parseDate(getString(saleout2.get("date"))).getTime());//单据日期
|
|
formData.put("dateField_m18nvp7x",DateUtil.parseDate(getString(saleout2.get("date"))).getTime());//单据日期
|
|
|
|
+ formData.put("textField_mbu5nao3",getWeekRange(getString(saleout2.get("date"))));//发货周
|
|
|
|
+ formData.put("textField_mbu5nao5",saleout2.get("date").toString().substring(0,4));//年份
|
|
formData.put("dateField_m5nnwiuw",Objects.nonNull(saleout2.get("auditdate")) ? DateUtil.parseDate(getString(saleout2.get("auditdate"))).getTime() : null);//审核日期
|
|
formData.put("dateField_m5nnwiuw",Objects.nonNull(saleout2.get("auditdate")) ? DateUtil.parseDate(getString(saleout2.get("auditdate"))).getTime() : null);//审核日期
|
|
formData.put("textField_m18nvp7y",getString(saleout2.get("customername")));//客户名称
|
|
formData.put("textField_m18nvp7y",getString(saleout2.get("customername")));//客户名称
|
|
formData.put("textField_m18nvp7z",getString(saleout2.get("departmentname")));//部门
|
|
formData.put("textField_m18nvp7z",getString(saleout2.get("departmentname")));//部门
|
|
@@ -704,6 +713,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
formData.put("numberField_m18wkih7",dsSequence);//数据源序号
|
|
formData.put("numberField_m18wkih7",dsSequence);//数据源序号
|
|
formData.put("selectField_m7b8j9uj","实发");//类型
|
|
formData.put("selectField_m7b8j9uj","实发");//类型
|
|
|
|
|
|
|
|
+ AtomicReference<Double> totalQuantity = new AtomicReference<>(0d);
|
|
|
|
+ AtomicReference<Double> totalCost = new AtomicReference<>(0d);
|
|
|
|
+
|
|
List<Map> entry = (List<Map>) saleout2.get("entry");
|
|
List<Map> entry = (List<Map>) saleout2.get("entry");
|
|
|
|
|
|
//collect拆分成五个list 每个list长度为500
|
|
//collect拆分成五个list 每个list长度为500
|
|
@@ -717,8 +729,13 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
errorCodes.add(id + "出库明细超过2500");
|
|
errorCodes.add(id + "出库明细超过2500");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //是否退线
|
|
|
|
+ boolean isReject = false;
|
|
|
|
+
|
|
//出库明细
|
|
//出库明细
|
|
- List list1 = collectList.get(0).stream().map(item -> {
|
|
|
|
|
|
+ List<Map> list1 = new ArrayList();
|
|
|
|
+
|
|
|
|
+ for (Map item : collectList.get(0)) {
|
|
if (Objects.isNull(formData.get("textField_m219zpzf"))){
|
|
if (Objects.isNull(formData.get("textField_m219zpzf"))){
|
|
formData.put("textField_m219zpzf",getString(item.get("free1")));//客户码 出库主表没有客户码,取明细的客户码
|
|
formData.put("textField_m219zpzf",getString(item.get("free1")));//客户码 出库主表没有客户码,取明细的客户码
|
|
}
|
|
}
|
|
@@ -728,120 +745,192 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m22mkwzk", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m22mkwzk", getString(item.get("define29")));//客户存货码
|
|
- detail.put("textField_m5qdxf7r", getString(item.get("inventorycode")));//存货编码
|
|
|
|
-// detail.put("textField_m18nvp8e", inventory_name);//存货名称
|
|
|
|
-
|
|
|
|
|
|
+ detail.put("textField_mbu5naoj", getString(item.get("inventorycode")));//存货编码
|
|
|
|
+ detail.put("textField_mc1emzfr",getInventoryName(getString(item.get("inventorycode")),dsSequence,inventory));//存货名称
|
|
detail.put("textField_m21b1bhg", getString(item.get("free2")));//产品颜色
|
|
detail.put("textField_m21b1bhg", getString(item.get("free2")));//产品颜色
|
|
|
|
+ detail.put("textField_mbu5naoa", getString(item.get("define28")));//条码
|
|
detail.put("textField_m18nvp8f", getString(item.get("cmassunitname")));//单位
|
|
detail.put("textField_m18nvp8f", getString(item.get("cmassunitname")));//单位
|
|
- detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货数量
|
|
|
|
- detail.put("textField_m5oztcmx", getString(item.get("define25")));//包装方式
|
|
|
|
- detail.put("textField_m5oztcmy", getString(item.get("define30")));//工艺号
|
|
|
|
- detail.put("textareaField_m5oztcmz", getString(item.get("define31")));//备注
|
|
|
|
|
|
|
|
|
|
+ if (Objects.nonNull(item.get("quantity")) && isNumber(getString(item.get("quantity")))){
|
|
|
|
+ if (getString((item.get("quantity"))).contains("-")){
|
|
|
|
+ isReject = true;
|
|
|
|
+ break;
|
|
|
|
+ }else {
|
|
|
|
+ detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货数量
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ totalQuantity.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("quantity"))))));
|
|
|
|
|
|
- /*detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
|
|
|
|
- detail.put("numberField_m18nvp8l", getString(item.get("money")));//未税总价
|
|
|
|
- detail.put("numberField_m18nvp8k", getString(item.get("taxprice")));//含税单价
|
|
|
|
- detail.put("numberField_m18nvp8m", getString(item.get("sum")));//含税总价
|
|
|
|
- detail.put("numberField_m18nvp8n", getString(item.get("taxrate")));//税率
|
|
|
|
- detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价*/
|
|
|
|
|
|
+ if (Objects.nonNull(item.get("price")) && isNumber(getString(item.get("price")))){
|
|
|
|
+ detail.put("numberField_m18nvp8k", getString(item.get("price")));//单价
|
|
|
|
+ }
|
|
|
|
|
|
- return detail;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
+ if (Objects.nonNull(item.get("cost")) && isNumber(getString(item.get("cost")))){
|
|
|
|
+ detail.put("numberField_m18nvp8m", getString(item.get("cost")));//金额
|
|
|
|
+
|
|
|
|
+ totalCost.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("cost"))))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list1.add(detail);
|
|
|
|
+ }
|
|
|
|
|
|
List<Map> list2 = new ArrayList<>();
|
|
List<Map> list2 = new ArrayList<>();
|
|
if (collectList.size() > 1){
|
|
if (collectList.size() > 1){
|
|
- list2 = collectList.get(1).stream().map(item -> {
|
|
|
|
|
|
+ for (Map item : collectList.get(1)) {
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m2j0wj8o", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m2j0wj8o", getString(item.get("define29")));//客户存货码
|
|
- detail.put("textField_m2j0wj8p", getString(item.get("inventory_name")));//存货名称
|
|
|
|
|
|
+ detail.put("textField_mbu5naol", getString(item.get("inventorycode")));//存货编码
|
|
|
|
+ detail.put("textField_mc1emzft",getInventoryName(getString(item.get("inventorycode")),dsSequence,inventory));//存货名称
|
|
detail.put("textField_m2j0wj8q", getString(item.get("free2")));//产品颜色
|
|
detail.put("textField_m2j0wj8q", getString(item.get("free2")));//产品颜色
|
|
|
|
+ detail.put("textField_mbu5naoc", getString(item.get("define28")));//条码
|
|
detail.put("textField_m2j0wj8r", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("textField_m2j0wj8r", getString(item.get("cinvm_unit")));//单位
|
|
- detail.put("numberField_m2j0wj8s", getString(item.get("quantity")));//发货数量
|
|
|
|
- detail.put("textField_m5oztcn3", getString(item.get("define25")));//包装方式
|
|
|
|
- detail.put("textField_m5oztcn2", getString(item.get("define30")));//工艺号
|
|
|
|
- detail.put("textareaField_m5oztcng", getString(item.get("define31")));//备注
|
|
|
|
-
|
|
|
|
- /*detail.put("numberField_m2j0wj8t", getString(item.get("price")));//未税单价
|
|
|
|
- detail.put("numberField_m2j0wj8u", getString(item.get("money")));//未税总价
|
|
|
|
- detail.put("numberField_m2j0wj8v", getString(item.get("taxprice")));//含税单价
|
|
|
|
- detail.put("numberField_m2j0wj8w", getString(item.get("sum")));//含税总价
|
|
|
|
- detail.put("numberField_m2j0wj8x", getString(item.get("taxrate")));//税率
|
|
|
|
- detail.put("numberField_m2j0wj8y", getString(item.get("tax")));//总税价*/
|
|
|
|
-
|
|
|
|
- return detail;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("quantity")) && isNumber(getString(item.get("quantity")))){
|
|
|
|
+ if (getString((item.get("quantity"))).contains("-")){
|
|
|
|
+ isReject = true;
|
|
|
|
+ break;
|
|
|
|
+ }else {
|
|
|
|
+ detail.put("numberField_m2j0wj8s", getString(item.get("quantity")));//发货数量
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ totalQuantity.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("quantity"))))));
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("price")) && isNumber(getString(item.get("price")))){
|
|
|
|
+ detail.put("numberField_m2j0wj8v", getString(item.get("price")));//单价
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("cost")) && isNumber(getString(item.get("cost")))){
|
|
|
|
+ detail.put("numberField_m2j0wj8w", getString(item.get("cost")));//金额
|
|
|
|
+
|
|
|
|
+ totalCost.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("cost"))))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list2.add(detail);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
List<Map> list3 = new ArrayList<>();
|
|
List<Map> list3 = new ArrayList<>();
|
|
if (collectList.size() > 2){
|
|
if (collectList.size() > 2){
|
|
- list3 = collectList.get(2).stream().map(item -> {
|
|
|
|
|
|
+ for (Map item : collectList.get(2)) {
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m2j0wj93", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m2j0wj93", getString(item.get("define29")));//客户存货码
|
|
- detail.put("textField_m2j0wj94", getString(item.get("inventory_name")));//存货名称
|
|
|
|
|
|
+ detail.put("textField_mbu5naon", getString(item.get("inventorycode")));//存货编码
|
|
|
|
+ detail.put("textField_mc1emzfv",getInventoryName(getString(item.get("inventorycode")),dsSequence,inventory));//存货名称
|
|
detail.put("textField_m2j0wj95", getString(item.get("free2")));//产品颜色
|
|
detail.put("textField_m2j0wj95", getString(item.get("free2")));//产品颜色
|
|
|
|
+ detail.put("textField_mbu5naoe", getString(item.get("define28")));//条码
|
|
detail.put("textField_m2j0wj96", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("textField_m2j0wj96", getString(item.get("cinvm_unit")));//单位
|
|
- detail.put("numberField_m2j0wj97", getString(item.get("quantity")));//发货数量
|
|
|
|
- detail.put("textField_m5oztcn7", getString(item.get("define25")));//包装方式
|
|
|
|
- detail.put("textField_m5oztcn6", getString(item.get("define30")));//工艺号
|
|
|
|
- detail.put("textareaField_m5oztcni", getString(item.get("define31")));//备注
|
|
|
|
-
|
|
|
|
- /*detail.put("numberField_m2j0wj98", getString(item.get("price")));//未税单价
|
|
|
|
- detail.put("numberField_m2j0wj99", getString(item.get("money")));//未税总价
|
|
|
|
- detail.put("numberField_m2j0wj9a", getString(item.get("taxprice")));//含税单价
|
|
|
|
- detail.put("numberField_m2j0wj9b", getString(item.get("sum")));//含税总价
|
|
|
|
- detail.put("numberField_m2j0wj9c", getString(item.get("taxrate")));//税率
|
|
|
|
- detail.put("numberField_m2j0wj9d", getString(item.get("tax")));//总税价*/
|
|
|
|
-
|
|
|
|
- return detail;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("quantity")) && isNumber(getString(item.get("quantity")))){
|
|
|
|
+ if (getString((item.get("quantity"))).contains("-")){
|
|
|
|
+ isReject = true;
|
|
|
|
+ break;
|
|
|
|
+ }else {
|
|
|
|
+ detail.put("numberField_m2j0wj97", getString(item.get("quantity")));//发货数量
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ totalQuantity.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("quantity"))))));
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("price")) && isNumber(getString(item.get("price")))){
|
|
|
|
+ detail.put("numberField_m2j0wj9a", getString(item.get("price")));//单价
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("cost")) && isNumber(getString(item.get("cost")))){
|
|
|
|
+ detail.put("numberField_m2j0wj9b", getString(item.get("cost")));//金额
|
|
|
|
+
|
|
|
|
+ totalCost.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("cost"))))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list3.add(detail);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
List<Map> list4 = new ArrayList<>();
|
|
List<Map> list4 = new ArrayList<>();
|
|
if (collectList.size() > 3){
|
|
if (collectList.size() > 3){
|
|
- list4 = collectList.get(3).stream().map(item -> {
|
|
|
|
|
|
+ for (Map item : collectList.get(3)) {
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m4cfhc70", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m4cfhc70", getString(item.get("define29")));//客户存货码
|
|
- detail.put("textField_m4cfhc71", getString(item.get("inventory_name")));//存货名称
|
|
|
|
|
|
+ detail.put("textField_mbu5naop", getString(item.get("inventorycode")));//存货编码
|
|
|
|
+ detail.put("textField_mc1emzfx",getInventoryName(getString(item.get("inventorycode")),dsSequence,inventory));//存货名称
|
|
detail.put("textField_m4cfhc72", getString(item.get("free2")));//产品颜色
|
|
detail.put("textField_m4cfhc72", getString(item.get("free2")));//产品颜色
|
|
|
|
+ detail.put("textField_mbu5naog", getString(item.get("define28")));//条码
|
|
detail.put("textField_m4cfhc73", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("textField_m4cfhc73", getString(item.get("cinvm_unit")));//单位
|
|
- detail.put("numberField_m4cfhc74", getString(item.get("quantity")));//发货数量
|
|
|
|
- detail.put("textField_m5oztcnb", getString(item.get("define25")));//包装方式
|
|
|
|
- detail.put("textField_m5oztcna", getString(item.get("define30")));//工艺号
|
|
|
|
- detail.put("textareaField_m5oztcnk", getString(item.get("define31")));//备注
|
|
|
|
-
|
|
|
|
- /*detail.put("numberField_m4cfhc75", getString(item.get("price")));//未税单价
|
|
|
|
- detail.put("numberField_m4cfhc76", getString(item.get("money")));//未税总价
|
|
|
|
- detail.put("numberField_m4cfhc77", getString(item.get("taxprice")));//含税单价
|
|
|
|
- detail.put("numberField_m4cfhc78", getString(item.get("sum")));//含税总价
|
|
|
|
- detail.put("numberField_m4cfhc79", getString(item.get("taxrate")));//税率
|
|
|
|
- detail.put("numberField_m4cfhc7a", getString(item.get("tax")));//总税价*/
|
|
|
|
-
|
|
|
|
- return detail;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("quantity")) && isNumber(getString(item.get("quantity")))){
|
|
|
|
+ if (getString((item.get("quantity"))).contains("-")){
|
|
|
|
+ isReject = true;
|
|
|
|
+ break;
|
|
|
|
+ }else {
|
|
|
|
+ detail.put("numberField_m4cfhc74", getString(item.get("quantity")));//发货数量
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ totalQuantity.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("quantity"))))));
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("price")) && isNumber(getString(item.get("price")))){
|
|
|
|
+ detail.put("numberField_m4cfhc77", getString(item.get("price")));//单价
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("cost")) && isNumber(getString(item.get("cost")))){
|
|
|
|
+ detail.put("numberField_m4cfhc78", getString(item.get("cost")));//金额
|
|
|
|
+
|
|
|
|
+ totalCost.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("cost"))))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list4.add(detail);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
List<Map> list5 = new ArrayList<>();
|
|
List<Map> list5 = new ArrayList<>();
|
|
if (collectList.size() > 4){
|
|
if (collectList.size() > 4){
|
|
- list5 = collectList.get(4).stream().map(item -> {
|
|
|
|
|
|
+ for (Map item : collectList.get(4)) {
|
|
Map detail = new HashMap();
|
|
Map detail = new HashMap();
|
|
detail.put("textField_m4cfhc7f", getString(item.get("define29")));//客户存货码
|
|
detail.put("textField_m4cfhc7f", getString(item.get("define29")));//客户存货码
|
|
- detail.put("textField_m4cfhc7g", getString(item.get("inventory_name")));//存货名称
|
|
|
|
|
|
+ detail.put("textField_mbu5naor", getString(item.get("inventorycode")));//存货编码
|
|
|
|
+ detail.put("textField_mc1emzfz",getInventoryName(getString(item.get("inventorycode")),dsSequence,inventory));//存货名称
|
|
detail.put("textField_m4cfhc7h", getString(item.get("free2")));//产品颜色
|
|
detail.put("textField_m4cfhc7h", getString(item.get("free2")));//产品颜色
|
|
|
|
+ detail.put("textField_mbu5naoi", getString(item.get("define28")));//条码
|
|
detail.put("textField_m4cfhc7i", getString(item.get("cinvm_unit")));//单位
|
|
detail.put("textField_m4cfhc7i", getString(item.get("cinvm_unit")));//单位
|
|
- detail.put("numberField_m4cfhc7j", getString(item.get("quantity")));//发货数量
|
|
|
|
- detail.put("textField_m5oztcnf", getString(item.get("define25")));//包装方式
|
|
|
|
- detail.put("textField_m5oztcne", getString(item.get("define30")));//工艺号
|
|
|
|
- detail.put("textareaField_m5oztcnm", getString(item.get("define31")));//备注
|
|
|
|
-
|
|
|
|
- /*detail.put("numberField_m4cfhc7k", getString(item.get("price")));//未税单价
|
|
|
|
- detail.put("numberField_m4cfhc7l", getString(item.get("money")));//未税总价
|
|
|
|
- detail.put("numberField_m4cfhc7m", getString(item.get("taxprice")));//含税单价
|
|
|
|
- detail.put("numberField_m4cfhc7n", getString(item.get("sum")));//含税总价
|
|
|
|
- detail.put("numberField_m4cfhc7o", getString(item.get("taxrate")));//税率
|
|
|
|
- detail.put("numberField_m4cfhc7p", getString(item.get("tax")));//总税价*/
|
|
|
|
-
|
|
|
|
- return detail;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("quantity")) && isNumber(getString(item.get("quantity")))){
|
|
|
|
+ if (getString((item.get("quantity"))).contains("-")){
|
|
|
|
+ isReject = true;
|
|
|
|
+ break;
|
|
|
|
+ }else {
|
|
|
|
+ detail.put("numberField_m4cfhc7j", getString(item.get("quantity")));//发货数量
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ totalQuantity.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("quantity"))))));
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("price")) && isNumber(getString(item.get("price")))){
|
|
|
|
+ detail.put("numberField_m4cfhc7m", getString(item.get("price")));//单价
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Objects.nonNull(item.get("cost")) && isNumber(getString(item.get("cost")))){
|
|
|
|
+ detail.put("numberField_m4cfhc7n", getString(item.get("cost")));//金额
|
|
|
|
+
|
|
|
|
+ totalCost.updateAndGet(v -> new Double((double) (v + Double.parseDouble(getString(item.get("cost"))))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list5.add(detail);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isReject){
|
|
|
|
+ continue;
|
|
}
|
|
}
|
|
|
|
|
|
formData.put("tableField_m18nvp82",list1);
|
|
formData.put("tableField_m18nvp82",list1);
|
|
@@ -850,6 +939,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
formData.put("tableField_m4cfhc7c",list4);
|
|
formData.put("tableField_m4cfhc7c",list4);
|
|
formData.put("tableField_m4cfhc7r",list5);
|
|
formData.put("tableField_m4cfhc7r",list5);
|
|
|
|
|
|
|
|
+ formData.put("numberField_mbu92ncy",totalQuantity.get());//发货数量合计
|
|
|
|
+ formData.put("numberField_mbu92nd0",totalCost.get());//发货金额合计
|
|
|
|
+
|
|
//精准匹配
|
|
//精准匹配
|
|
List<Map> jsonString = new ArrayList<>();
|
|
List<Map> jsonString = new ArrayList<>();
|
|
jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m18nvp87",getString(saleout2.get("code")),"TEXT","eq","TextField"));
|
|
jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m18nvp87",getString(saleout2.get("code")),"TEXT","eq","TextField"));
|
|
@@ -882,14 +974,14 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
flag = true;
|
|
flag = true;
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
- log.error("发货单:{} 同步失败 失败原因:{}",getString(saleout2.get("code")) , e.getMessage());
|
|
|
|
|
|
+ log.error("出库单:{} 同步失败 失败原因:{}",getString(saleout2.get("code")) , e.getMessage());
|
|
errorCodes.add(id);
|
|
errorCodes.add(id);
|
|
flag = true;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (i>5){
|
|
if (i>5){
|
|
errorCodes.add(id);
|
|
errorCodes.add(id);
|
|
- log.error("发货单:{} 同步失败 失败原因:{}",getString(saleout2.get("code")) , "重试次数过多");
|
|
|
|
|
|
+ log.error("出库单:{} 同步失败 失败原因:{}",getString(saleout2.get("code")) , "重试次数过多");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -924,6 +1016,30 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
return McR.success();
|
|
return McR.success();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public String getInventoryName(String inventoryCode,int dsSequence,Map<String,String> inventory){
|
|
|
|
+ if (inventory.containsKey(inventoryCode)){
|
|
|
|
+ return inventory.get(inventoryCode);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<String, Object> param3 = new HashMap<>();
|
|
|
|
+ param3.put("from_account", fromAccount);
|
|
|
|
+ param3.put("to_account", fromAccount);
|
|
|
|
+ param3.put("app_key", u8AppKey);
|
|
|
|
+ param3.put("token", getU8Token());
|
|
|
|
+ param3.put("id", inventoryCode);
|
|
|
|
+ param3.put("ds_sequence", dsSequence);
|
|
|
|
+
|
|
|
|
+ Map<String,Object> map3 = get("https://api.yonyouup.com/api/inventory/get", param3, null);
|
|
|
|
+
|
|
|
|
+ Map inventoryInfo = (Map) map3.get("inventory");
|
|
|
|
+
|
|
|
|
+ String inventoryName = getString(inventoryInfo.get("name"));
|
|
|
|
+
|
|
|
|
+ inventory.put(inventoryCode,inventoryName);
|
|
|
|
+
|
|
|
|
+ return inventoryName;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public McR testInnerTable() {
|
|
public McR testInnerTable() {
|
|
MDC.put("MDC_KEY_PID","1019");
|
|
MDC.put("MDC_KEY_PID","1019");
|
|
@@ -1689,4 +1805,32 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
return accessToken;
|
|
return accessToken;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String getWeekRange(String dateStr) {
|
|
|
|
+ //获取所属周(每周六-下周五)
|
|
|
|
+ DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+ LocalDate date = LocalDate.parse(dateStr, inputFormatter);
|
|
|
|
+
|
|
|
|
+ LocalDate startOfWeek;
|
|
|
|
+
|
|
|
|
+ // 获取该周的周六(开始日期)
|
|
|
|
+ startOfWeek = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.SATURDAY));
|
|
|
|
+
|
|
|
|
+ // 获取该周的周五(结束日期)
|
|
|
|
+ LocalDate endOfWeek = startOfWeek.plusDays(6);
|
|
|
|
+
|
|
|
|
+ DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM.dd");
|
|
|
|
+
|
|
|
|
+ return startOfWeek.format(outputFormatter) + "-" + endOfWeek.format(outputFormatter);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public boolean isNumber(String str) {
|
|
|
|
+ try {
|
|
|
|
+ Double.parseDouble(str);
|
|
|
|
+ return true;
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|