浏览代码

完善代码

yuansh 1 月之前
父节点
当前提交
0b7d012f7a
共有 22 个文件被更改,包括 486 次插入54 次删除
  1. 26 0
      srm-module-code/src/main/java/org/jeecg/modules/baseCode/controller/BaseProductArchiveController.java
  2. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/platCode/entity/PlatCommissionOrder.java
  3. 2 0
      srm-module-code/src/main/java/org/jeecg/modules/platCode/vo/PlatCommissionOrderPage.java
  4. 8 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/controller/PurOrderController.java
  5. 32 0
      srm-module-code/src/main/java/org/jeecg/modules/purCode/service/impl/PurShippingFeeServiceImpl.java
  6. 53 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleDeliveryController.java
  7. 73 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInvoiceController.java
  8. 29 5
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleOrderController.java
  9. 19 6
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleQuotationController.java
  10. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleDelivery.java
  11. 4 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleInvoice.java
  12. 0 4
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleInvoiceProduct.java
  13. 0 3
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/entity/SaleInvoiceShip.java
  14. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/SaleInvoiceMapper.java
  15. 14 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/xml/SaleInvoiceMapper.xml
  16. 10 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/ISaleInvoiceService.java
  17. 119 10
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleInvoiceServiceImpl.java
  18. 4 0
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleDeliveryPage.java
  19. 0 1
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/vo/SaleInvoicePage.java
  20. 11 11
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreOnhandServiceImpl.java
  21. 1 1
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StorePurchaseInServiceImpl.java
  22. 69 13
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreSaleOutServiceImpl.java

+ 26 - 0
srm-module-code/src/main/java/org/jeecg/modules/baseCode/controller/BaseProductArchiveController.java

@@ -78,6 +78,7 @@ public class BaseProductArchiveController extends JeecgController<BaseProductArc
     public Result<String> add(@RequestBody BaseProductArchive baseProductArchive) {
 
         String code = baseProductArchive.getCode();
+        String partno = baseProductArchive.getPartno();
         if (StringUtils.isNotBlank(code)) {
 
             QueryWrapper<BaseProductArchive> queryWrapper = new QueryWrapper();
@@ -97,6 +98,17 @@ public class BaseProductArchiveController extends JeecgController<BaseProductArc
             baseProductArchive.setCode(result.getMessage());
         }
 
+        if (StringUtils.isNotBlank(partno)) {
+
+            QueryWrapper<BaseProductArchive> queryWrapper = new QueryWrapper();
+            queryWrapper.eq("partno", partno);
+            queryWrapper.eq("del_flag", "0");
+            List<BaseProductArchive> list = baseProductArchiveService.list(queryWrapper);
+            if (list.size() != 0) {
+                return Result.error("产品档案备件号重复,请修改!");
+            }
+        }
+
         baseProductArchiveService.save(baseProductArchive);
         return Result.OK("添加成功!");
     }
@@ -124,6 +136,20 @@ public class BaseProductArchiveController extends JeecgController<BaseProductArc
             return Result.error("产品档案编码重复,请修改!");
         }
 
+        String partno = baseProductArchive.getPartno();
+
+        if (StringUtils.isNotBlank(partno)) {
+
+            QueryWrapper<BaseProductArchive> queryWrapper2 = new QueryWrapper();
+            queryWrapper2.eq("partno", partno);
+            queryWrapper2.eq("del_flag", "0");
+            queryWrapper2.notIn("id", baseProductArchive.getId());
+            List<BaseProductArchive> list2 = baseProductArchiveService.list(queryWrapper2);
+            if (list2.size() != 0) {
+                return Result.error("产品档案备件号重复,请修改!");
+            }
+        }
+
         baseProductArchiveService.updateById(baseProductArchive);
         return Result.OK("编辑成功!");
     }

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

