瀏覽代碼

佣金订单

yuansh 6 天之前
父節點
當前提交
c9f0445d8b
共有 32 個文件被更改,包括 1555 次插入107 次删除
  1. 292 6
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/PurOrderB2bController.java
  2. 296 7
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/SaleOrderB2bController.java
  3. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderB2b.java
  4. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderProductB2b.java
  5. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderB2b.java
  6. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderProductB2b.java
  7. 3 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/PurOrderB2bPage.java
  8. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/SaleOrderB2bPage.java
  9. 103 2
      srm-module-code/src/main/java/org/jeecg/modules/platCode/controller/PlatCommissionOrderController.java
  10. 3 2
      srm-module-code/src/main/java/org/jeecg/modules/purCode/controller/PurOrderController.java
  11. 2 5
      srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderProduct.java
  12. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderProductHis.java
  13. 0 3
      srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderShip.java
  14. 1 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/mapper/xml/PurOrderProductMapper.xml
  15. 140 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/service/impl/PurDeliveryNoteServiceImpl.java
  16. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/vo/PurOrderAlert.java
  17. 4 8
      srm-module-code/src/main/java/org/jeecg/modules/purCode/vo/PurOrderPage.java
  18. 13 9
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInvoiceController.java
  19. 9 9
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleOrderController.java
  20. 0 3
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleContractProduct.java
  21. 0 3
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleContractShip.java
  22. 0 4
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleOrderProduct.java
  23. 0 3
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleOrderShip.java
  24. 2 2
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleQuotation.java
  25. 4 4
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleInquiryFormServiceImpl.java
  26. 5 5
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleOrderServiceImpl.java
  27. 55 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleQuotationServiceImpl.java
  28. 4 8
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleContractPage.java
  29. 2 3
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleInvoicePage.java
  30. 4 12
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleOrderPage.java
  31. 4 2
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleQuotationPage.java
  32. 595 7
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StorePurchaseInServiceImpl.java

+ 292 - 6
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/PurOrderB2bController.java

@@ -3,16 +3,16 @@ package org.jeecg.modules.b2bCode.controller;
 import java.io.UnsupportedEncodingException;
 import java.io.IOException;
 import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
-import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.purCode.entity.PurDeliveryNote;
+import org.jeecg.modules.purCode.entity.PurOrder;
+import org.jeecg.modules.purCode.entity.PurPaymentRequest;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -201,7 +201,293 @@ public class PurOrderB2bController {
 		return Result.OK(purOrderProductB2bList);
 	}
 
-    /**
+
+
+	 /**
+	  * 批量提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "采购订单-批量提交")
+	 @ApiOperation(value = "采购订单-批量提交", notes = "采购订单-批量提交")
+	 @GetMapping(value = "/submitBatch")
+	 public Result<String> submitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<PurOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PurOrderB2b> list = purOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (PurOrderB2b o : list) {
+			 // 1-已提交,0-未提交
+			 String submit = o.getSubmit();
+			 String code = o.getBillCode();
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+			 if (submit != null && submit != "" && submit.equals("1")) {
+				 sb.append("单据编码" + code).append("已提交,请勿再次提交;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PurOrderB2b ent = new PurOrderB2b();
+		 ent.setSubmit("1");
+		 purOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("提交成功!");
+	 }
+
+	 /**
+	  * 批量取消提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "采购订单-批量取消提交")
+	 @ApiOperation(value = "采购订单-批量取消提交", notes = "采购订单-批量取消提交")
+	 @GetMapping(value = "/returnSubmitBatch")
+	 public Result<String> returnSubmitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<PurOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PurOrderB2b> list = purOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (PurOrderB2b o : list) {
+			 //提交(1-是 ,0-否)
+			 String submit = o.getSubmit();
+			 Integer status = o.getStatus();
+			 String code = o.getBillCode();
+			 String version = o.getVersion();
+
+			 if (status != null && status.equals(1)) {
+//            if (status != null && status == 1) {
+				 sb.append("单号" + code).append("客户已确认,无法取消提交;");
+				 continue;
+			 }
+			 if (submit == null || submit == "" || submit.equals("0")) {
+				 sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(version) && !version.equals("1")) {
+				 sb.append("单号" + code).append("含有修订记录,无法取消提交;");
+				 continue;
+			 }
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && getClose.equals("1")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PurOrderB2b ent = new PurOrderB2b();
+		 ent.setSubmit("0");
+		 purOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("取消提交成功!");
+	 }
+
+
+	 /**
+	  * 批量确认
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "采购订单-批量确认")
+	 @ApiOperation(value = "采购订单-批量确认", notes = "采购订单-批量确认")
+	 @GetMapping(value = "/submitConfirm")
+	 public Result<String> submitConfirm(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<PurOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PurOrderB2b> list = purOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (PurOrderB2b o : list) {
+			 //提交(1-是 ,0-否)
+			 String getSubmit = o.getSubmit();
+			 // 1-已确认,0-未确认
+			 Integer getStatus = o.getStatus();
+			 String code = o.getBillCode();
+
+			 if (getSubmit == null || getSubmit == "" || getSubmit.equals("0")) {
+				 sb.append("单据编码" + code).append("还未提交,无法确认;");
+				 continue;
+			 }
+			 if (getStatus != null && getStatus.equals(1)) {
+//            if (getStatus != null && getStatus==1) {
+				 sb.append("单据编码" + code).append("已确认,请勿再次确认;");
+				 continue;
+			 }
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PurOrderB2b ent = new PurOrderB2b();
+		 ent.setStatus(1);
+		 LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
+		 ent.setConfirmBy(sysUser.getUsername());
+		 ent.setConfirmTime(new Date());
+		 purOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("确认成功!");
+	 }
+
+	 /**
+	  * 批量取消确认
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "采购订单-批量取消确认")
+	 @ApiOperation(value = "采购订单-批量取消确认", notes = "采购订单-批量取消确认")
+	 @GetMapping(value = "/returnSubmitConfirm")
+	 public Result<String> returnSubmitConfirm(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<PurOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PurOrderB2b> list = purOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (PurOrderB2b o : list) {
+			 //确认(1-是 ,0-否)
+			 Integer submit = o.getStatus();
+			 String code = o.getBillCode();
+			 String version = o.getVersion();
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (submit == null || submit.equals(0)) {
+				 sb.append("单号" + code).append("已取消确认,请勿再次取消确认;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法取消确认;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(version) && !version.equals("1")) {
+				 sb.append("单号" + code).append("含有修订记录,无法取消确认;");
+				 continue;
+			 }
+
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PurOrderB2b ent = new PurOrderB2b();
+		 ent.setStatus(0);
+		 purOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("取消确认成功!");
+	 }
+
+	 /**
+	  * 批量关闭
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "采购订单-批量关闭")
+	 @ApiOperation(value = "采购订单-批量关闭", notes = "采购订单-批量关闭")
+	 @GetMapping(value = "/submitClose")
+	 public Result<String> submitClose(@RequestParam(name = "ids", required = true) String ids,String closeReason) {
+
+		 QueryWrapper<PurOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PurOrderB2b> list = purOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (PurOrderB2b o : list) {
+
+			 String code = o.getBillCode();
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+			 String submit = o.getSubmit();//提交(submit)1是0否
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无需再次关闭;");
+				 continue;
+			 }
+			 if (StringUtils.isBlank(submit) || submit.equals("0")) {
+				 sb.append("单据编码" + code).append("还未提交,无需关闭;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PurOrderB2b ent = new PurOrderB2b();
+		 ent.setClose("1");
+		 ent.setCloseReason(closeReason);
+		 purOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("关闭成功!");
+	 }
+
+
+	 /**
     * 导出excel
     *
     * @param request

+ 296 - 7
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/controller/SaleOrderB2bController.java

@@ -3,16 +3,19 @@ package org.jeecg.modules.b2bCode.controller;
 import java.io.UnsupportedEncodingException;
 import java.io.IOException;
 import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
-import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.purCode.entity.PurCommissionRequest;
+import org.jeecg.modules.purCode.entity.PurOrder;
+import org.jeecg.modules.saleCode.entity.SaleAdvancePayment;
+import org.jeecg.modules.saleCode.entity.SaleDelivery;
+import org.jeecg.modules.saleCode.entity.SaleOrder;
+import org.jeecg.modules.saleCode.entity.SaleReceipt;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -155,8 +158,294 @@ public class SaleOrderB2bController {
 		this.saleOrderB2bService.delBatchMain(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
-	/**
+
+
+	 /**
+	  * 批量提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "销售订单B2b-批量提交")
+	 @ApiOperation(value = "销售订单B2b-批量提交", notes = "销售订单B2b-批量提交")
+	 @GetMapping(value = "/submitBatch")
+	 public Result<String> submitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<SaleOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<SaleOrderB2b> list = saleOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (SaleOrderB2b o : list) {
+			 // 1-已提交,0-未提交
+			 String submit = o.getSubmit();
+			 String code = o.getBillCode();
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+			 if (submit != null && submit != "" && submit.equals("1")) {
+				 sb.append("单据编码" + code).append("已提交,请勿再次提交;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 SaleOrderB2b ent = new SaleOrderB2b();
+		 ent.setSubmit("1");
+		 saleOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("提交成功!");
+	 }
+
+	 /**
+	  * 批量取消提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "销售订单B2b-批量取消提交")
+	 @ApiOperation(value = "销售订单B2b-批量取消提交", notes = "销售订单B2b-批量取消提交")
+	 @GetMapping(value = "/returnSubmitBatch")
+	 public Result<String> returnSubmitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<SaleOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<SaleOrderB2b> list = saleOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (SaleOrderB2b o : list) {
+			 //提交(1-是 ,0-否)
+			 String submit = o.getSubmit();
+			 Integer Status = o.getStatus();
+			 String code = o.getBillCode();
+			 String version = o.getVersion();
+
+			 if (Status != null && Status.equals(1)) {
+				 sb.append("单号" + code).append("客户已确认,无法取消提交;");
+				 continue;
+			 }
+			 if (submit == null || submit == "" || submit.equals("0")) {
+				 sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(version) && !version.equals("1")) {
+				 sb.append("单号" + code).append("含有修订记录,无法取消提交;");
+				 continue;
+			 }
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+
+//
+
+
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 SaleOrderB2b ent = new SaleOrderB2b();
+		 ent.setSubmit("0");
+		 saleOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("取消提交成功!");
+	 }
+
+	 /**
+	  * 批量确认
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "销售订单B2b-批量确认")
+	 @ApiOperation(value = "销售订单B2b-批量确认", notes = "销售订单B2b-批量确认")
+	 @GetMapping(value = "/submitConfirm")
+	 public Result<String> submitConfirm(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<SaleOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<SaleOrderB2b> list = saleOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (SaleOrderB2b o : list) {
+			 //提交(1-是 ,0-否)
+			 String getSubmit = o.getSubmit();
+			 // 1-已确认,0-未确认
+			 Integer getStatus = o.getStatus();
+			 String code = o.getBillCode();
+
+			 if (getSubmit == null || getSubmit == "" || getSubmit.equals(0)) {
+				 sb.append("单据编码" + code).append("还未提交,无法确认;");
+				 continue;
+			 }
+			 if (getStatus != null && getStatus.equals(1)) {
+				 sb.append("单据编码" + code).append("已确认,请勿再次确认;");
+				 continue;
+			 }
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 SaleOrderB2b ent = new SaleOrderB2b();
+		 ent.setStatus(1);
+		 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		 ent.setConfirmBy(sysUser.getUsername());
+		 ent.setConfirmTime(new Date());
+		 saleOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("确认成功!");
+	 }
+
+	 /**
+	  * 批量取消确认
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "销售订单B2b-批量取消确认")
+	 @ApiOperation(value = "销售订单B2b-批量取消确认", notes = "销售订单B2b-批量取消确认")
+	 @GetMapping(value = "/returnSubmitConfirm")
+	 public Result<String> returnSubmitConfirm(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<SaleOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<SaleOrderB2b> list = saleOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (SaleOrderB2b o : list) {
+			 //确认(1-是 ,0-否)
+			 Integer submit = o.getStatus();
+			 String code = o.getBillCode();
+			 String version = o.getVersion();
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (submit == null || submit.equals(0)) {
+				 sb.append("单号" + code).append("已取消确认,请勿再次取消确认;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法取消确认;");
+				 continue;
+			 }
+
+			 if (StringUtils.isNotBlank(version) && !version.equals("1")) {
+				 sb.append("单号" + code).append("含有修订记录,无法取消确认;");
+				 continue;
+			 }
+
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 SaleOrderB2b ent = new SaleOrderB2b();
+		 ent.setStatus(0);
+		 saleOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("取消确认成功!");
+	 }
+
+	 /**
+	  * 批量关闭
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "销售订单B2b-批量关闭")
+	 @ApiOperation(value = "销售订单B2b-批量关闭", notes = "销售订单B2b-批量关闭")
+	 @GetMapping(value = "/submitClose")
+	 public Result<String> submitClose(@RequestParam(name = "ids", required = true) String ids, String closeReason) {
+
+		 QueryWrapper<SaleOrderB2b> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<SaleOrderB2b> list = saleOrderB2bService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+		 for (SaleOrderB2b o : list) {
+
+			 String submit = o.getSubmit();//提交(submit)1是0否
+			 String code = o.getBillCode();
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无需再次关闭;");
+				 continue;
+			 }
+			 if (StringUtils.isBlank(submit) || submit.equals("0")) {
+				 sb.append("单据编码" + code).append("还未提交,无需关闭;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 SaleOrderB2b ent = new SaleOrderB2b();
+		 ent.setClose("1");
+		 ent.setCloseReason(closeReason);
+		 saleOrderB2bService.update(ent, queryWrapper);
+
+		 return Result.OK("关闭成功!");
+	 }
+
+
+
+	 /**
 	 * 通过id查询
 	 *
 	 * @param id

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderB2b.java

@@ -245,4 +245,6 @@ public class    PurOrderB2b implements Serializable {
     @Excel(name = "关闭原因", width = 15)
     @ApiModelProperty(value = "关闭原因")
     private java.lang.String closeReason;
+    //b2b来源入库单
+    private java.lang.String sourceB2b;
 }

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/PurOrderProductB2b.java

@@ -171,4 +171,6 @@ public class PurOrderProductB2b implements Serializable {
     @Excel(name = "采购报价单价(原价)", width = 15)
     @ApiModelProperty(value = "采购报价单价(原价)")
     private java.math.BigDecimal taxPriceOriginal;
+    //b2b来源入库单
+    private java.lang.String sourceB2b;
 }

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderB2b.java

@@ -290,4 +290,6 @@ public class SaleOrderB2b implements Serializable {
     @Excel(name = "关闭原因", width = 15)
     @ApiModelProperty(value = "关闭原因")
     private java.lang.String closeReason;
+    //b2b来源入库单
+    private java.lang.String sourceB2b;
 }

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/entity/SaleOrderProductB2b.java

@@ -194,4 +194,6 @@ public class SaleOrderProductB2b implements Serializable {
     @Excel(name = "采购金额", width = 15)
     @ApiModelProperty(value = "采购金额")
     private java.math.BigDecimal purchaseAmount;
+    //b2b来源入库单
+    private java.lang.String sourceB2b;
 }

+ 3 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/PurOrderB2bPage.java

@@ -241,6 +241,9 @@ public class PurOrderB2bPage {
 	@ApiModelProperty(value = "关闭原因")
 	private java.lang.String closeReason;
 
+	//b2b来源入库单
+	private java.lang.String sourceB2b;
+
 	@ExcelCollection(name="采购订单b2b子表 - 船明细")
 	@ApiModelProperty(value = "采购订单b2b子表 - 船明细")
 	private List<PurOrderShipB2b> purOrderShipB2bList;

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/b2bCode/vo/SaleOrderB2bPage.java

@@ -287,6 +287,8 @@ public class SaleOrderB2bPage {
 	@Excel(name = "关闭原因", width = 15)
 	@ApiModelProperty(value = "关闭原因")
 	private java.lang.String closeReason;
+	//b2b来源入库单
+	private java.lang.String sourceB2b;
 
 	@ExcelCollection(name="销售订单b2b子表 - 船明细")
 	@ApiModelProperty(value = "销售订单b2b子表 - 船明细")

+ 103 - 2
srm-module-code/src/main/java/org/jeecg/modules/platCode/controller/PlatCommissionOrderController.java

@@ -18,6 +18,8 @@ import org.jeecg.modules.baseCode.service.ISerialPatternService;
 import org.jeecg.modules.platCode.entity.PlatCommissionContract;
 import org.jeecg.modules.platCode.entity.PlatCommissionOrder;
 import org.jeecg.modules.platCode.service.IPlatCommissionContractService;
+import org.jeecg.modules.saleCode.entity.SaleInvoice;
+import org.jeecg.modules.saleCode.service.ISaleInvoiceService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -71,6 +73,8 @@ public class PlatCommissionOrderController {
 	 private IPlatCommissionContractService platCommissionContractService;
 	 @Autowired
 	 private ISerialPatternService serialPatternService;
+	 @Autowired
+	 private ISaleInvoiceService saleInvoiceService;
 	
 	/**
 	 * 分页列表查询
@@ -93,7 +97,34 @@ public class PlatCommissionOrderController {
 		IPage<PlatCommissionOrder> pageList = platCommissionOrderService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
+	/**
+	 * 分页列表查询 销售发票使用
+	 *
+	 * @param platCommissionOrder
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@ApiOperation(value="佣金订单-分页列表查询 销售发票使用", notes="佣金订单-分页列表查询 销售发票使用")
+	@GetMapping(value = "/queryPageListInvoice")
+	public Result<IPage<PlatCommissionOrder>> queryPageListInvoice(PlatCommissionOrder platCommissionOrder,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        QueryWrapper<PlatCommissionOrder> queryWrapper = QueryGenerator.initQueryWrapper(platCommissionOrder, req.getParameterMap());
+		Page<PlatCommissionOrder> page = new Page<PlatCommissionOrder>(pageNo, pageSize);
+
+		queryWrapper.isNull("invoice_code");//发票号(开发票时回写至此字段)
+        queryWrapper.eq("apply_invoice","1");// 是否开票申请(1是 0否)
+		queryWrapper.eq("submit","1");// 提交(submit)1是0否
+		queryWrapper.eq("close","0");// 关闭(close)1是0否
+
+		IPage<PlatCommissionOrder> pageList = platCommissionOrderService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
 	/**
 	 *   添加
 	 *
@@ -206,6 +237,64 @@ public class PlatCommissionOrderController {
 
 
 
+	 /**
+	  * 批量开票申请
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "佣金订单-批量开票申请")
+	 @ApiOperation(value = "佣金订单-批量开票申请", notes = "佣金订单-批量开票申请")
+	 @GetMapping(value = "/applyInvoice")
+	 public Result<String> applyInvoice(@RequestParam(name = "ids", required = true) String ids) {
+
+		 QueryWrapper<PlatCommissionOrder> queryWrapper = new QueryWrapper<>();
+		 queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		 List<PlatCommissionOrder> list = platCommissionOrderService.list(queryWrapper);
+		 if (list.size() == 0) {
+			 return Result.error("数据为空!");
+		 }
+
+		 StringBuffer sb = new StringBuffer();
+
+		 for (PlatCommissionOrder o : list) {
+			 // 1-已提交,0-未提交
+			 String submit = o.getSubmit();
+			 String code = o.getBillCode();
+			 //开票申请(apply invoice)1是0否
+			 String applyInvoice = o.getApplyInvoice();
+
+			 //关闭(close)1是0否
+			 String getClose = o.getClose();
+
+			 if (StringUtils.isNotBlank(getClose) && !getClose.equals("0")) {
+				 sb.append("单号" + code).append("已关闭,无法执行此操作;");
+				 continue;
+			 }
+			 if (StringUtils.isNotBlank(applyInvoice) && applyInvoice.equals("1")) {
+				 sb.append("单号" + code).append("已申请,请勿重复执行此操作;");
+				 continue;
+			 }
+			 if (submit == null || submit != "" && submit.equals("0")) {
+				 sb.append("单据编码" + code).append("未提交,请提交后操作;");
+				 continue;
+			 }
+		 }
+
+		 if (StringUtils.isNotBlank(sb.toString())) {
+
+			 return Result.error(sb.toString());
+		 }
+
+		 PlatCommissionOrder ent = new PlatCommissionOrder();
+		 ent.setApplyInvoice("1");
+		 platCommissionOrderService.update(ent, queryWrapper);
+
+		 return Result.OK("执行成功!");
+	 }
+
+
 	 /**
 	  * 批量提交
 	  *
@@ -296,6 +385,18 @@ public class PlatCommissionOrderController {
 				 continue;
 			 }
 
+			 QueryWrapper<SaleInvoice> querySaleInvoice = new QueryWrapper();
+			 querySaleInvoice.eq("source_code", code);
+			 querySaleInvoice.eq("del_flag", "0");
+			 querySaleInvoice.eq("close", "0");//作废(close)1是0否
+
+			 List<SaleInvoice> listSaleInvoice = saleInvoiceService.list(querySaleInvoice);
+			 if (listSaleInvoice.size() > 0) {
+				 List<String> codeList = listSaleInvoice.stream().map(SaleInvoice::getInvoiceCode).collect(Collectors.toList());
+				 String codes = StringUtils.join(codeList.toArray(), ",");
+				 sb.append("单号" + code).append("已被销售发票使用,请勿取消提交" + codes + ";");
+				 continue;
+			 }
 		 }
 
 		 if (StringUtils.isNotBlank(sb.toString())) {
@@ -307,7 +408,7 @@ public class PlatCommissionOrderController {
 		 ent.setSubmit("0");
 		 platCommissionOrderService.update(ent, queryWrapper);
 
-		 return Result.OK("提交成功!");
+		 return Result.OK("取消提交成功!");
 	 }
 
 	 /**

+ 3 - 2
srm-module-code/src/main/java/org/jeecg/modules/purCode/controller/PurOrderController.java

@@ -155,13 +155,13 @@ public class PurOrderController {
                                              HttpServletRequest req) {
         QueryWrapper<PurOrder> queryWrapper = QueryGenerator.initQueryWrapper(purOrder, req.getParameterMap());
         Page<PurOrder> page = new Page<PurOrder>(pageNo, pageSize);
-        queryWrapper.apply("total_amount > IFNULL(total_amount_used, 0)");
+        queryWrapper.apply("discount_amount > IFNULL(total_amount_used, 0)");
         IPage<PurOrder> pageList = purOrderService.page(page, queryWrapper);
         return Result.OK(pageList);
     }
 
     /**
-     * 采购订单弹框明细
+     * 采购订单弹框明细(到货单使用)
      *
      * @param saleInquiryForm
      * @param pageNo
@@ -179,6 +179,7 @@ public class PurOrderController {
 
         QueryWrapper<PurOrderAlert> queryWrapper = QueryGenerator.initQueryWrapper(saleInquiryForm, req.getParameterMap());
         Page<PurOrderAlert> page = new Page<PurOrderAlert>(pageNo, pageSize);
+        queryWrapper.apply("quantity > IFNULL(arrival_quantity, 0)");
         IPage<PurOrderAlert> pageList = purOrderProductService.selectPurOrderDetailAlert(page, queryWrapper);
         return Result.OK(pageList);
     }

+ 2 - 5
srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderProduct.java

@@ -51,11 +51,9 @@ public class PurOrderProduct implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -81,7 +79,6 @@ public class PurOrderProduct implements Serializable {
     @ApiModelProperty(value = "最晚发货日期(latest delivery date)")
     private Date latestDeliveryDate;
     /**产品id*/