@@ -39,6 +39,8 @@ public class PlatCommissionOrder implements Serializable {
     private String sysOrgCode;
     //关闭原因
     private String closeReason;
+    //发票号(开发票时回写至此字段)
+    private String invoiceCode;
 	/**创建时间*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

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

@@ -35,6 +35,8 @@ public class PlatCommissionOrderPage {
 	private String sysOrgCode;
 	//关闭原因
 	private String closeReason;
+	//发票号(开发票时回写至此字段)
+	private String invoiceCode;
 	/**创建时间*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

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

@@ -869,6 +869,14 @@ public class PurOrderController {
                     purOrder.setDiscountHeadMoney(discountAmount.setScale(2));
                 }
 
+                String agreementTerms = purOrder.getAgreementTerms();
+                if (StringUtils.isNotBlank(agreementTerms)) {
+                   String info = sysDictService.queryAgreementTermsByName(agreementTerms);
+                   if(StringUtils.isNotBlank(info)){
+                       purOrder.setAgreementTerms(info);
+                   }
+                }
+
                 String productionClass = purOrder.getProductionClass();
                 if (StringUtils.isNotBlank(productionClass)) {
 

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

@@ -115,6 +115,22 @@ public class PurShippingFeeServiceImpl extends ServiceImpl<PurShippingFeeMapper,
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void delMain(String id) {
+
+		List<PurShippingFeeNotice> purShippingFeeNoticeList = purShippingFeeNoticeMapper.selectByMainId(id);
+
+		if(purShippingFeeNoticeList!=null && purShippingFeeNoticeList.size()>0) {
+			for(PurShippingFeeNotice entity:purShippingFeeNoticeList) {
+
+				String sourceId = entity.getSourceId();
+				SaleDelivery saleDelivery = saleDeliveryService.getById(sourceId);
+				if(saleDelivery != null){
+					saleDelivery.setCarriageUsed("否");
+					saleDeliveryService.updateById(saleDelivery);
+				}
+
+			}
+		}
+
 		purShippingFeeNoticeMapper.deleteByMainId(id);
 		purShippingFeeProdeuctMapper.deleteByMainId(id);
 		purShippingFeeMapper.deleteById(id);
@@ -124,6 +140,22 @@ public class PurShippingFeeServiceImpl extends ServiceImpl<PurShippingFeeMapper,
 	@Transactional(rollbackFor = Exception.class)
 	public void delBatchMain(Collection<? extends Serializable> idList) {
 		for(Serializable id:idList) {
+
+			List<PurShippingFeeNotice> purShippingFeeNoticeList = purShippingFeeNoticeMapper.selectByMainId(id.toString());
+
+			if(purShippingFeeNoticeList!=null && purShippingFeeNoticeList.size()>0) {
+				for(PurShippingFeeNotice entity:purShippingFeeNoticeList) {
+
+					String sourceId = entity.getSourceId();
+					SaleDelivery saleDelivery = saleDeliveryService.getById(sourceId);
+					if(saleDelivery != null){
+						saleDelivery.setCarriageUsed("否");
+						saleDeliveryService.updateById(saleDelivery);
+					}
+
+				}
+			}
+
 			purShippingFeeNoticeMapper.deleteByMainId(id.toString());
 			purShippingFeeProdeuctMapper.deleteByMainId(id.toString());
 			purShippingFeeMapper.deleteById(id);

+ 53 - 0
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleDeliveryController.java

@@ -139,6 +139,59 @@ public class SaleDeliveryController {
         return Result.OK(pageList);
     }
 
+
+    /**
+     * 分页列表查询 运费采购订单使用
+     *
+     * @param saleDelivery
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "发货通知单(delivery notice)-分页列表查询")
+    @ApiOperation(value = "发货通知单(delivery notice)-分页列表查询 运费采购订单使用", notes = "发货通知单(delivery notice)-分页列表查询")
+    @GetMapping(value = "/queryPageListCosts")
+    @PermissionData(pageComponent = "saleCode/deliveryNotice/deliveryNoticeList")
+    public Result<IPage<SaleDelivery>> queryPageListCosts(SaleDelivery saleDelivery,
+                                                     @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                     HttpServletRequest req) {
+        QueryWrapper<SaleDelivery> queryWrapper = QueryGenerator.initQueryWrapper(saleDelivery, req.getParameterMap());
+        queryWrapper.eq("carriage_used","否");
+        Page<SaleDelivery> page = new Page<SaleDelivery>(pageNo, pageSize);
+        IPage<SaleDelivery> pageList = saleDeliveryService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+
+    /**
+     * 分页列表查询 销售发票使用
+     *
+     * @param saleDelivery
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "发货通知单(delivery notice)-分页列表查询")
+    @ApiOperation(value = "发货通知单(delivery notice)-分页列表查询 销售发票使用", notes = "发货通知单(delivery notice)-分页列表查询")
+    @GetMapping(value = "/queryPageListInvoice")
+    @PermissionData(pageComponent = "saleCode/deliveryNotice/deliveryNoticeList")
+    public Result<IPage<SaleDelivery>> queryPageListInvoice(SaleDelivery saleDelivery,
+                                                     @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                     HttpServletRequest req) {
+        QueryWrapper<SaleDelivery> queryWrapper = QueryGenerator.initQueryWrapper(saleDelivery, req.getParameterMap());
+        queryWrapper.isNull("invoice_code");//发票号(开发票时回写至此字段)
+        queryWrapper.eq("apply_invoice","1");//销售出库单 是否开票申请(1是 0否)
+        Page<SaleDelivery> page = new Page<SaleDelivery>(pageNo, pageSize);
+        IPage<SaleDelivery> pageList = saleDeliveryService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+
+
     /**
      * 分页列表查询(销售出库整单参照使用)
      *

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

@@ -23,7 +23,9 @@ import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.metadata.fill.FillConfig;
 import com.alibaba.excel.write.metadata.fill.FillWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.UUIDGenerator;
@@ -31,9 +33,13 @@ import org.jeecg.modules.baseCode.entity.*;
 import org.jeecg.modules.baseCode.service.*;
 import org.jeecg.modules.cuspCode.entity.CuspCustomerProfile;
 import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileService;
+import org.jeecg.modules.platCode.entity.PlatCommissionOrder;
+import org.jeecg.modules.platCode.mapper.PlatCommissionOrderMapper;
 import org.jeecg.modules.purCode.entity.PurOrder;
 import org.jeecg.modules.purCode.service.IPurOrderService;
 import org.jeecg.modules.saleCode.entity.*;
+import org.jeecg.modules.saleCode.mapper.SaleDeliveryMapper;
+import org.jeecg.modules.saleCode.mapper.SaleInvoiceMapper;
 import org.jeecg.modules.saleCode.service.*;
 import org.jeecg.modules.saleCode.vo.SaleDeliveryAlert;
 import org.jeecg.modules.storeCode.entity.StoreSaleOut;
@@ -122,6 +128,12 @@ public class SaleInvoiceController {
     private ISaleDeliveryDetailsService saleDeliveryDetailsService;
     @Autowired
     private ISysDictService sysDictService;
+    @Autowired
+    private SaleInvoiceMapper saleInvoiceMapper;
+    @Autowired
+    private SaleDeliveryMapper saleDeliveryMapper;
+    @Autowired
+    private PlatCommissionOrderMapper platCommissionOrderMapper;
 
     @Value(value = "${jeecg.path.upload}")
     private String uploadpath;
@@ -142,8 +154,20 @@ public class SaleInvoiceController {
                                                     @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                     HttpServletRequest req) {
+
         QueryWrapper<SaleInvoice> queryWrapper = QueryGenerator.initQueryWrapper(saleInvoice, req.getParameterMap());
         Page<SaleInvoice> page = new Page<SaleInvoice>(pageNo, pageSize);
+
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String dept = sysUser.getOrgCode();
+        String userName =  sysUser.getUsername();
+
+        if(!userName.equals("admin") && !"A02A05".equals(dept)){
+            queryWrapper.likeLeft("sys_org_code_delivery",dept);
+            IPage<SaleInvoice> pageList = saleInvoiceService.selectSaleInvoicePage(page, queryWrapper);
+            return Result.OK(pageList);
+        }
+
         IPage<SaleInvoice> pageList = saleInvoiceService.page(page, queryWrapper);
         return Result.OK(pageList);
     }
@@ -172,6 +196,13 @@ public class SaleInvoiceController {
         BeanUtils.copyProperties(saleInvoicePage, saleInvoice);
 
         String code = saleInvoice.getInvoiceCode();
+
+        String sourceCode = saleInvoice.getSourceCode();//发货单来源
+        String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
+        if(StringUtils.isBlank(sourceCode) && StringUtils.isBlank(sourceCode2)){
+            return Result.error("发票来源异常,请刷新后重试!");
+        }
+
         if (StringUtils.isNotBlank(code)) {
 
             QueryWrapper<SaleInvoice> queryWrapper = new QueryWrapper();
@@ -213,6 +244,13 @@ public class SaleInvoiceController {
         if (saleInvoiceEntity == null) {
             return Result.error("未找到对应数据");
         }
+
+        String sourceCode = saleInvoice.getSourceCode();//发货单来源
+        String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
+        if(StringUtils.isBlank(sourceCode) && StringUtils.isBlank(sourceCode2)){
+            return Result.error("发票来源异常,请刷新后重试!");
+        }
+
         saleInvoiceService.updateMain(saleInvoice, saleInvoicePage.getSaleInvoiceShipList(), saleInvoicePage.getSaleInvoiceProductList());
         return Result.OK("编辑成功!");
     }
@@ -313,6 +351,31 @@ public class SaleInvoiceController {
 
             return Result.error(sb.toString());
         }
+        for (SaleInvoice o : list) {
+
+            SaleInvoice saleInvoice = saleInvoiceMapper.selectById(o.getId());
+
+            String sourceCode = saleInvoice.getSourceCode();//发货单来源
+            String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
+//
+            if(StringUtils.isNotBlank(sourceCode)){
+
+                UpdateWrapper<SaleDelivery> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("bill_code", sourceCode); 	// 设置主键
+                updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+                saleDeliveryMapper.update(new SaleDelivery(), updateWrapper); 		// 调用更新
+
+            }
+            if(StringUtils.isNotBlank(sourceCode2)){
+
+                UpdateWrapper<PlatCommissionOrder> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("bill_code", sourceCode2); 	// 设置主键
+                updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+                platCommissionOrderMapper.update(new PlatCommissionOrder(), updateWrapper); 		// 调用更新
+
+            }
+
+        }
 
         SaleInvoice ent = new SaleInvoice();
         ent.setClose("1");
@@ -611,6 +674,16 @@ public class SaleInvoiceController {
         if (oConvertUtils.isNotEmpty(selections)) {
             List<String> selectionList = Arrays.asList(selections.split(","));
             queryWrapper.in("id", selectionList);
+        }else{
+
+            String dept = sysUser.getOrgCode();
+            String userName =  sysUser.getUsername();
+
+            if(!userName.equals("admin") && !"A02A05".equals(dept)){
+                throw new JeecgBootException("请勾选要导出的数据");
+            }
+
+
         }
         //Step.2 获取导出数据
         List<SaleInvoice> saleInvoiceList = saleInvoiceService.list(queryWrapper);

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

@@ -29,6 +29,8 @@ import org.jeecg.common.util.UUIDGenerator;
 import org.jeecg.modules.baseCode.entity.*;
 import org.jeecg.modules.baseCode.service.*;
 import org.jeecg.modules.cuspCode.entity.CuspCustomerProfile;
+import org.jeecg.modules.cuspCode.entity.CuspCustomerProfileMan;
+import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileManService;
 import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileService;
 import org.jeecg.modules.purCode.entity.PurCommissionRequest;
 import org.jeecg.modules.purCode.entity.PurOrder;
@@ -112,6 +114,8 @@ public class SaleOrderController {
     @Autowired
     private ICuspCustomerProfileService cuspCustomerProfileService;
     @Autowired
+    private ICuspCustomerProfileManService cuspCustomerProfileManService;
+    @Autowired
     private IBaseShipArchiveService baseShipArchiveService;
     @Autowired
     private IBaseProductArchiveService baseProductArchiveService;
@@ -987,17 +991,37 @@ public class SaleOrderController {
                         saleOrder.setProductionClass(classEnt.getName());
                     }
                 }
-                String getQuotationCustomer = saleOrder.getCustomer();
-                if (StringUtils.isNotBlank(getQuotationCustomer)) {
+//                String getQuotationCustomer = saleOrder.getCustomer();
+//                if (StringUtils.isNotBlank(getQuotationCustomer)) {
+//
+//                    CuspCustomerProfile classEnt = cuspCustomerProfileService.getById(getQuotationCustomer);
+//                    if (classEnt != null) {
+//
+//                        saleOrder.setContacts(classEnt.getContacts());
+//                        saleOrder.setPhone(classEnt.getPhone());
+//                        saleOrder.setEmail(classEnt.getEmail());
+//                    }
+//                }
+
+                String getLiaisonId = saleOrder.getLiaisonId();
+                if (StringUtils.isNotBlank(getLiaisonId)) {
 
-                    CuspCustomerProfile classEnt = cuspCustomerProfileService.getById(getQuotationCustomer);
+                    CuspCustomerProfileMan classEnt = cuspCustomerProfileManService.getById(getLiaisonId);
                     if (classEnt != null) {
 
-                        saleOrder.setContacts(classEnt.getContacts());
-                        saleOrder.setPhone(classEnt.getPhone());
+                        saleOrder.setContacts(classEnt.getName());
+                        saleOrder.setPhone(classEnt.getMobile());
                         saleOrder.setEmail(classEnt.getEmail());
                     }
                 }
+
+                String agreementTerms = saleOrder.getAgreementTerms();
+                if (StringUtils.isNotBlank(agreementTerms)) {
+                    String info = sysDictService.queryAgreementTermsByName(agreementTerms);
+                    if(StringUtils.isNotBlank(info)){
+                        saleOrder.setAgreementTerms(info);
+                    }
+                }
                 // 获取计产品档案
                 List<BaseProductArchive> productArchiveList = new ArrayList<>();
                 if (oConvertUtils.listIsNotEmpty(productList)) {

+ 19 - 6
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleQuotationController.java

@@ -35,7 +35,9 @@ import org.jeecg.common.util.UUIDGenerator;
 import org.jeecg.modules.baseCode.entity.*;
 import org.jeecg.modules.baseCode.service.*;
 import org.jeecg.modules.cuspCode.entity.CuspCustomerProfile;
+import org.jeecg.modules.cuspCode.entity.CuspCustomerProfileMan;
 import org.jeecg.modules.cuspCode.entity.CuspSupplierProfile;
+import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileManService;
 import org.jeecg.modules.cuspCode.service.ICuspCustomerProfileService;
 import org.jeecg.modules.cuspCode.service.ICuspSupplierProfileService;
 import org.jeecg.modules.purCode.entity.PurInquiryForm;
@@ -110,7 +112,7 @@ public class SaleQuotationController {
     @Autowired
     private IBaseProductClassService baseProductClassService;
     @Autowired
-    private ICuspCustomerProfileService cuspCustomerProfileService;
+    private ICuspCustomerProfileManService cuspCustomerProfileManService;
     @Autowired
     private IBaseShipArchiveService baseShipArchiveService;
     @Autowired
@@ -620,17 +622,28 @@ public class SaleQuotationController {
                         saleQuotation.setProductionClass(classEnt.getName());
                     }
                 }
-                String getQuotationCustomer = saleQuotation.getQuotationCustomer();
-                if (StringUtils.isNotBlank(getQuotationCustomer)) {
+                String getLiaisonId = saleQuotation.getLiaisonId();
+                if (StringUtils.isNotBlank(getLiaisonId)) {
 
-                    CuspCustomerProfile classEnt = cuspCustomerProfileService.getById(getQuotationCustomer);
+                    CuspCustomerProfileMan classEnt = cuspCustomerProfileManService.getById(getLiaisonId);
                     if (classEnt != null) {
 
-                        saleQuotation.setContacts(classEnt.getContacts());
-                        saleQuotation.setPhone(classEnt.getPhone());
+                        saleQuotation.setContacts(classEnt.getName());
+                        saleQuotation.setPhone(classEnt.getMobile());
                         saleQuotation.setEmail(classEnt.getEmail());
                     }
                 }
+//                String getQuotationCustomer = saleQuotation.getQuotationCustomer();
+//                if (StringUtils.isNotBlank(getQuotationCustomer)) {
+//
+//                    CuspCustomerProfile classEnt = cuspCustomerProfileService.getById(getQuotationCustomer);
+//                    if (classEnt != null) {
+//
+//                        saleQuotation.setContacts(classEnt.getContacts());
+//                        saleQuotation.setPhone(classEnt.getPhone());
+//                        saleQuotation.setEmail(classEnt.getEmail());
+//                    }
+//                }
                 // 获取计产品档案
                 List<BaseProductArchive> productArchiveList = new ArrayList<>();
                 if (oConvertUtils.listIsNotEmpty(productList)){

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

@@ -39,6 +39,11 @@ public class SaleDelivery implements Serializable {
     //关闭原因
     private String closeReason;
 
+    //发票号(开发票时回写至此字段)
+    private String invoiceCode;
+    //销售出库单 是否开票申请(1是 0否)
+    private String applyInvoice;
+
 	/**创建时间*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

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

@@ -36,6 +36,10 @@ public class SaleInvoice implements Serializable {
     @ApiModelProperty(value = "创建人")
     private String createBy;
     private String sysOrgCode;
+
+    //发货通知单中的组织
+    @TableField(exist = false)
+    private String sysOrgCodeDelivery;
     //关闭原因
     private String closeReason;
 

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

@@ -49,11 +49,9 @@ public class SaleInvoiceProduct 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;
@@ -61,7 +59,6 @@ public class SaleInvoiceProduct implements Serializable {
     @ApiModelProperty(value = "表头主键(销售发票)")
     private String headId;
 	/**产品id*/
-	@Excel(name = "产品id", width = 15)
     @ApiModelProperty(value = "产品id")
     private String productId;
 	/**产品编码*/
@@ -137,7 +134,6 @@ public class SaleInvoiceProduct implements Serializable {
     @ApiModelProperty(value = "参照来源")
     private String sourceType;
 	/**参照来源id*/
-	@Excel(name = "参照来源id", width = 15)
     @ApiModelProperty(value = "参照来源id")
     private String sourceId;
 

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

@@ -51,11 +51,9 @@ public class SaleInvoiceShip 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 SaleInvoiceShip implements Serializable {
     @ApiModelProperty(value = "表头主键(销售发票)")
     private String headId;
 	/**船id*/
-	@Excel(name = "船id", width = 15)
     @ApiModelProperty(value = "船id")
     private String shipId;
 	/**船名*/

+ 5 - 0
srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/SaleInvoiceMapper.java

@@ -2,6 +2,9 @@ package org.jeecg.modules.saleCode.mapper;
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.saleCode.entity.SaleInvoice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -14,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface SaleInvoiceMapper extends BaseMapper<SaleInvoice> {
 
+    public IPage<SaleInvoice> selectSaleInvoicePage(Page<SaleInvoice> page, @Param("ew") QueryWrapper<SaleInvoice> queryWrapper);
+
 }

+ 14 - 0
srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/xml/SaleInvoiceMapper.xml

@@ -2,4 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.saleCode.mapper.SaleInvoiceMapper">
 
+    <select id="selectSaleInvoicePage" parameterType="java.lang.String"
+            resultType="org.jeecg.modules.saleCode.entity.SaleInvoice">
+
+        select *
+        from (select a.*
+                ,b.sys_org_code as sys_org_code_delivery
+              from sale_invoice a
+                       left join sale_delivery b on a.source_code = b.bill_code
+              where a.del_flag = 0
+                and b.del_flag = 0
+             ) a
+            ${ew.customSqlSegment}
+
+    </select>
 </mapper>

+ 10 - 0
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/ISaleInvoiceService.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.saleCode.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.saleCode.entity.SaleInvoiceShip;
 import org.jeecg.modules.saleCode.entity.SaleInvoiceProduct;
 import org.jeecg.modules.saleCode.entity.SaleInvoice;
@@ -16,6 +19,13 @@ import java.util.List;
  */
 public interface ISaleInvoiceService extends IService<SaleInvoice> {
 
+	/**
+	 * 分页查询
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage<SaleInvoice> selectSaleInvoicePage(Page<SaleInvoice> page, QueryWrapper<SaleInvoice> queryWrapper);
 	/**
 	 * 添加一对多
 	 *

+ 119 - 10
srm-module-code/src/main/java/org/jeecg/modules/saleCode/service/impl/SaleInvoiceServiceImpl.java

@@ -1,9 +1,16 @@
 package org.jeecg.modules.saleCode.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.platCode.entity.PlatCommissionOrder;
+import org.jeecg.modules.platCode.mapper.PlatCommissionOrderMapper;
 import org.jeecg.modules.saleCode.entity.*;
+import org.jeecg.modules.saleCode.mapper.SaleDeliveryMapper;
 import org.jeecg.modules.saleCode.mapper.SaleInvoiceShipMapper;
 import org.jeecg.modules.saleCode.mapper.SaleInvoiceProductMapper;
 import org.jeecg.modules.saleCode.mapper.SaleInvoiceMapper;
@@ -37,21 +44,44 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
 	@Autowired
 	private ISaleDeliveryService saleDeliveryService;
 	@Autowired
+	private SaleDeliveryMapper saleDeliveryMapper;
+	@Autowired
+	private PlatCommissionOrderMapper platCommissionOrderMapper;
+	@Autowired
 	private ISaleOrderService saleOrderService;
-	
+
+
+	/**
+	 * 分页查询
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	@Override
+	public IPage<SaleInvoice> selectSaleInvoicePage(Page<SaleInvoice> page, QueryWrapper<SaleInvoice> queryWrapper){
+		return saleInvoiceMapper.selectSaleInvoicePage(page,queryWrapper);
+	}
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void saveMain(SaleInvoice saleInvoice, List<SaleInvoiceShip> saleInvoiceShipList,List<SaleInvoiceProduct> saleInvoiceProductList) {
 
-//		String sourceCode = saleInvoice.getSourceCode();
-//		String sourceCode2 = saleInvoice.getSourceCode2();
+		String sourceCode = saleInvoice.getSourceCode();//发货单来源
+		String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
 //
-//		if(StringUtils.isNotBlank(sourceCode)){
-//			saleInvoice.setOrderNumber(sourceCode);
-//		}
-//		if(StringUtils.isNotBlank(sourceCode2)){
-//			saleInvoice.setOrderNumber(sourceCode2);
-//		}
+		if(StringUtils.isNotBlank(sourceCode)){
+			QueryWrapper<SaleDelivery> qu = new QueryWrapper<>();
+			qu.eq("bill_code", sourceCode);
+			SaleDelivery en = new SaleDelivery();
+			en.setInvoiceCode(saleInvoice.getInvoiceCode());
+			saleDeliveryMapper.update(en,qu);
+		}
+		if(StringUtils.isNotBlank(sourceCode2)){
+			QueryWrapper<PlatCommissionOrder> qu = new QueryWrapper<>();
+			qu.eq("bill_code", sourceCode2);
+			PlatCommissionOrder en = new PlatCommissionOrder();
+			en.setInvoiceCode(saleInvoice.getInvoiceCode());
+			platCommissionOrderMapper.update(en,qu);
+		}
 
 		BigDecimal taxMoneyHead = BigDecimal.ZERO;
 		//计算表头金额合计
@@ -129,7 +159,6 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
 
 		saleInvoice.setTaxMoney(taxMoneyHead);
 
-
 		if (oConvertUtils.isNotEmpty(saleInvoice.getSourceCode())) {
 			LambdaQueryWrapper<SaleDelivery> deliveryLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			deliveryLambdaQueryWrapper.eq(SaleDelivery::getBillCode, saleInvoice.getSourceCode());
@@ -150,6 +179,41 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
 			}
 		}
 
+		SaleInvoice saleInvoice1 = saleInvoiceMapper.selectById(saleInvoice.getId());
+		String sourceCode = saleInvoice1.getSourceCode();//发货单来源
+		String sourceCode2 = saleInvoice1.getSourceCode2();//佣金订单来源
+
+		String sourceCodeNew = saleInvoice.getSourceCode();//发货单来源
+		String sourceCode2New = saleInvoice.getSourceCode2();//佣金订单来源
+
+		if(StringUtils.isNotBlank(sourceCode) && !sourceCode.equals(sourceCodeNew)){
+
+			UpdateWrapper<SaleDelivery> updateWrapper = new UpdateWrapper<>();
+			updateWrapper.eq("bill_code", sourceCode); 	// 设置主键
+			updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+			saleDeliveryMapper.update(new SaleDelivery(), updateWrapper); 		// 调用更新
+
+			QueryWrapper<SaleDelivery> qu = new QueryWrapper<>();
+			qu.eq("bill_code", sourceCode);
+			SaleDelivery en = new SaleDelivery();
+			en.setInvoiceCode(saleInvoice.getInvoiceCode());
+			saleDeliveryMapper.update(en,qu);
+
+		}
+		if(StringUtils.isNotBlank(sourceCode2) && !sourceCode2.equals(sourceCode2New)){
+
+			UpdateWrapper<PlatCommissionOrder> updateWrapper = new UpdateWrapper<>();
+			updateWrapper.eq("bill_code", sourceCode2); 	// 设置主键
+			updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+			platCommissionOrderMapper.update(new PlatCommissionOrder(), updateWrapper); 		// 调用更新
+
+			QueryWrapper<PlatCommissionOrder> qu = new QueryWrapper<>();
+			qu.eq("bill_code", sourceCode2);
+			PlatCommissionOrder en = new PlatCommissionOrder();
+			en.setInvoiceCode(saleInvoice.getInvoiceCode());
+			platCommissionOrderMapper.update(en,qu);
+		}
+
 		saleInvoiceMapper.updateById(saleInvoice);
 		
 		//1.先删除子表数据
@@ -178,6 +242,28 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void delMain(String id) {
+		SaleInvoice saleInvoice = saleInvoiceMapper.selectById(id);
+
+		String sourceCode = saleInvoice.getSourceCode();//发货单来源
+		String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
+//
+		if(StringUtils.isNotBlank(sourceCode)){
+
+			UpdateWrapper<SaleDelivery> updateWrapper = new UpdateWrapper<>();
+			updateWrapper.eq("bill_code", sourceCode); 	// 设置主键
+			updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+			saleDeliveryMapper.update(new SaleDelivery(), updateWrapper); 		// 调用更新
+
+		}
+		if(StringUtils.isNotBlank(sourceCode2)){
+
+			UpdateWrapper<PlatCommissionOrder> updateWrapper = new UpdateWrapper<>();
+			updateWrapper.eq("bill_code", sourceCode2); 	// 设置主键
+			updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+			platCommissionOrderMapper.update(new PlatCommissionOrder(), updateWrapper); 		// 调用更新
+
+		}
+
 		saleInvoiceShipMapper.deleteByMainId(id);
 		saleInvoiceProductMapper.deleteByMainId(id);
 		saleInvoiceMapper.deleteById(id);
@@ -187,6 +273,29 @@ public class SaleInvoiceServiceImpl extends ServiceImpl<SaleInvoiceMapper, SaleI
 	@Transactional(rollbackFor = Exception.class)
 	public void delBatchMain(Collection<? extends Serializable> idList) {
 		for(Serializable id:idList) {
+
+			SaleInvoice saleInvoice = saleInvoiceMapper.selectById(id);
+
+			String sourceCode = saleInvoice.getSourceCode();//发货单来源
+			String sourceCode2 = saleInvoice.getSourceCode2();//佣金订单来源
+//
+			if(StringUtils.isNotBlank(sourceCode)){
+
+				UpdateWrapper<SaleDelivery> updateWrapper = new UpdateWrapper<>();
+				updateWrapper.eq("bill_code", sourceCode); 	// 设置主键
+				updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+				saleDeliveryMapper.update(new SaleDelivery(), updateWrapper); 		// 调用更新
+
+			}
+			if(StringUtils.isNotBlank(sourceCode2)){
+
+				UpdateWrapper<PlatCommissionOrder> updateWrapper = new UpdateWrapper<>();
+				updateWrapper.eq("bill_code", sourceCode2); 	// 设置主键
+				updateWrapper.set("invoice_code", null);  			// 设置 invoice_code 为 null
+				platCommissionOrderMapper.update(new PlatCommissionOrder(), updateWrapper); 		// 调用更新
+
+			}
+
 			saleInvoiceShipMapper.deleteByMainId(id.toString());
 			saleInvoiceProductMapper.deleteByMainId(id.toString());
 			saleInvoiceMapper.deleteById(id);

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

@@ -36,6 +36,10 @@ public class SaleDeliveryPage {
     private String sysOrgCode;
 	//关闭原因
 	private String closeReason;
+	//发票号(开发票时回写至此字段)
+	private String invoiceCode;
+	//销售出库单 是否开票申请(1是 0否)
+	private String applyInvoice;
 
 	/**创建时间*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")

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

@@ -60,7 +60,6 @@ public class SaleInvoicePage {
 	@ApiModelProperty(value = "作废(close)1是0否")
     private String close;
 	/**删除状态(0-正常,1-已删除)*/
-	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
 	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
     private Integer delFlag;
 	/**单据日期*/

+ 11 - 11
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreOnhandServiceImpl.java

@@ -57,7 +57,7 @@ public class StoreOnhandServiceImpl extends ServiceImpl<StoreOnhandMapper, Store
 
             StoreOnhand storeOnhand = this.getById(id);
             if (storeOnhand == null) {
-                throw new JeecgBootException(sourceType+sourceCode + "执行异常(数据不存在):"+id);
+                throw new JeecgBootException("执行异常(数据不存在):"+id);
             }
 
             sysDataLogService.addDataLog(sourceType + "叠加库存", sourceCode+":"+id, quantity.toString());
@@ -71,7 +71,7 @@ public class StoreOnhandServiceImpl extends ServiceImpl<StoreOnhandMapper, Store
             return "true";
 
         } catch (Exception e) {
-            throw new JeecgBootException(sourceType +sourceCode+ "产品:" + id + "执行异常");
+            throw new JeecgBootException(sourceType +sourceCode+ "产品:" + id + "执行异常"+e.getMessage());
         }
 
     }
@@ -118,12 +118,12 @@ public class StoreOnhandServiceImpl extends ServiceImpl<StoreOnhandMapper, Store
         String getSourceId = storeOnhand.getSourceId();
         String productCode = storeOnhand.getProductCode();
 
-        try {
+        BigDecimal quantity1 = storeOnhand.getQuantity();
+        if(isNullOrEmpty(quantity1)){
+            throw new JeecgBootException(sourceType + "产品:" + productCode + "数量为空,无法执行!");
+        }
 
-            BigDecimal quantity1 = storeOnhand.getQuantity();
-            if(isNullOrEmpty(quantity1)){
-                throw new JeecgBootException(sourceType + "产品:" + productCode + "数量为空,无法执行!");
-            }
+        try {
 
             QueryWrapper<StoreOnhand> queryWrapper = new QueryWrapper();
             queryWrapper.eq("project", storeOnhand.getProject());
@@ -196,7 +196,7 @@ public class StoreOnhandServiceImpl extends ServiceImpl<StoreOnhandMapper, Store
                 BigDecimal quantity = storeOnhand.getQuantity();
                 BigDecimal handQuantity = ent.getQuantity();
                 if (handQuantity.compareTo(quantity) < 0) {
-                    throw new JeecgBootException(getSourceCode + "产品:" + productCode + "库存不足,无法执行");
+                    throw new JeecgBootException("库存不足,无法执行");
                 }
 
                 sysDataLogService.addDataLog(sourceType + "(取消提交)" + getSourceCode, "减少库存"+getSourceId, json);
@@ -208,11 +208,11 @@ public class StoreOnhandServiceImpl extends ServiceImpl<StoreOnhandMapper, Store
                 return "true";
 
             } else {
-                throw new JeecgBootException(getSourceCode + "产品:" + productCode + "未找到有效库存");
+                throw new JeecgBootException("未找到有效库存");
             }
 
-        } catch (Exception e) {
-            throw new JeecgBootException(getSourceCode + "产品:" + productCode + "执行异常");
+        } catch (JeecgBootException e) {
+            throw new JeecgBootException(getSourceCode + "产品:" + productCode + "执行异常"+e.getMessage());
         }
     }
 

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

@@ -455,7 +455,7 @@ public class StorePurchaseInServiceImpl extends ServiceImpl<StorePurchaseInMappe
                 }
 
             }