-    @Excel(name = "产品id", width = 15)
     @ApiModelProperty(value = "产品id")
     private String productId;
     /**产品中文名(chinese name)*/
@@ -147,13 +144,13 @@ public class PurOrderProduct implements Serializable {
     @ApiModelProperty(value = "备注(notes)")
     private String notes;
 	/**参照来源id*/
-	@Excel(name = "参照来源id", width = 15)
     @ApiModelProperty(value = "参照来源id")
     private String sourceId;
 	/**参照来源*/
-	@Excel(name = "参照来源", width = 15)
     @ApiModelProperty(value = "参照来源")
     private String sourceType;
+    @ApiModelProperty(value = "已到货数量(到货单已参照数量)")
+    private java.math.BigDecimal arrivalQuantity;
 
     @TableField(exist = false)
     private Integer rowNumber;

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderProductHis.java

@@ -156,6 +156,8 @@ public class PurOrderProductHis implements Serializable {
 	@Excel(name = "参照来源", width = 15)
     @ApiModelProperty(value = "参照来源")
     private String sourceType;
+    @ApiModelProperty(value = "已到货数量(到货单已参照数量)")
+    private java.math.BigDecimal arrivalQuantity;
 	/**历史主键*/
 	@Excel(name = "历史主键", width = 15)
     @ApiModelProperty(value = "历史主键")

+ 0 - 3
srm-module-code/src/main/java/org/jeecg/modules/purCode/entity/PurOrderShip.java

@@ -51,11 +51,9 @@ public class PurOrderShip implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -63,7 +61,6 @@ public class PurOrderShip implements Serializable {
     @ApiModelProperty(value = "表头主键(采购订单)")
     private String headId;
 	/**船id*/
-	@Excel(name = "船id", width = 15)
     @ApiModelProperty(value = "船id")
     private String shipId;
 	/**船名*/

+ 1 - 0
srm-module-code/src/main/java/org/jeecg/modules/purCode/mapper/xml/PurOrderProductMapper.xml

@@ -40,6 +40,7 @@
 
 			 ,b.tax_price
 			 ,b.tax_amount
+			 ,b.arrival_quantity
 
 			 , b.notes childNotes
 

+ 140 - 0
srm-module-code/src/main/java/org/jeecg/modules/purCode/service/impl/PurDeliveryNoteServiceImpl.java

@@ -1,17 +1,21 @@
 package org.jeecg.modules.purCode.service.impl;
 
+import org.apache.commons.lang.StringUtils;
 import org.jeecg.modules.purCode.entity.PurDeliveryNote;
 import org.jeecg.modules.purCode.entity.PurDeliveryNodeShip;
 import org.jeecg.modules.purCode.entity.PurDeliveryNoteArrival;
+import org.jeecg.modules.purCode.entity.PurOrderProduct;
 import org.jeecg.modules.purCode.mapper.PurDeliveryNodeShipMapper;
 import org.jeecg.modules.purCode.mapper.PurDeliveryNoteArrivalMapper;
 import org.jeecg.modules.purCode.mapper.PurDeliveryNoteMapper;
+import org.jeecg.modules.purCode.mapper.PurOrderProductMapper;
 import org.jeecg.modules.purCode.service.IPurDeliveryNoteService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Collection;
 
@@ -30,6 +34,8 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 	private PurDeliveryNodeShipMapper purDeliveryNodeShipMapper;
 	@Autowired
 	private PurDeliveryNoteArrivalMapper purDeliveryNoteArrivalMapper;
+	@Autowired
+	private PurOrderProductMapper purOrderProductMapper;
 	
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -49,6 +55,22 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 				entity.setId(null);
 				entity.setHeadId(purDeliveryNote.getId());
 				purDeliveryNoteArrivalMapper.insert(entity);
+
+				String sourceId = entity.getSourceId();
+
+				if (StringUtils.isNotBlank(sourceId)) {
+
+					BigDecimal quantity = entity.getQuantity() == null ? BigDecimal.ZERO : entity.getQuantity();//数量
+					PurOrderProduct purOrderProduct = purOrderProductMapper.selectById(sourceId);
+					if (purOrderProduct != null) {
+						BigDecimal arrivalQuantity = purOrderProduct.getArrivalQuantity() == null ? BigDecimal.ZERO : purOrderProduct.getArrivalQuantity();//已到货数量
+
+						arrivalQuantity = arrivalQuantity.add(quantity);
+						purOrderProduct.setArrivalQuantity(arrivalQuantity);
+						purOrderProductMapper.updateById(purOrderProduct);
+					}
+
+				}
 			}
 		}
 	}
@@ -56,6 +78,40 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void updateMain(PurDeliveryNote purDeliveryNote,List<PurDeliveryNodeShip> purDeliveryNodeShipList,List<PurDeliveryNoteArrival> purDeliveryNoteArrivalList) {
+
+		List<PurDeliveryNoteArrival> detailArrivalList = purDeliveryNoteArrivalMapper.selectByMainId(purDeliveryNote.getId());
+
+		if (detailArrivalList != null && detailArrivalList.size() > 0) {
+
+			for(PurDeliveryNoteArrival entity:detailArrivalList) {
+				String sourceId = entity.getSourceId();
+
+				if (StringUtils.isNotBlank(sourceId)) {
+
+					BigDecimal quantity = entity.getQuantity() == null ? BigDecimal.ZERO : entity.getQuantity();//数量
+
+					PurOrderProduct purOrderProduct = purOrderProductMapper.selectById(sourceId);
+					if (purOrderProduct != null) {
+						BigDecimal arrivalQuantity = purOrderProduct.getArrivalQuantity() == null ? BigDecimal.ZERO : purOrderProduct.getArrivalQuantity();//已到货数量
+
+						arrivalQuantity = arrivalQuantity.subtract(quantity);
+
+						if (arrivalQuantity.compareTo(BigDecimal.ZERO) < 1) {
+							purOrderProduct.setArrivalQuantity(BigDecimal.ZERO);
+						} else {
+
+							purOrderProduct.setArrivalQuantity(arrivalQuantity);
+						}
+
+						purOrderProductMapper.updateById(purOrderProduct);
+					}
+
+				}
+			}
+
+		}
+
+
 		purDeliveryNoteMapper.updateById(purDeliveryNote);
 		
 		//1.先删除子表数据
@@ -77,6 +133,23 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 				entity.setId(null);
 				entity.setHeadId(purDeliveryNote.getId());
 				purDeliveryNoteArrivalMapper.insert(entity);
+
+				String sourceId = entity.getSourceId();
+
+				if (StringUtils.isNotBlank(sourceId)) {
+
+					BigDecimal quantity = entity.getQuantity() == null ? BigDecimal.ZERO : entity.getQuantity();//数量
+					PurOrderProduct purOrderProduct = purOrderProductMapper.selectById(sourceId);
+					if (purOrderProduct != null) {
+						BigDecimal arrivalQuantity = purOrderProduct.getArrivalQuantity() == null ? BigDecimal.ZERO : purOrderProduct.getArrivalQuantity();//已到货数量
+
+						arrivalQuantity = arrivalQuantity.add(quantity);
+						purOrderProduct.setArrivalQuantity(arrivalQuantity);
+						purOrderProductMapper.updateById(purOrderProduct);
+					}
+
+				}
+
 			}
 		}
 	}
@@ -84,6 +157,40 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void delMain(String id) {
+
+		List<PurDeliveryNoteArrival> detailArrivalList = purDeliveryNoteArrivalMapper.selectByMainId(id);
+
+		if (detailArrivalList != null && detailArrivalList.size() > 0) {
+
+			for(PurDeliveryNoteArrival entity:detailArrivalList) {
+				String sourceId = entity.getSourceId();
+
+				if (StringUtils.isNotBlank(sourceId)) {
+
+					BigDecimal quantity = entity.getQuantity() == null ? BigDecimal.ZERO : entity.getQuantity();//数量
+
+					PurOrderProduct purOrderProduct = purOrderProductMapper.selectById(sourceId);
+					if (purOrderProduct != null) {
+						BigDecimal arrivalQuantity = purOrderProduct.getArrivalQuantity() == null ? BigDecimal.ZERO : purOrderProduct.getArrivalQuantity();//已到货数量
+
+						arrivalQuantity = arrivalQuantity.subtract(quantity);
+
+						if (arrivalQuantity.compareTo(BigDecimal.ZERO) < 1) {
+							purOrderProduct.setArrivalQuantity(BigDecimal.ZERO);
+						} else {
+
+							purOrderProduct.setArrivalQuantity(arrivalQuantity);
+						}
+
+						purOrderProductMapper.updateById(purOrderProduct);
+					}
+
+				}
+			}
+
+		}
+
+
 		purDeliveryNodeShipMapper.deleteByMainId(id);
 		purDeliveryNoteArrivalMapper.deleteByMainId(id);
 		purDeliveryNoteMapper.deleteById(id);
@@ -93,6 +200,39 @@ public class PurDeliveryNoteServiceImpl extends ServiceImpl<PurDeliveryNoteMappe
 	@Transactional(rollbackFor = Exception.class)
 	public void delBatchMain(Collection<? extends Serializable> idList) {
 		for(Serializable id:idList) {
+
+			List<PurDeliveryNoteArrival> detailArrivalList = purDeliveryNoteArrivalMapper.selectByMainId(id.toString());
+
+			if (detailArrivalList != null && detailArrivalList.size() > 0) {
+
+				for(PurDeliveryNoteArrival entity:detailArrivalList) {
+					String sourceId = entity.getSourceId();
+
+					if (StringUtils.isNotBlank(sourceId)) {
+
+						BigDecimal quantity = entity.getQuantity() == null ? BigDecimal.ZERO : entity.getQuantity();//数量
+
+						PurOrderProduct purOrderProduct = purOrderProductMapper.selectById(sourceId);
+						if (purOrderProduct != null) {
+							BigDecimal arrivalQuantity = purOrderProduct.getArrivalQuantity() == null ? BigDecimal.ZERO : purOrderProduct.getArrivalQuantity();//已到货数量
+
+							arrivalQuantity = arrivalQuantity.subtract(quantity);
+
+							if (arrivalQuantity.compareTo(BigDecimal.ZERO) < 1) {
+								purOrderProduct.setArrivalQuantity(BigDecimal.ZERO);
+							} else {
+
+								purOrderProduct.setArrivalQuantity(arrivalQuantity);
+							}
+
+							purOrderProductMapper.updateById(purOrderProduct);
+						}
+
+					}
+				}
+
+			}
+
 			purDeliveryNodeShipMapper.deleteByMainId(id.toString());
 			purDeliveryNoteArrivalMapper.deleteByMainId(id.toString());
 			purDeliveryNoteMapper.deleteById(id);

+ 2 - 0
srm-module-code/src/main/java/org/jeecg/modules/purCode/vo/PurOrderAlert.java

@@ -296,6 +296,8 @@ public class PurOrderAlert implements Serializable {
     @Excel(name = "备注(notes)", width = 15)
     @ApiModelProperty(value = "备注(notes)")
     private String childNotes;
+    @ApiModelProperty(value = "已到货数量(到货单已参照数量)")
+    private java.math.BigDecimal arrivalQuantity;
 //    /**参照来源id*/
 //    @Excel(name = "参照来源id", width = 15)
 //    @ApiModelProperty(value = "参照来源id")

+ 4 - 8
srm-module-code/src/main/java/org/jeecg/modules/purCode/vo/PurOrderPage.java

@@ -75,19 +75,18 @@ public class PurOrderPage {
 	@ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**客户确认(1-已确认,0-未确认)*/
-	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+	@Excel(name = "客户确认", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
     private Integer status;
 	/**提交(submit)1是0否*/
-	@Excel(name = "提交(submit)1是0否", width = 15)
+	@Excel(name = "提交(submit)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "提交(submit)1是0否")
     private String submit;
 	/**关闭(close)1是0否*/
-	@Excel(name = "关闭(close)1是0否", width = 15)
+	@Excel(name = "关闭(close)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "关闭(close)1是0否")
     private String close;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
 	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     private Integer delFlag;
 	/**单据日期*/
@@ -101,7 +100,6 @@ public class PurOrderPage {
 	@ApiModelProperty(value = "单据编码")
     private String billCode;
 	/**项目(project)*/
-	@Excel(name = "项目(project)", width = 15)
 	@ApiModelProperty(value = "项目(project)")
     private String project;
 	/**项目名称*/
@@ -109,7 +107,6 @@ public class PurOrderPage {
 	@ApiModelProperty(value = "项目名称")
     private String projectName;
 	/**供应商(supplier)*/
-	@Excel(name = "供应商(supplier)", width = 15)
 	@ApiModelProperty(value = "供应商(supplier)")
     private String supplier;
 	/**供应商名称*/
@@ -125,7 +122,7 @@ public class PurOrderPage {
 	@ApiModelProperty(value = "优先级(priority)")
     private String priority;
 	/**产品分类(production class)*/
-	@Excel(name = "产品分类(production class)", width = 15)
+	@Excel(name = "产品分类(production class)", width = 15,dictTable = "base_product_class", dicCode = "id", dicText = "name")
 	@ApiModelProperty(value = "产品分类(production class)")
     private String productionClass;
 	/**机型(model)*/
@@ -201,7 +198,6 @@ public class PurOrderPage {
 	@ApiModelProperty(value = "备注(notes)")
     private String notes;
 	/**附件(attachs)*/
-	@Excel(name = "附件(attachs)", width = 15)
 	@ApiModelProperty(value = "附件(attachs)")
     private String attachs;
 	/**版本号*/

+ 13 - 9
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInvoiceController.java

@@ -766,6 +766,10 @@ public class SaleInvoiceController {
         SaleInvoice saleInvoice = saleInvoiceService.getById(id);
         SaleDelivery saleDelivery = saleDeliveryService.getByBillCode(saleInvoice.getSourceCode());
         SaleOrder saleOrder = saleOrderService.getByBillCode(saleDelivery.getSourceCode());
+        String saleCreateBy = "";
+        if (saleOrder != null) {
+            saleCreateBy = saleOrder.getCreateBy();
+        }
         if (saleOrder == null || saleOrder.getDoubleDiscount() == null) {
             saleOrder = new SaleOrder();
             templates = templatesN;
@@ -968,15 +972,15 @@ public class SaleInvoiceController {
                 saleInvoice.setAgreementTerms(saleOrder.getAgreementTerms());
                 // 制单人信息
 //                SysUser sysUser = sysUserService.getUserByName(saleInvoice.getCreateBy());
-                if(saleOrder !=null && StringUtils.isNotBlank(saleOrder.getCreateBy())){
-                    SysUser sysUser = sysUserService.getUserByName(saleOrder.getCreateBy());
-                    if(sysUser !=null){
-                        saleInvoice.setSalesPhone(sysUser.getPhone());
-                        saleInvoice.setSalesEmail(sysUser.getEmail());
-                        saleInvoice.setSalesmanName(sysUser.getRealname());
-                    }
-
-                }
+//                if(saleOrder !=null && StringUtils.isNotBlank(saleOrder.getCreateBy())){
+//                    SysUser sysUser = sysUserService.getUserByName(saleOrder.getCreateBy());
+//                    if(sysUser !=null){
+//                        saleInvoice.setSalesPhone(sysUser.getPhone());
+//                        saleInvoice.setSalesEmail(sysUser.getEmail());
+//                        saleInvoice.setSalesmanName(sysUser.getRealname());
+//                    }
+                    saleInvoice.setSalesmanName(saleCreateBy);
+//                }
 
                 String templateFilePath = uploadpath + templates.getTemplateFile();
                 String tempFilePath = uploadpath + "/"+ UUIDGenerator.generate()+".xlsx";

+ 9 - 9
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleOrderController.java

@@ -1162,15 +1162,15 @@ public class SaleOrderController {
                 }
                 saleOrder.setShipName(shipname);
                 saleOrder.setImo(imo);
-                // 项目名称
-                if (saleOrder.getProject() != null) {
-                    BaseProjectArchive projectArchive = baseProjectArchiveService.getById(saleOrder.getProject());
-                    if (projectArchive != null) {
-                        saleOrder.setContactsNo(projectArchive.getName());
-                    }
-
-                }
-
+//                // 项目名称
+//                if (saleOrder.getProject() != null) {
+//                    BaseProjectArchive projectArchive = baseProjectArchiveService.getById(saleOrder.getProject());
+//                    if (projectArchive != null) {
+//                        saleOrder.setContactsNo(projectArchive.getName());
+//                    }
+//
+//                }
+                saleOrder.setContactsNo(saleOrder.getCustomerOrder());
                 if (productList.size() > 0) {
 
                     saleOrder.setQualityGrade(productList.get(0).getQualityGrade());

+ 0 - 3
srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleContractProduct.java

@@ -51,11 +51,9 @@ public class SaleContractProduct implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -69,7 +67,6 @@ public class SaleContractProduct implements Serializable {
     @ApiModelProperty(value = "交期")
     private Date deliveryTime;
 	/**产品id*/
-	@Excel(name = "产品id", width = 15)
     @ApiModelProperty(value = "产品id")
     private String productId;
 	/**产品分类*/

+ 0 - 3
srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleContractShip.java

@@ -51,11 +51,9 @@ public class SaleContractShip implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -63,7 +61,6 @@ public class SaleContractShip implements Serializable {
     @ApiModelProperty(value = "表头主键(销售合同)")
     private String headId;
 	/**船id*/
-	@Excel(name = "船id", width = 15)
     @ApiModelProperty(value = "船id")
     private String shipId;
 	/**船名*/

+ 0 - 4
srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleOrderProduct.java

@@ -51,11 +51,9 @@ public class SaleOrderProduct implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -69,7 +67,6 @@ public class SaleOrderProduct implements Serializable {
     @ApiModelProperty(value = "交期")
     private Date deliveryTime;
 	/**产品id*/
-	@Excel(name = "产品id", width = 15)
     @ApiModelProperty(value = "产品id")
     private String productId;
 	/**产品分类*/
@@ -157,7 +154,6 @@ public class SaleOrderProduct implements Serializable {
     @ApiModelProperty(value = "备注(notes)")
     private String notes;
 	/**参照来源*/
-	@Excel(name = "参照来源", width = 15)
     @ApiModelProperty(value = "参照来源")
     private String sourceId;
     private String sourceType;

+ 0 - 3
srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleOrderShip.java

@@ -51,11 +51,9 @@ public class SaleOrderShip implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-启用,0-停用)*/
-	@Excel(name = "状态(1-启用,0-停用)", width = 15)
     @ApiModelProperty(value = "状态(1-启用,0-停用)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
     @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     @TableLogic
     private Integer delFlag;
@@ -63,7 +61,6 @@ public class SaleOrderShip implements Serializable {
     @ApiModelProperty(value = "表头主键(销售订单)")
     private String headId;
 	/**船id*/
-	@Excel(name = "船id", width = 15)
     @ApiModelProperty(value = "船id")
     private String shipId;
 	/**船名*/

+ 2 - 2
srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleQuotation.java

@@ -223,10 +223,10 @@ public class SaleQuotation implements Serializable {
     private String phone;
     @TableField(exist = false)
     private String email;
-    @TableField(exist = false)
+
     private String shipName;
-    @TableField(exist = false)
     private String imo;
+
     @TableField(exist = false)
     private String qualityGrade;
     @TableField(exist = false)

+ 4 - 4
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleInquiryFormServiceImpl.java

@@ -56,8 +56,8 @@ public class SaleInquiryFormServiceImpl extends ServiceImpl<SaleInquiryFormMappe
 
 			List<String> shipIds = saleInquiryFormShipList.stream().map(SaleInquiryFormShip::getShipId).collect(Collectors.toList());
 			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
-			queryShip.eq("id",shipIds);
-			queryShip.eq("del_flag",0);
+			queryShip.in("id",shipIds);
+//			queryShip.eq("del_flag",0);
 			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
 			if(shipList.size() > 0){
 				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));
@@ -95,8 +95,8 @@ public class SaleInquiryFormServiceImpl extends ServiceImpl<SaleInquiryFormMappe
 
 			List<String> shipIds = saleInquiryFormShipList.stream().map(SaleInquiryFormShip::getShipId).collect(Collectors.toList());
 			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
-			queryShip.eq("id",shipIds);
-			queryShip.eq("del_flag",0);
+			queryShip.in("id",shipIds);
+//			queryShip.eq("del_flag",0);
 			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
 			if(shipList.size() > 0){
 				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));

+ 5 - 5
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleOrderServiceImpl.java

@@ -50,8 +50,8 @@ public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderMapper, SaleOrder
 
 			List<String> shipIds = saleOrderShipList.stream().map(SaleOrderShip::getShipId).collect(Collectors.toList());
 			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
-			queryShip.eq("id",shipIds);
-			queryShip.eq("del_flag",0);
+			queryShip.in("id",shipIds);
+//			queryShip.eq("del_flag",0);
 			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
 			if(shipList.size() > 0){
 				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));
@@ -107,7 +107,7 @@ public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderMapper, SaleOrder
 
 			List<String> shipIds = saleOrderShipList.stream().map(SaleOrderShip::getShipId).collect(Collectors.toList());
 			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
-			queryShip.eq("id",shipIds);
+			queryShip.in("id",shipIds);
 			queryShip.eq("del_flag",0);
 			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
 			if(shipList.size() > 0){
@@ -168,8 +168,8 @@ public class SaleOrderServiceImpl extends ServiceImpl<SaleOrderMapper, SaleOrder
 
 			List<String> shipIds = saleOrderShipList.stream().map(SaleOrderShip::getShipId).collect(Collectors.toList());
 			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
-			queryShip.eq("id",shipIds);
-			queryShip.eq("del_flag",0);
+			queryShip.in("id",shipIds);
+//			queryShip.eq("del_flag",0);
 			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
 			if(shipList.size() > 0){
 				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));

+ 55 - 0
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleQuotationServiceImpl.java

@@ -1,5 +1,9 @@
 package org.jeecg.modules.saleCode.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.modules.baseCode.entity.BaseShipArchive;
+import org.jeecg.modules.baseCode.mapper.BaseShipArchiveMapper;
+import org.jeecg.modules.saleCode.entity.SaleOrderShip;
 import org.jeecg.modules.saleCode.entity.SaleQuotation;
 import org.jeecg.modules.saleCode.entity.SaleQuotationShip;
 import org.jeecg.modules.saleCode.entity.SaleQuotationProduct;
@@ -16,6 +20,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Collection;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 销售报价单
@@ -32,6 +37,8 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 	private SaleQuotationShipMapper saleQuotationShipMapper;
 	@Autowired
 	private SaleQuotationProductMapper saleQuotationProductMapper;
+	@Autowired
+	private BaseShipArchiveMapper baseShipArchiveMapper;
 	
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -53,6 +60,24 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 		saleQuotation.setPurchaseAmount(purchaseAmount);
 		saleQuotation.setSaleAmount(saleAmount);
 
+
+		if(saleQuotationShipList!=null && saleQuotationShipList.size()>0) {
+
+			List<String> shipIds = saleQuotationShipList.stream().map(SaleQuotationShip::getShipId).collect(Collectors.toList());
+			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
+			queryShip.in("id",shipIds);
+			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
+			if(shipList.size() > 0){
+				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));
+				saleQuotation.setImo(imos);
+			}
+
+			String names = saleQuotationShipList.stream().map(SaleQuotationShip::getShipName).collect(Collectors.joining(","));
+			saleQuotation.setShipName(names);
+		}
+
+
+
 		saleQuotationMapper.insert(saleQuotation);
 		if(saleQuotationShipList!=null && saleQuotationShipList.size()>0) {
 			for(SaleQuotationShip entity:saleQuotationShipList) {
@@ -92,6 +117,21 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 		saleQuotation.setPurchaseAmount(purchaseAmount);
 		saleQuotation.setSaleAmount(saleAmount);
 
+		if(saleQuotationShipList!=null && saleQuotationShipList.size()>0) {
+
+			List<String> shipIds = saleQuotationShipList.stream().map(SaleQuotationShip::getShipId).collect(Collectors.toList());
+			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
+			queryShip.in("id",shipIds);
+			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
+			if(shipList.size() > 0){
+				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));
+				saleQuotation.setImo(imos);
+			}
+
+			String names = saleQuotationShipList.stream().map(SaleQuotationShip::getShipName).collect(Collectors.joining(","));
+			saleQuotation.setShipName(names);
+		}
+
 		saleQuotationMapper.updateById(saleQuotation);
 		
 		//1.先删除子表数据
@@ -138,6 +178,21 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 		saleQuotation.setPurchaseAmount(purchaseAmount);
 		saleQuotation.setSaleAmount(saleAmount);
 
+		if(saleQuotationShipList!=null && saleQuotationShipList.size()>0) {
+
+			List<String> shipIds = saleQuotationShipList.stream().map(SaleQuotationShip::getShipId).collect(Collectors.toList());
+			QueryWrapper<BaseShipArchive> queryShip = new QueryWrapper<>();
+			queryShip.in("id",shipIds);
+			List<BaseShipArchive> shipList = baseShipArchiveMapper.selectList(queryShip);
+			if(shipList.size() > 0){
+				String imos = shipList.stream().map(BaseShipArchive::getImo).collect(Collectors.joining(","));
+				saleQuotation.setImo(imos);
+			}
+
+			String names = saleQuotationShipList.stream().map(SaleQuotationShip::getShipName).collect(Collectors.joining(","));
+			saleQuotation.setShipName(names);
+		}
+
 		saleQuotationMapper.updateById(saleQuotation);
 
 		//1.先删除子表数据

+ 4 - 8
srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleContractPage.java

@@ -51,12 +51,11 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-已提交,0-未提交)*/
-	@Excel(name = "状态(1-已提交,0-未提交)", width = 15)
+	@Excel(name = "状态", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "状态(1-已提交,0-未提交)")
 	@Dict(dicCode = "yes_or_no")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
 	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     private Integer delFlag;
 	/**单据日期*/
@@ -66,11 +65,10 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "单据日期")
     private Date billDate;
 	/**单据编码*/
-	@Excel(name = "单据编码", width = 15)
+	@Excel(name = "单据编码", width = 20)
 	@ApiModelProperty(value = "单据编码")
     private String billCode;
 	/**报价项目*/
-	@Excel(name = "报价项目", width = 15)
 	@ApiModelProperty(value = "报价项目")
     private String quotationProject;
 	/**报价项目名称*/
@@ -78,7 +76,6 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "报价项目名称")
     private String quotationProjectName;
 	/**报价客户*/
-	@Excel(name = "报价客户", width = 15)
 	@ApiModelProperty(value = "报价客户")
     private String quotationCustomer;
 	/**报价客户名称*/
@@ -94,7 +91,7 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "优先级(priority)")
     private String priority;
 	/**产品分类(production class)*/
-	@Excel(name = "产品分类(production class)", width = 15)
+	@Excel(name = "产品分类(production class)", width = 15,dictTable = "base_product_class", dicCode = "id", dicText = "name")
 	@ApiModelProperty(value = "产品分类(production class)")
     private String productionClass;
 	/**机型(model)*/
@@ -140,7 +137,6 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "备注(notes)")
     private String notes;
 	/**附件(attachs)*/
-	@Excel(name = "附件(attachs)", width = 15)
 	@ApiModelProperty(value = "附件(attachs)")
     private String attachs;
 	/**版本号*/
@@ -148,7 +144,7 @@ public class SaleContractPage {
 	@ApiModelProperty(value = "版本号")
     private String version;
 	/**关闭(1-是,0-否)*/
-	@Excel(name = "关闭(1-是,0-否)", width = 15)
+	@Excel(name = "关闭", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "关闭(1-是,0-否)")
 	@Dict(dicCode = "yes_or_no")
     private Integer isClose;

+ 2 - 3
srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleInvoicePage.java

@@ -54,11 +54,11 @@ public class SaleInvoicePage {
 	@ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**提交(submit)1是0否*/
-	@Excel(name = "提交(submit)1是0否", width = 15)
+	@Excel(name = "提交(submit)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "提交(submit)1是0否")
     private String submit;
 	/**作废(close)1是0否*/
-	@Excel(name = "作废(close)1是0否", width = 15)
+	@Excel(name = "作废(close)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "作废(close)1是0否")
     private String close;
 	/**删除状态(0-正常,1-已删除)*/
@@ -123,7 +123,6 @@ public class SaleInvoicePage {
 	@ApiModelProperty(value = "开票地址(invoice address)")
     private String invoiceAddress;
 	/**销方(seller)*/
-	@Excel(name = "销方(seller)", width = 15)
 	@ApiModelProperty(value = "销方(seller)")
     private String seller;
 	/**销方(seller)*/

+ 4 - 12
srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleOrderPage.java

@@ -72,19 +72,18 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**客户确认(1-已确认,0-未确认)*/
-	@Excel(name = "客户确认(1-已确认,0-未确认)", width = 15)
+	@Excel(name = "客户确认", width = 15 ,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "客户确认(1-已确认,0-未确认)")
     private Integer status;
 	/**提交(submit)1是0否*/
-	@Excel(name = "提交(submit)1是0否", width = 15)
+	@Excel(name = "提交(submit)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "提交(submit)1是0否")
     private String submit;
 	/**关闭(close)1是0否*/
-	@Excel(name = "关闭(close)1是0否", width = 15)
+	@Excel(name = "关闭(close)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "关闭(close)1是0否")
     private String close;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
 	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     private Integer delFlag;
 	/**单据日期*/
@@ -98,7 +97,6 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "单据编码")
     private String billCode;
 	/**项目(project)*/
-	@Excel(name = "项目(project)", width = 15)
 	@ApiModelProperty(value = "项目(project)")
     private String project;
 	/**项目名称*/
@@ -106,7 +104,6 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "项目名称")
     private String projectName;
 	/**客户(customer)*/
-	@Excel(name = "客户(customer)", width = 15)
 	@ApiModelProperty(value = "客户(customer)")
     private String customer;
 	/**客户名称*/
@@ -118,7 +115,6 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "业务类型(busyness type)")
     private String busynessType;
 	/**中间人(intermediator)*/
-	@Excel(name = "中间人(intermediator)", width = 15)
 	@ApiModelProperty(value = "中间人(intermediator)")
     private String intermediator;
 	/**中间人名称*/
@@ -130,7 +126,6 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "优先级(priority)")
     private String priority;
 	/**产品分类(production class)*/
-	@Excel(name = "产品分类(production class)", width = 15)
 	@ApiModelProperty(value = "产品分类(production class)")
     private String productionClass;
 	/**机型(model)*/
@@ -187,7 +182,7 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "质保期(warranty period)")
     private String warrantyPeriod;
 	/**是否出口(export) 1是0否*/
-	@Excel(name = "是否出口(export) 1是0否", width = 15)
+	@Excel(name = "是否出口(export)", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "是否出口(export) 1是0否")
     private String isExport;
 	/**包装要求(packageb requirement)*/
@@ -195,11 +190,9 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "包装要求(packageb requirement)")
     private String packagebRequirement;
 	/**销售部门(sale department)*/
-	@Excel(name = "销售部门(sale department)", width = 15)
 	@ApiModelProperty(value = "销售部门(sale department)")
     private String saleDepartment;
 	/**业务员(salesman)*/
-	@Excel(name = "业务员(salesman)", width = 15)
 	@ApiModelProperty(value = "业务员(salesman)")
     private String salesman;
 	/**销售部门(sale department)名称*/
@@ -211,7 +204,6 @@ public class SaleOrderPage {
 	@ApiModelProperty(value = "业务员(salesman)名称")
     private String salesmanName;
 	/**附件(attachs)*/
-	@Excel(name = "附件(attachs)", width = 15)
 	@ApiModelProperty(value = "附件(attachs)")
     private String attachs;
 	/**备注(notes)*/

+ 4 - 2
srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleQuotationPage.java

@@ -64,11 +64,10 @@ public class SaleQuotationPage {
 	@ApiModelProperty(value = "更新时间")
     private Date updateTime;
 	/**状态(1-已提交,0-未提交)*/
-	@Excel(name = "状态(1-已提交,0-未提交)", width = 15)
+	@Excel(name = "状态", width = 15,dicCode = "yes_or_no")
 	@ApiModelProperty(value = "状态(1-已提交,0-未提交)")
     private Integer status;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
 	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     private Integer delFlag;
 	/**单据日期*/
@@ -200,6 +199,9 @@ public class SaleQuotationPage {
 	@ApiModelProperty(value = "整单毛利率(gross margin)")
 	private java.math.BigDecimal grossMarginHead;
 
+	private String shipName;
+	private String imo;
+
 	private String sourceCode;
 	@ExcelCollection(name="销售报价单-船明细")
 	@ApiModelProperty(value = "销售报价单-船明细")

+ 595 - 7
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StorePurchaseInServiceImpl.java

@@ -4,15 +4,21 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
-import org.jeecg.modules.purCode.entity.PurDeliveryNote;
-import org.jeecg.modules.purCode.entity.PurDeliveryNoteArrival;
+import org.jeecg.modules.b2bCode.entity.*;
+import org.jeecg.modules.b2bCode.service.*;
+import org.jeecg.modules.baseCode.service.ISerialPatternService;
+import org.jeecg.modules.purCode.entity.*;
 import org.jeecg.modules.purCode.mapper.PurDeliveryNoteArrivalMapper;
 import org.jeecg.modules.purCode.mapper.PurOrderMapper;
 import org.jeecg.modules.purCode.mapper.PurOrderProductMapper;
+import org.jeecg.modules.purCode.mapper.PurOrderShipMapper;
 import org.jeecg.modules.purCode.service.IPurDeliveryNoteArrivalService;
 import org.jeecg.modules.purCode.service.IPurDeliveryNoteService;
+import org.jeecg.modules.saleCode.entity.SaleOrder;
+import org.jeecg.modules.saleCode.entity.SaleOrderProduct;
 import org.jeecg.modules.saleCode.mapper.SaleOrderMapper;
 import org.jeecg.modules.saleCode.mapper.SaleOrderProductMapper;
+import org.jeecg.modules.saleCode.mapper.SaleOrderShipMapper;
 import org.jeecg.modules.storeCode.entity.*;
 import org.jeecg.modules.storeCode.mapper.StorePurchaseInShipMapper;
 import org.jeecg.modules.storeCode.mapper.StorePurchaseInDetailsMapper;
@@ -20,6 +26,7 @@ import org.jeecg.modules.storeCode.mapper.StorePurchaseInMapper;
 import org.jeecg.modules.storeCode.service.IStoreOnhandService;
 import org.jeecg.modules.storeCode.service.IStorePurchaseInService;
 import org.jeecg.modules.system.service.ISysDataLogService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,10 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * @Description: 入库单(采购 / 异常)
@@ -57,14 +61,37 @@ public class StorePurchaseInServiceImpl extends ServiceImpl<StorePurchaseInMappe
     @Autowired
     private IPurDeliveryNoteService purDeliveryNoteService;
 
+    @Autowired
+    private ISaleOrderB2bService saleOrderB2bService;
+    @Autowired
+    private ISaleOrderShipB2bService saleOrderShipB2bService;
+    @Autowired
+    private ISaleOrderProductB2bService saleOrderProductB2bService;
+
+    @Autowired
+    private IPurOrderB2bService purOrderB2bService;
+
+    @Autowired
+    private IPurOrderShipB2bService purOrderShipB2bService;
+    @Autowired
+    private IPurOrderProductB2bService purOrderProductB2bService;
+
     @Autowired
     private SaleOrderProductMapper saleOrderProductMapper;
     @Autowired
     private SaleOrderMapper saleOrderMapper;
     @Autowired
     private PurOrderMapper purOrderMapper;
+    @Autowired
+    private SaleOrderShipMapper saleOrderShipMapper;
+
+
     @Autowired
     private PurOrderProductMapper purOrderProductMapper;
+    @Autowired
+    private PurOrderShipMapper purOrderShipMapper;
+    @Autowired
+    private ISerialPatternService serialPatternService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -394,6 +421,12 @@ public class StorePurchaseInServiceImpl extends ServiceImpl<StorePurchaseInMappe
 
 //                return Result.error(result);
             }
+            try {
+                actionB2BInfo(list);
+            }catch (Exception e){
+
+            }
+
         } catch (Exception e) {
             throw new JeecgBootException(e.getMessage());
 
@@ -546,6 +579,7 @@ public class StorePurchaseInServiceImpl extends ServiceImpl<StorePurchaseInMappe
 
         for(StorePurchaseIn storePurchaseIn:storePurchaseInList){
 
+            String code = storePurchaseIn.getBillCode();//采购单
             String sourceCodeDhd = storePurchaseIn.getSourceCode();//到货单
             if(StringUtils.isBlank(sourceCodeDhd)){
                 continue;
@@ -554,7 +588,561 @@ public class StorePurchaseInServiceImpl extends ServiceImpl<StorePurchaseInMappe
             QueryWrapper<PurDeliveryNote> queryWrapperDhd = new QueryWrapper<>();
             queryWrapperDhd.eq("del_flag",0);
             queryWrapperDhd.eq("bill_code",sourceCodeDhd);
-            purDeliveryNoteService.getOne(queryWrapperDhd);
+            PurDeliveryNote purDeliveryNote = purDeliveryNoteService.getOne(queryWrapperDhd);
+
+            if(purDeliveryNote == null){
+                continue;
+            }
+
+            String sourceCodeCG = purDeliveryNote.getSourceCode();//采购单
+            if(StringUtils.isBlank(sourceCodeCG)){
+                continue;
+            }
+            QueryWrapper<PurOrder> queryWrapperCG = new QueryWrapper<>();
+            queryWrapperCG.eq("del_flag",0);
+            queryWrapperCG.eq("bill_code",sourceCodeCG);
+            PurOrder o = purOrderMapper.selectOne(queryWrapperCG);
+
+            if(o == null){
+                continue;
+            }
+
+            String sourceCodeXS = o.getSourceCode2();//销售订单
+            if(StringUtils.isBlank(sourceCodeXS)){
+                continue;
+            }
+//            QueryWrapper<SaleOrder> queryWrapperXS = new QueryWrapper<>();
+//            queryWrapperCG.eq("del_flag",0);
+//            queryWrapperCG.eq("bill_code",sourceCodeXS);
+//            SaleOrder saleOrder = saleOrderMapper.selectOne(queryWrapperXS);
+//
+//            if(saleOrder == null){
+//                continue;
+//            }
+
+            //组织  上海/香港
+//            String organizeXS = saleOrder.getOrganize();
+            String organizeCG = o.getOrganize();
+//            if(StringUtils.isBlank(organizeXS)){
+//                continue;
+//            }
+            if(StringUtils.isBlank(organizeCG)){
+                continue;
+            }
+//            if(organizeXS.equals(organizeCG)){
+//                continue;
+//            }
+
+            List<StorePurchaseInDetails> storePurchaseInDetailsList = storePurchaseInDetailsMapper.selectByMainId(storePurchaseIn.getId());
+            List<StorePurchaseInShip> storePurchaseInShipList = storePurchaseInShipMapper.selectByMainId(storePurchaseIn.getId());
+
+            String id = o.getId();
+            //组织  上海/香港
+            String organize = o.getOrganize();
+            String sourceCode2 = o.getSourceCode2();
+
+            if(StringUtils.isBlank(organize) || StringUtils.isBlank(sourceCode2)){
+                throw new RuntimeException(o.getBillCode()+"参数异常 organize、sourceCode");
+            }
+
+            QueryWrapper<SaleOrder> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("bill_code", sourceCode2);
+            SaleOrder saleOrder = saleOrderMapper.selectOne(queryWrapper);
+            if(saleOrder == null || organize.equals(saleOrder.getOrganize())){
+                continue;
+            }
+
+            List<SaleOrderProduct> saleOrderProductsList = saleOrderProductMapper.selectByMainId(saleOrder.getId());
+            Map<String,SaleOrderProduct> saleOrderProductsListMap = new HashMap<>();
+            for(SaleOrderProduct listProduct:saleOrderProductsList){
+                String saleId = listProduct.getId();
+                saleOrderProductsListMap.put(listProduct.getId()+saleId, listProduct);
+            }
+
+            List<SaleOrderProduct> newSaleOrderProductsList = new ArrayList<>();
+
+            // 上海采购 香港销售
+            if(organize.equals("上海")){
+                BigDecimal headAmount = BigDecimal.ZERO;
+                List<PurOrderProduct> purOrderProductList = purOrderProductMapper.selectByMainId(id);
+                List<PurOrderShip> purOrderShipList = purOrderShipMapper.selectByMainId(id);
+
+                for(PurOrderProduct listProduct : purOrderProductList){
+
+                    String sourceId = listProduct.getSourceId() == null || listProduct.getSourceId()=="" ? "否":listProduct.getSourceId();
+
+                    //取上海采购订单的数量和香港销售订单的单价 组成新的上海销售订单
+                    BigDecimal quantity = listProduct.getQuantity();
+
+                    //生成上海销售
+                    SaleOrderProduct saleOrderProduct;
+                    if(saleOrderProductsListMap.containsKey(sourceId)){
+
+                        saleOrderProduct = saleOrderProductsListMap.get(sourceId);
+
+                        //取销售的单价
+                        BigDecimal taxPrice = saleOrderProduct.getTaxPrice();
+                        BigDecimal taxAmount = quantity.multiply(taxPrice);
+
+//						BigDecimal discount = saleOrderProduct.getDiscount() == null ? BigDecimal.ZERO:saleOrderProduct.getDiscount();
+//						BigDecimal discountUs = (new BigDecimal(100).subtract(discount).divide(new BigDecimal(100)));
+
+                        saleOrderProduct.setQuantity(quantity);
+                        saleOrderProduct.setTaxPrice(taxPrice);
+                        saleOrderProduct.setSourceId(saleOrderProduct.getId());
+
+                        saleOrderProduct.setDeliveryQuantity(BigDecimal.ZERO);
+                        saleOrderProduct.setPurchaseQuantity(BigDecimal.ZERO);
+
+                        saleOrderProduct.setDiscountedPrice(taxPrice);//折后单价
+                        saleOrderProduct.setDiscountedAmount(taxAmount);//折后金额
+                        saleOrderProduct.setTaxAmount(taxAmount);//含税金额
+                        headAmount = headAmount.add(taxAmount);
+                    }else{
+
+                        BigDecimal taxPrice = listProduct.getTaxPrice();
+                        BigDecimal taxAmount = quantity.multiply(taxPrice);
+
+                        saleOrderProduct = new SaleOrderProduct();
+
+                        BeanUtils.copyProperties(listProduct, saleOrderProduct);
+
+                        saleOrderProduct.setDeliveryQuantity(BigDecimal.ZERO);
+                        saleOrderProduct.setPurchaseQuantity(BigDecimal.ZERO);
+
+                        saleOrderProduct.setSourceId(saleOrderProduct.getId());
+                        saleOrderProduct.setDiscountedPrice(taxPrice);//折后单价
+                        saleOrderProduct.setDiscountedAmount(taxAmount);//折后金额
+                        headAmount = headAmount.add(taxAmount);
+                    }
+                    newSaleOrderProductsList.add(saleOrderProduct);
+
+                }
+
+                saleOrder.setOrganize("上海");
+                saleOrder.setId(UUID.randomUUID().toString());
+                saleOrder.setOrderMoney(headAmount);
+                saleOrder.setCreateBy(null);
+                saleOrder.setCreateTime(null);
+                saleOrder.setUpdateTime(null);
+                saleOrder.setUpdateBy(null);
+                saleOrder.setConfirmBy(null);
+                saleOrder.setConfirmTime(null);
+
+                saleOrder.setCustomer("1895383259874287618");
+                saleOrder.setCustomerName("上海哥宝海事工程有限公司");
+
+
+                saleOrder.setSourceCode(o.getBillCode());
+
+                Result<String> result = serialPatternService.getNextSerial("sale_order_b2b", "bill_code");
+                if (!result.isSuccess()) {
+                    throw new RuntimeException("编码销售获取失败");
+                }
+                saleOrder.setBillCode(result.getMessage());
+
+                saleOrder.setB2b(1);
+                SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+                BeanUtils.copyProperties(saleOrder, saleOrderB2b);
+                saleOrderB2b.setSourceB2b(code);
+                saleOrderB2bService.save(saleOrderB2b);
+//                saleOrderMapper.insert(saleOrder);
+                for(SaleOrderProduct a:newSaleOrderProductsList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setUpdateTime(null);
+                    a.setUpdateBy(null);
+                    a.setHeadId(saleOrder.getId());
+                    SaleOrderProductB2b saleOrderProductB2b = new SaleOrderProductB2b();
+                    BeanUtils.copyProperties(a, saleOrderProductB2b);
+                    saleOrderProductB2bService.save(saleOrderProductB2b);
+//                    saleOrderProductMapper.insert(a);
+                }
+
+                for(PurOrderShip a:purOrderShipList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setUpdateTime(null);
+                    a.setUpdateBy(null);
+                    a.setHeadId(saleOrder.getId());
+                    SaleOrderShipB2b saleOrderShipB2b = new SaleOrderShipB2b();
+                    BeanUtils.copyProperties(a, saleOrderShipB2b);
+                    saleOrderShipB2bService.save(saleOrderShipB2b);
+                }
+//				香港采购
+                o.setOrganize("香港");
+                o.setId(UUID.randomUUID().toString());
+                o.setCreateBy(null);
+                o.setCreateTime(null);
+                o.setConfirmBy(null);
+                o.setConfirmTime(null);
+                o.setUpdateTime(null);
+                o.setUpdateBy(null);
+                o.setSupplier("1895384031777218562");
+                o.setSupplierName("上海哥宝海事工程有限公司");
+
+                o.setSourceCode(o.getBillCode());
+                o.setB2b(1);
+
+                Result<String> result2 = serialPatternService.getNextSerial("pur_order_b2b", "bill_code");
+                if (!result2.isSuccess()) {
+                    throw new RuntimeException("编码采购获取失败");
+                }
+                saleOrder.setBillCode(result2.getMessage());
+                PurOrderB2b purOrderB2b = new PurOrderB2b();
+                BeanUtils.copyProperties(o, purOrderB2b);
+                purOrderB2b.setSourceB2b(code);
+                purOrderB2bService.save(purOrderB2b);
+//                purOrderMapper.insert(o);
+
+                for(PurOrderProduct listProduct : purOrderProductList){
+                    listProduct.setHeadId(o.getId());
+                    listProduct.setSourceId(listProduct.getId());
+                    listProduct.setId(null);
+                    listProduct.setCreateBy(null);
+                    listProduct.setCreateTime(null);
+                    PurOrderProductB2b purOrderProductB2b = new PurOrderProductB2b();
+                    BeanUtils.copyProperties(listProduct, purOrderProductB2b);
+                    purOrderProductB2bService.save(purOrderProductB2b);
+//                    purOrderProductMapper.insert(listProduct);
+                }
+
+                for(PurOrderShip a:purOrderShipList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setUpdateTime(null);
+                    a.setUpdateBy(null);
+                    a.setHeadId(o.getId());
+                    PurOrderShipB2b purOrderShipB2b = new PurOrderShipB2b();
+                    BeanUtils.copyProperties(a, purOrderShipB2b);
+                    purOrderShipB2bService.save(purOrderShipB2b);
+                }
+
+            }
+
+            // 香港采购 上海销售
+            if(organize.equals("香港")){
+
+
+                BigDecimal headAmount = BigDecimal.ZERO;
+                List<PurOrderProduct> purOrderProductList = purOrderProductMapper.selectByMainId(id);
+
+                List<PurOrderShip> purOrderShipList = purOrderShipMapper.selectByMainId(id);
+
+                for(PurOrderProduct listProduct : purOrderProductList){
+
+                    String sourceId = listProduct.getSourceId() == null || listProduct.getSourceId()=="" ? "否":listProduct.getSourceId();
+
+                    //取香港采购订单的数量 和香港采购订单的单价 组成新的香港销售订单
+                    BigDecimal quantity = listProduct.getQuantity();
+                    BigDecimal taxPrice = listProduct.getTaxPrice();
+
+                    BigDecimal taxAmount = quantity.multiply(taxPrice);
+                    //生成上海销售
+                    SaleOrderProduct saleOrderProduct;
+                    if(saleOrderProductsListMap.containsKey(sourceId)){
+
+                        saleOrderProduct = saleOrderProductsListMap.get(sourceId);
+
+//						BigDecimal discount = saleOrderProduct.getDiscount() == null ? BigDecimal.ZERO:saleOrderProduct.getDiscount();
+//						BigDecimal discountUs = (new BigDecimal(100).subtract(discount).divide(new BigDecimal(100)));
+
+                        saleOrderProduct.setQuantity(quantity);
+                        saleOrderProduct.setTaxPrice(taxPrice);
+
+                        saleOrderProduct.setDeliveryQuantity(BigDecimal.ZERO);
+                        saleOrderProduct.setPurchaseQuantity(BigDecimal.ZERO);
+
+                        saleOrderProduct.setDiscountedPrice(taxPrice);//折后单价
+                        saleOrderProduct.setDiscountedAmount(taxAmount);//折后金额
+                        saleOrderProduct.setTaxAmount(taxAmount);//含税金额
+
+                    }else{
+
+                        saleOrderProduct = new SaleOrderProduct();
+
+                        BeanUtils.copyProperties(listProduct, saleOrderProduct);
+
+                        saleOrderProduct.setDeliveryQuantity(BigDecimal.ZERO);
+                        saleOrderProduct.setPurchaseQuantity(BigDecimal.ZERO);
+
+                        saleOrderProduct.setDiscountedPrice(taxPrice);//折后单价
+                        saleOrderProduct.setDiscountedAmount(taxAmount);//折后金额
+
+                    }
+                    saleOrderProduct.setSourceId(listProduct.getId());
+                    newSaleOrderProductsList.add(saleOrderProduct);
+                    headAmount = headAmount.add(taxAmount);
+
+
+                }
+
+                saleOrder.setSourceCode(o.getBillCode());
+                saleOrder.setOrganize("香港");
+                saleOrder.setId(UUID.randomUUID().toString());
+                saleOrder.setOrderMoney(headAmount);
+                saleOrder.setCreateBy(null);
+                saleOrder.setCreateTime(null);
+                saleOrder.setUpdateTime(null);
+                saleOrder.setUpdateBy(null);
+                saleOrder.setConfirmBy(null);
+                saleOrder.setConfirmTime(null);
+
+                saleOrder.setCustomer("1895383259874287618");
+                saleOrder.setCustomerName("上海哥宝海事工程有限公司");
+
+                Result<String> result = serialPatternService.getNextSerial("sale_order_b2b", "bill_code");
+                if (!result.isSuccess()) {
+                    throw new RuntimeException("编码获取失败");
+                }
+                saleOrder.setBillCode(result.getMessage());
+
+                saleOrder.setB2b(1);
+
+                SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+                BeanUtils.copyProperties(saleOrder, saleOrderB2b);
+                saleOrderB2b.setSourceB2b(code);
+                saleOrderB2bService.save(saleOrderB2b);
+//                saleOrderMapper.insert(saleOrder);
+                for(SaleOrderProduct a:newSaleOrderProductsList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setHeadId(saleOrder.getId());
+                    SaleOrderProductB2b saleOrderProductB2b = new SaleOrderProductB2b();
+                    BeanUtils.copyProperties(a, saleOrderProductB2b);
+                    saleOrderProductB2bService.save(saleOrderProductB2b);
+//                    saleOrderProductMapper.insert(a);
+                }
+
+                for(PurOrderShip a:purOrderShipList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setUpdateTime(null);
+                    a.setUpdateBy(null);
+                    a.setHeadId(saleOrder.getId());
+                    SaleOrderShipB2b saleOrderShipB2b = new SaleOrderShipB2b();
+                    BeanUtils.copyProperties(a, saleOrderShipB2b);
+                    saleOrderShipB2bService.save(saleOrderShipB2b);
+                }
+//				香港采购
+                o.setSourceCode(o.getId());
+                o.setOrganize("上海");
+                o.setId(UUID.randomUUID().toString());
+                o.setCreateBy(null);
+                o.setCreateTime(null);
+                o.setConfirmBy(null);
+                o.setConfirmTime(null);
+                o.setUpdateTime(null);
+                o.setUpdateBy(null);
+                o.setSupplier("1895384031777218562");
+                o.setSupplierName("上海哥宝海事工程有限公司");
+
+                o.setB2b(1);
+                Result<String> result2 = serialPatternService.getNextSerial("pur_order_b2b", "bill_code");
+                if (!result2.isSuccess()) {
+                    throw new RuntimeException("编码采购获取失败");
+                }
+                o.setBillCode(result2.getMessage());
+
+                PurOrderB2b purOrderB2b = new PurOrderB2b();
+                BeanUtils.copyProperties(o, purOrderB2b);
+                purOrderB2b.setSourceB2b(code);
+                purOrderB2bService.save(purOrderB2b);
+//                purOrderMapper.insert(o);
+
+                for(PurOrderProduct listProduct : purOrderProductList){
+                    listProduct.setHeadId(o.getId());
+                    listProduct.setSourceId(listProduct.getId());
+                    listProduct.setId(null);
+                    listProduct.setCreateBy(null);
+                    listProduct.setCreateTime(null);
+                    PurOrderProductB2b purOrderProductB2b = new PurOrderProductB2b();
+                    BeanUtils.copyProperties(listProduct, purOrderProductB2b);
+                    purOrderProductB2bService.save(purOrderProductB2b);
+//                    purOrderProductMapper.insert(listProduct);
+                }
+
+                for(PurOrderShip a:purOrderShipList){
+                    a.setId(null);
+                    a.setCreateBy(null);
+                    a.setCreateTime(null);
+                    a.setUpdateTime(null);
+                    a.setUpdateBy(null);
+                    a.setHeadId(o.getId());
+                    PurOrderShipB2b purOrderShipB2b = new PurOrderShipB2b();
+                    BeanUtils.copyProperties(a, purOrderShipB2b);
+                    purOrderShipB2bService.save(purOrderShipB2b);
+                }
+            }
+
+
+//            List<SaleOrderProduct> listSaleOrderProduct = saleOrderProductMapper.selectByMainId(saleOrder.getId());
+//            List<PurOrderProduct> listPurOrderProduct = purOrderProductMapper.selectByMainId(purOrder.getId());
+//            //香港销售,上海采购
+//            if(organizeXS.equals("香港")){
+//
+//                List<SaleOrderShipB2b> saleOrderShipB2bList =  new ArrayList<>();
+//                List<SaleOrderProductB2b> saleOrderProductB2bList =  new ArrayList<>();
+//
+//                List<PurOrderShipB2b> purOrderShipB2bList =  new ArrayList<>();
+//                List<PurOrderProductB2b> purOrderProductB2bList =  new ArrayList<>();
+//
+//                for(StorePurchaseInDetails o:storePurchaseInDetailsList){
+//
+//
+//                    SaleOrderProduct saleOrderProduct = listSaleOrderProduct.stream().filter(e -> e.getId().equals(o.getProductId())).findFirst().orElse(null);
+//
+//                    SaleOrderProductB2b saleOrderProductB2b = new SaleOrderProductB2b();
+//                    BeanUtils.copyProperties(o, saleOrderProductB2b);
+//                    saleOrderProductB2b.setCreateBy(null);
+//                    saleOrderProductB2b.setCreateTime(null);
+//                    saleOrderProductB2b.setUpdateBy(null);
+//                    saleOrderProductB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                    saleOrderProductB2b.setSourceB2b(o.getId());
+//                    saleOrderProductB2bList.add(saleOrderProductB2b);
+//
+//                    PurOrderProductB2b purOrderProductB2b = new PurOrderProductB2b();
+//                    BeanUtils.copyProperties(o, purOrderProductB2b);
+//                    purOrderProductB2b.setCreateBy(null);
+//                    purOrderProductB2b.setCreateTime(null);
+//                    purOrderProductB2b.setUpdateBy(null);
+//                    purOrderProductB2b.setUpdateTime(null);
+////                    purOrderProductB2b.setId(null);
+//                    purOrderProductB2b.setSourceB2b(o.getId());
+//                    purOrderProductB2bList.add(purOrderProductB2b);
+//                }
+//
+//                for(StorePurchaseInShip o:storePurchaseInShipList){
+//
+//                    SaleOrderShipB2b saleOrderShipB2b = new SaleOrderShipB2b();
+//                    BeanUtils.copyProperties(o, saleOrderShipB2b);
+//                    saleOrderShipB2b.setCreateBy(null);
+//                    saleOrderShipB2b.setCreateTime(null);
+//                    saleOrderShipB2b.setUpdateBy(null);
+//                    saleOrderShipB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                    saleOrderShipB2bList.add(saleOrderShipB2b);
+//
+//                    PurOrderShipB2b purOrderShipB2b = new PurOrderShipB2b();
+//                    BeanUtils.copyProperties(o, purOrderShipB2b);
+//                    purOrderShipB2b.setCreateBy(null);
+//                    purOrderShipB2b.setCreateTime(null);
+//                    purOrderShipB2b.setUpdateBy(null);
+//                    purOrderShipB2b.setUpdateTime(null);
+////                    purOrderShipB2b.setId(null);
+//                    purOrderShipB2bList.add(purOrderShipB2b);
+//
+//                }
+//
+//                SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+//                BeanUtils.copyProperties(saleOrder, saleOrderB2b);
+//                saleOrderB2b.setCreateBy(null);
+//                saleOrderB2b.setCreateTime(null);
+//                saleOrderB2b.setUpdateBy(null);
+//                saleOrderB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                saleOrderB2b.setSourceB2b(storePurchaseIn.getBillCode());
+//                saleOrderB2b.setOrganize("上海");
+//                saleOrderB2bService.saveMain(saleOrderB2b,saleOrderShipB2bList,saleOrderProductB2bList);
+//
+//                PurOrderB2b purOrderB2b = new PurOrderB2b();
+//                BeanUtils.copyProperties(purOrder, purOrderB2b);
+//                purOrderB2b.setCreateBy(null);
+//                purOrderB2b.setCreateTime(null);
+//                purOrderB2b.setUpdateBy(null);
+//                purOrderB2b.setUpdateTime(null);
+////                    purOrderB2b.setId(null);
+//                purOrderB2b.setSourceB2b(storePurchaseIn.getBillCode());
+//                purOrderB2b.setOrganize("香港");
+//
+//                purOrderB2bService.saveMain(purOrderB2b,purOrderShipB2bList,purOrderProductB2bList);
+//
+//            }
+//            //香港采购,上海销售
+//            else{
+//
+//                List<SaleOrderShipB2b> saleOrderShipB2bList =  new ArrayList<>();
+//                List<SaleOrderProductB2b> saleOrderProductB2bList =  new ArrayList<>();
+//
+//                List<PurOrderShipB2b> purOrderShipB2bList =  new ArrayList<>();
+//                List<PurOrderProductB2b> purOrderProductB2bList =  new ArrayList<>();
+//
+//                for(StorePurchaseInDetails o:storePurchaseInDetailsList){
+//
+//                    SaleOrderProductB2b saleOrderProductB2b = new SaleOrderProductB2b();
+//                    BeanUtils.copyProperties(o, saleOrderProductB2b);
+//                    saleOrderProductB2b.setCreateBy(null);
+//                    saleOrderProductB2b.setCreateTime(null);
+//                    saleOrderProductB2b.setUpdateBy(null);
+//                    saleOrderProductB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                    saleOrderProductB2b.setSourceB2b(o.getId());
+//                    saleOrderProductB2bList.add(saleOrderProductB2b);
+//
+//                    PurOrderProductB2b purOrderProductB2b = new PurOrderProductB2b();
+//                    BeanUtils.copyProperties(o, purOrderProductB2b);
+//                    purOrderProductB2b.setCreateBy(null);
+//                    purOrderProductB2b.setCreateTime(null);
+//                    purOrderProductB2b.setUpdateBy(null);
+//                    purOrderProductB2b.setUpdateTime(null);
+////                    purOrderProductB2b.setId(null);
+//                    purOrderProductB2b.setSourceB2b(o.getId());
+//                    purOrderProductB2bList.add(purOrderProductB2b);
+//                }
+//
+//                for(StorePurchaseInShip o:storePurchaseInShipList){
+//
+//                    SaleOrderShipB2b saleOrderShipB2b = new SaleOrderShipB2b();
+//                    BeanUtils.copyProperties(o, saleOrderShipB2b);
+//                    saleOrderShipB2b.setCreateBy(null);
+//                    saleOrderShipB2b.setCreateTime(null);
+//                    saleOrderShipB2b.setUpdateBy(null);
+//                    saleOrderShipB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                    saleOrderShipB2bList.add(saleOrderShipB2b);
+//
+//                    PurOrderShipB2b purOrderShipB2b = new PurOrderShipB2b();
+//                    BeanUtils.copyProperties(o, purOrderShipB2b);
+//                    purOrderShipB2b.setCreateBy(null);
+//                    purOrderShipB2b.setCreateTime(null);
+//                    purOrderShipB2b.setUpdateBy(null);
+//                    purOrderShipB2b.setUpdateTime(null);
+////                    purOrderShipB2b.setId(null);
+//                    purOrderShipB2bList.add(purOrderShipB2b);
+//
+//                }
+//
+//                SaleOrderB2b saleOrderB2b = new SaleOrderB2b();
+//                BeanUtils.copyProperties(saleOrder, saleOrderB2b);
+//                saleOrderB2b.setCreateBy(null);
+//                saleOrderB2b.setCreateTime(null);
+//                saleOrderB2b.setUpdateBy(null);
+//                saleOrderB2b.setUpdateTime(null);
+////                    saleOrderProductB2b.setId(null);
+//                saleOrderB2b.setSourceB2b(storePurchaseIn.getBillCode());
+//                saleOrderB2b.setOrganize("香港");
+//                saleOrderB2bService.saveMain(saleOrderB2b,saleOrderShipB2bList,saleOrderProductB2bList);
+//
+//                PurOrderB2b purOrderB2b = new PurOrderB2b();
+//                BeanUtils.copyProperties(purOrder, purOrderB2b);
+//                purOrderB2b.setCreateBy(null);
+//                purOrderB2b.setCreateTime(null);
+//                purOrderB2b.setUpdateBy(null);
+//                purOrderB2b.setUpdateTime(null);
+////                    purOrderB2b.setId(null);
+//                purOrderB2b.setSourceB2b(storePurchaseIn.getBillCode());
+//                purOrderB2b.setOrganize("上海");
+//
+//                purOrderB2bService.saveMain(purOrderB2b,purOrderShipB2bList,purOrderProductB2bList);
+//
+//
+//            }
 
 
         }