-        } catch (Exception e) {
+        } catch (JeecgBootException e) {
             throw new JeecgBootException(e.getMessage());
 //            return e.getMessage();
         }

+ 69 - 13
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreSaleOutServiceImpl.java

@@ -1,11 +1,14 @@
 package org.jeecg.modules.storeCode.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.saleCode.entity.SaleDelivery;
 import org.jeecg.modules.saleCode.entity.SaleDeliveryDetails;
 import org.jeecg.modules.saleCode.mapper.SaleDeliveryDetailsMapper;
+import org.jeecg.modules.saleCode.mapper.SaleDeliveryMapper;
 import org.jeecg.modules.storeCode.entity.StoreOnhand;
 import org.jeecg.modules.storeCode.entity.StoreSaleOut;
 import org.jeecg.modules.storeCode.entity.StoreSaleOutShip;
@@ -47,6 +50,9 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
     @Autowired
     private SaleDeliveryDetailsMapper saleDeliveryDetailsMapper;
 
+    @Autowired
+    private SaleDeliveryMapper saleDeliveryMapper;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveMain(StoreSaleOut storeSaleOut, List<StoreSaleOutShip> storeSaleOutShipList, List<StoreSaleOutDetails> storeSaleOutDetailsList) {
@@ -67,14 +73,14 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
         if (storeSaleOutDetailsList != null && storeSaleOutDetailsList.size() > 0) {
             for (StoreSaleOutDetails entity : storeSaleOutDetailsList) {
 
-                BigDecimal stockOutQuantity = entity.getStockOutQuantity()==null?BigDecimal.ZERO:entity.getStockOutQuantity();
+                BigDecimal stockOutQuantity = entity.getStockOutQuantity() == null ? BigDecimal.ZERO : entity.getStockOutQuantity();
 
                 String productId = entity.getProductId();
                 String setBatchId = entity.getBatchId();
                 // 项目、仓库、货位、产品编码
-                if(StringUtils.isNotBlank(warehouse) && StringUtils.isNotBlank(goodsAllocation)
+                if (StringUtils.isNotBlank(warehouse) && StringUtils.isNotBlank(goodsAllocation)
                         && StringUtils.isNotBlank(project) && StringUtils.isNotBlank(productId)
-                        && StringUtils.isBlank(setBatchId)){
+                        && StringUtils.isBlank(setBatchId)) {
 
                     QueryWrapper<StoreOnhand> queryWrapper = new QueryWrapper<>();
                     queryWrapper.eq("project", project);
@@ -108,8 +114,8 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
                         arrivalQuantity = arrivalQuantity.add(stockOutQuantity);
                         saleDeliveryDetails.setDeliveryQuantity(arrivalQuantity);
 
-                        if(arrivalQuantity.compareTo(saleDeliveryDetails.getQuantity()) > 0){
-                            throw new JeecgBootException(entity.getProductCode()+entity.getEnglishName()+"发货单数量不足,请修改出库数量(已出库数量:"+saleDeliveryDetails.getDeliveryQuantity()+")");
+                        if (arrivalQuantity.compareTo(saleDeliveryDetails.getQuantity()) > 0) {
+                            throw new JeecgBootException(entity.getProductCode() + entity.getEnglishName() + "发货单数量不足,请修改出库数量(已出库数量:" + saleDeliveryDetails.getDeliveryQuantity() + ")");
                         }
 
                         saleDeliveryDetailsMapper.updateById(saleDeliveryDetails);
@@ -137,7 +143,7 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
                 String sourceId = entity.getSourceId();
                 if (StringUtils.isNotBlank(sourceId)) {
 
-                    BigDecimal stockOutQuantity = entity.getStockOutQuantity()==null?BigDecimal.ZERO:entity.getStockOutQuantity();
+                    BigDecimal stockOutQuantity = entity.getStockOutQuantity() == null ? BigDecimal.ZERO : entity.getStockOutQuantity();
 
                     SaleDeliveryDetails saleDeliveryDetails = saleDeliveryDetailsMapper.selectById(sourceId);
 
@@ -183,15 +189,15 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
         if (storeSaleOutDetailsList != null && storeSaleOutDetailsList.size() > 0) {
             for (StoreSaleOutDetails entity : storeSaleOutDetailsList) {
 
-                BigDecimal stockOutQuantity = entity.getStockOutQuantity()==null?BigDecimal.ZERO:entity.getStockOutQuantity();
+                BigDecimal stockOutQuantity = entity.getStockOutQuantity() == null ? BigDecimal.ZERO : entity.getStockOutQuantity();
 
                 String productId = entity.getProductId();
                 String setBatchId = entity.getBatchId();
                 // 项目、仓库、货位、产品编码
 
-                if(StringUtils.isNotBlank(warehouse) && StringUtils.isNotBlank(goodsAllocation)
+                if (StringUtils.isNotBlank(warehouse) && StringUtils.isNotBlank(goodsAllocation)
                         && StringUtils.isNotBlank(project) && StringUtils.isNotBlank(productId)
-                        && StringUtils.isBlank(setBatchId)){
+                        && StringUtils.isBlank(setBatchId)) {
 
                     QueryWrapper<StoreOnhand> queryWrapper = new QueryWrapper<>();
                     queryWrapper.eq("project", project);
@@ -226,8 +232,8 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
                         arrivalQuantity = arrivalQuantity.add(stockOutQuantity);
                         saleDeliveryDetails.setDeliveryQuantity(arrivalQuantity);
 
-                        if(arrivalQuantity.compareTo(saleDeliveryDetails.getQuantity()) > 0){
-                            throw new JeecgBootException(entity.getProductCode()+entity.getEnglishName()+"发货单数量不足,请修改出库数量(已出库数量:"+saleDeliveryDetails.getDeliveryQuantity()+")");
+                        if (arrivalQuantity.compareTo(saleDeliveryDetails.getQuantity()) > 0) {
+                            throw new JeecgBootException(entity.getProductCode() + entity.getEnglishName() + "发货单数量不足,请修改出库数量(已出库数量:" + saleDeliveryDetails.getDeliveryQuantity() + ")");
                         }
                         saleDeliveryDetailsMapper.updateById(saleDeliveryDetails);
                     }
@@ -254,7 +260,7 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
                 String sourceId = entity.getSourceId();
                 if (StringUtils.isNotBlank(sourceId)) {
 
-                    BigDecimal stockOutQuantity = entity.getStockOutQuantity()==null?BigDecimal.ZERO:entity.getStockOutQuantity();
+                    BigDecimal stockOutQuantity = entity.getStockOutQuantity() == null ? BigDecimal.ZERO : entity.getStockOutQuantity();
 
                     SaleDeliveryDetails saleDeliveryDetails = saleDeliveryDetailsMapper.selectById(sourceId);
 
@@ -296,7 +302,7 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
                     String sourceId = entity.getSourceId();
                     if (StringUtils.isNotBlank(sourceId)) {
 
-                        BigDecimal stockOutQuantity = entity.getStockOutQuantity()==null?BigDecimal.ZERO:entity.getStockOutQuantity();
+                        BigDecimal stockOutQuantity = entity.getStockOutQuantity() == null ? BigDecimal.ZERO : entity.getStockOutQuantity();
 
                         SaleDeliveryDetails saleDeliveryDetails = saleDeliveryDetailsMapper.selectById(sourceId);
 
@@ -347,6 +353,42 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
         QueryWrapper<StoreSaleOut> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("id", Arrays.asList(ids.split(",")));
 
+        List<StoreSaleOut> list = this.list(queryWrapper);
+        if (list.size() == 0) {
+            return Result.error("数据为空!");
+        }
+        List<String> codeList = new ArrayList<>();
+        StringBuffer sb = new StringBuffer();
+        for (StoreSaleOut o : list) {
+            // 1-已提交,0-未提交
+            String submit = o.getSubmit();
+            String code = o.getBillCode();
+            String applyInvoice = o.getApplyInvoice();//是否开票申请(1是 0否)
+            String sourceCode = o.getSourceCode();
+
+            if (submit == null || submit == "" || submit.equals("0")) {
+                sb.append("单据编码" + code).append("还未提交,请勿此操作;");
+                continue;
+            }
+            if (StringUtils.isNotBlank(applyInvoice) && applyInvoice.equals("1")) {
+                sb.append("单据编码" + code).append("已申请开票,请勿重复申请;");
+                continue;
+            }
+            codeList.add(sourceCode);
+        }
+
+        if (StringUtils.isNotBlank(sb.toString())) {
+
+            return Result.error(sb.toString());
+        }
+        if(codeList.size() > 0){
+
+            UpdateWrapper<SaleDelivery> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.in("bill_code", codeList); 	// 设置主键
+            updateWrapper.set("apply_Invoice", "1");  			// 设置 invoice_code 为 1
+            saleDeliveryMapper.update(new SaleDelivery(), updateWrapper); 		// 调用更新
+        }
+
         StoreSaleOut ent = new StoreSaleOut();
         ent.setApplyInvoice("1");
         this.update(ent, queryWrapper);
@@ -422,16 +464,30 @@ public class StoreSaleOutServiceImpl extends ServiceImpl<StoreSaleOutMapper, Sto
 
         StringBuffer sb = new StringBuffer();
 
+        List<String> codeList = new ArrayList<>();
         for (StoreSaleOut o : list) {
 
             //提交(1-是 ,0-否)
             String submit = o.getSubmit();
             String code = o.getBillCode();
+            String sourceCode = o.getSourceCode();
 
             if (submit == null || submit == "" || submit.equals("0")) {
                 sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
                 continue;
             }
+            codeList.add(sourceCode);
+        }
+
+        if(codeList.size() > 0){
+
+            QueryWrapper<SaleDelivery> queryWrapperSaleDelivery = new QueryWrapper<>();
+            queryWrapperSaleDelivery.in("bill_code", codeList);
+            queryWrapperSaleDelivery.isNotNull("invoice_code");
+            List<SaleDelivery> listSaleDelivery = saleDeliveryMapper.selectList(queryWrapperSaleDelivery);
+            if (listSaleDelivery.size() > 0) {
+                sb.append("含有已开发票数据,无法取消提交");
+            }
         }
 
         if (StringUtils.isNotBlank(sb.toString())) {