Ver Fonte

合并推送发票

huxy há 2 anos atrás
pai
commit
6769586d01
15 ficheiros alterados com 491 adições e 124 exclusões
  1. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/controller/SyPreAssembledPackingListController.java
  2. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingListItem.java
  3. 5 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListItemMapper.xml
  4. 25 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/controller/SyPackingListFabricController.java
  5. 11 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/entity/SyPackingListFabric.java
  6. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/entity/SyPackingListFabricItem.java
  7. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/mapper/xml/SyPackingListFabricMapper.xml
  8. 37 10
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/service/impl/SyPackingListFabricServiceImpl.java
  9. 77 31
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/controller/SyPackingListTailoringController.java
  10. 16 22
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/entity/PushJob.java
  11. 20 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/entity/SyPackingListTailoring.java
  12. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/mapper/xml/syPackingListTailoringItemMapper.xml
  13. 10 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/mapper/xml/syPackingListTailoringMapper.xml
  14. 11 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/service/ISyPackingListTailoringService.java
  15. 270 44
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/service/impl/SyPackingListTailoringServiceImpl.java

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/controller/SyPreAssembledPackingListController.java

@@ -1448,7 +1448,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                         cell.setCellStyle(cellStyle);
                     }
                     else if(i>=5+list.getSizeTables().size()&&i<9+list.getSizeTables().size()){
-                        System.out.println("i\t"+i);
+                        //System.out.println("i\t"+i);
                         cell.setCellValue(args2[i-list.getSizeTables().size()]);
                         cell.setCellStyle(cellStyle);
                     }

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingListItem.java

@@ -517,6 +517,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 				}
 			}
 		}
+		//System.out.println("totalVolume\t"+totalVolume+"\ttotalNetWeight\t"+totalNetWeight+"\ttotalGrossWeight\t"+totalGrossWeight);
 		return
 			"," +
 			itemCode + ","+

+ 5 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListItemMapper.xml

@@ -323,7 +323,7 @@
 			b.sy_pre_assembled_packing_list_id,
 			b.sy_declaration_elements_id,
 			b.sy_order_data_id,
-			b.item_Code,
+			ifnull(b.item_Code,'') item_Code,
 			b.ac_set_no,
 			b.garment_factory,
 			b.hod,
@@ -332,7 +332,7 @@
 			b.po_no,
 			b.item_code,
 			b.distribution_point,
-			b.prepack_sku,
+			ifnull(b.prepack_sku,'') prepack_sku,
 			b.size,
 			b.starting_box_number,
 			b.end_case_number,
@@ -343,13 +343,13 @@
 			b.plan_Quantity,/*计划装箱数量*/
 			b.actual_Packing_Qty,/*实际装箱数量*/
 			b.net_weight,
-			b.total_net_weight total_net_weight,/*总净重*/
+			cast(b.total_net_weight as decimal(10,2)) total_net_weight,/*总净重*/
 			b.gross_weight,
-			b.total_gross_weight total_gross_weight,/*总毛重*/
+			cast(b.total_gross_weight as decimal(10,2)) total_gross_weight,/*总毛重*/
 			b.outer_box_length,/*长*/
 			b.outer_Box_Width,/*宽*/
 			b.outer_Box_Height,/*高*/
-			b.total_volume total_volume,/*总体积*/
+			cast(b.total_volume as decimal(10,3)) total_volume,/*总体积*/
 			b.net_weight_too net_weight_too,/*净净重*/
 			b.unit_price,
 			sum(b.total_price) total_price,/*总价*/

+ 25 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/controller/SyPackingListFabricController.java

@@ -541,7 +541,7 @@ public class SyPackingListFabricController implements Job {
 	 @ApiOperation(value="测试推送", notes="测试推送")
 	 @GetMapping(value = "/testPushInvoice")*/
 //	 public Result<List<SyPackingListFabric>> pushInvoice(@RequestParam(name="id",required=true) String id) {
-	 public String pushInvoice(@RequestParam(name="id",required=true) String id) {
+	 public String pushInvoice(@RequestParam(name="id",required=true) String id,Map<String,Object> codeMaps) {
 //		 Result<List<SyPackingListFabric>> result=new Result<>();
 //		 if(oConvertUtils.isEmpty(id)){
 //			 result.setSuccess(false);
@@ -554,6 +554,10 @@ public class SyPackingListFabricController implements Job {
 		 }
 		 Map<String,Object> mapdate=syPackingListTailoringService.getSyShippingOrder(listFabrics.get(0).getId());//获取一些日期信息
 		 for (SyPackingListFabric fabric : listFabrics){
+			 if (!fabric.getPushState().equals("1")&&fabric.getDocumentNo().indexOf("ML")>-1){
+				 System.out.println("需要装箱单全部推送成功,才能推送发票");
+				 return "需要装箱单全部推送成功,才能推送发票";
+			 }
 			 //System.out.println("madate\t"+mapdate);
 			 if(mapdate!=null){
 				 if(mapdate.containsKey("e1")&&mapdate.get("e1")!=null) {
@@ -581,8 +585,26 @@ public class SyPackingListFabricController implements Job {
 			/* List<SyPackingListFabricItem> fabricItemList=syPackingListFabricService.getList(fabric.getId());
 			 fabric.setSyPackingListFabricItem(fabricItemList);*/
 		 }
-		 return syPackingListFabricService.pushInvoice(listFabrics);
-		 //return message;
+		 String message=syPackingListFabricService.pushInvoice(listFabrics);
+		 syPackingListFabricService.updateBatchById(listFabrics);
+		 List<String> msgs=new ArrayList<>();
+		 List<String> errors=new ArrayList<>();
+		 for (SyPackingListFabric tailoring : listFabrics){
+			 if(tailoring.getSaleInvoiceError()!=null){
+				 errors.add(tailoring.getSaleInvoiceError());
+			 }
+			 if(tailoring.getSaleInvoiceCode()!=null){
+				 if(!msgs.contains(tailoring.getSaleInvoiceCode())){
+					 msgs.add(tailoring.getSaleInvoiceCode());
+				 }
+			 }
+		 }
+		 codeMaps.put("message",msgs);//推送成功消息
+		 codeMaps.put("error",errors);//成功
+		 if(errors.size()==0){
+			 codeMaps.put("time_Stuta",2);//成功
+		 }
+		 return message;
 		 //List<SyPackingListFabricItem> listFabricItems=syPackingListFabricItemService.queryByList(id);//获取托书下所有的主表信
 		 /*for (SyPackingListFabric syPackingListFabric : listFabrics){
 		 }*/

+ 11 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/entity/SyPackingListFabric.java

@@ -228,12 +228,19 @@ public class SyPackingListFabric implements Serializable {
 	@TableField(exist = false)
 	private String planLotNumber;
 
-	/**计划单号*/
-	@Excel(name = "销售发票单编码", width = 15)
-	@ApiModelProperty(value = "销售发票单编码")
-	@TableField(exist = false)
+	/**记录销售发票单编码*/
+	@Excel(name = "记录销售发票单编码", width = 15)
+	@ApiModelProperty(value = "记录销售发票单编码")
+	//@TableField(exist = false)
 	private String saleInvoiceCode;
 
+	/**记录销售发票单推送报错原因*/
+	@Excel(name = "记录销售发票单推送报错原因", width = 15)
+	@ApiModelProperty(value = "记录销售发票单推送报错原因")
+	//@TableField(exist = false)
+	private String saleInvoiceError;
+
+
 	/**是否云工厂推送*/
 	//@TableField(exist = false)
 	@ApiModelProperty(value = "是否云工厂推送")

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/entity/SyPackingListFabricItem.java

@@ -362,6 +362,11 @@ public class SyPackingListFabricItem implements Serializable {
 	@ApiModelProperty(value = "委外采购子表Id")
 	private java.lang.String ompoIdItem;
 
+	/**是否tc功能0否1是*/
+	@Excel(name = "是否tc功能0否1是", width = 15)
+	@ApiModelProperty(value = "是否tc功能0否1是")
+	private java.lang.String isTc;
+
 	/**成衣工厂*/
 	@ApiModelProperty(value = "成衣工厂")
 	@TableField(exist = false)

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/mapper/xml/SyPackingListFabricMapper.xml

@@ -188,7 +188,7 @@
 		(select tailoring_fabric_id
 		from sy_shipping_order_item
 		where sy_shipping_order_item_id=#{value }
-		and del_flag=0)
+		and del_flag=0) and sale_Invoice_Code is null
 	</select>
 
 

+ 37 - 10
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/service/impl/SyPackingListFabricServiceImpl.java

@@ -195,6 +195,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			//detailsItem.setExcessQuantity(entity.getInventoryQuantity().subtract(detailsItem.getOrderRemainingQuantity()));
 			detailsItem.setIsReference(2);//面辅料回写
 			entity.setSalesman(detailsItem.getSalesman());//获取业务员
+			entity.setIsTc(detailsItem.getIsTc());
 			entity.setSalesDepartment(detailsItem.getSalesDepartment());//获取业务部门
 			entity.setPreDeliveryDate(detailsItem.getPreDeliveryDate());//hod
 			entity.setOrderNumber(detailsItem.getOrderNumber());//获取订单号
@@ -787,6 +788,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					syPackingListFabric.setSyDeclarationElementsId(item.getShippingDetailsId());//出运明细主表id
 					s1.setSpecificationAndModel(item.getSpecificationAndModel());//规格型号
 					s1.setAccount(item.getAccount());//账套号
+					s1.setIsTc(item.getIsTc());
 					s1.setElementsId(item.getElementsId());
 					s1.setPurOrSubOrder(item.getPurOrSubOrder());//委外采购订单
 					s1.setOrderNumber(item.getOrderNumber());//订单号
@@ -905,6 +907,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 						throw new JeecgBootException("出运明细未找到对应数据");
 					}
 					syPackingListFabric.setAccount(syShippingDetailsItem.getAccount());//获取账套号
+					item.setIsTc(syShippingDetailsItem.getIsTc());
 					item.setPrice(syShippingDetailsItem.getSalesUnitPrice());//单价
 					item.setElementsId(syShippingDetailsItem.getElementsId());
 					item.setInventoryCcode(syShippingDetailsItem.getInventoryCcode());//物料分类
@@ -1159,6 +1162,14 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			Map<String, Order> mapSort=new HashMap<>();
 			String date2 = main.getLatestDateOfShipment2().substring(0,10);//装柜日期
 			String createBy="进出口平台管理员";
+			String istc=main.getSyPackingListFabricItem().get(0).getIsTc();
+			if (istc!=null&&istc.equals("1")){
+				if(main.getRemarks()!=null){
+					main.setRemarks(main.getRemarks()+"TC证书");
+				}else{
+					main.setRemarks("TC证书");
+				}
+			}
 			//String createDate=main.getCreateTime().toString();
 			String createDate=main.getTheFinalShippingDate().substring(0,10);//转化日期类型
 			JSONObject map=new JSONObject();//采购(委外)入库单
@@ -1177,6 +1188,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map2.put("CGLTYPE","委外订单");//出库类别
 			map2.put("CRDCODE","22");//暂时设置成默认 Rd_Style有相关数据
 			map2.put("CMAKER",createBy);//制单人
+			map2.put("CMEMO",main.getRemarks());//制单人
 
 			JSONObject map3=new JSONObject();//销售发货单
 			map3.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("cDLCode","DispatchList","dcreatesystime")));//发货单号
@@ -1184,6 +1196,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map3.put("BRETURNFLAG","0");//退货标识(1:退货,0:发货)
 			map3.put("CMAKER",createBy);//制单人名称
 			map3.put("CVERIFIER",createBy);//审核人名称
+			map3.put("CMEMO",main.getRemarks());//制单人
 
 			JSONObject map4=new JSONObject();//销售出库单
 			map4.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("ccode","rdrecord32","dnmaketime")));//单据号
@@ -1191,6 +1204,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map4.put("CHANDLER",createBy);//审核人
 			map4.put("CRDCODE","26");//出库类别
 			map4.put("CMAKER",createBy);//制单人
+			map4.put("CMEMO",main.getRemarks());//制单人
 
 			JSONObject map5=new JSONObject();//采购发票
 			map5.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("cpbvcode ","PurBillVouch","cmaketime")));//发票号
@@ -1199,6 +1213,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map5.put("CMAKER",createBy);//制单人
 			map5.put("CGLTYPE","入库单");
 			map5.put("CHANDLER",createBy);//审核人
+			map5.put("CMEMO",main.getRemarks());//制单人
 
 			JSONObject map6=new JSONObject();//销售发票
 			map6.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("cSBVCode","SaleBillVouch where cvouchtype=27","cSBVCode")));//发票号
@@ -1206,6 +1221,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map6.put("CTYPE","普通");//发票类型(普通,专用)
 			map6.put("CMAKER",createBy);//制单人名称
 			map6.put("CVERIFIER",createBy);//制单人名称
+			map6.put("CMEMO",main.getRemarks());//制单人
 
 			JSONObject map7=new JSONObject();//采购(委外)入库单
 			map7.put("CVOUCHCODE", org.jeecg.modules.system.util.oConvertUtils.addOne(org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("cCode","RdRecord01","dnmaketime"))));//获取单据号
@@ -1216,6 +1232,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			map7.put("CGLTYPE","委外订单");//来源单据类型
 			//map7.put("CMAKER",createBy);//制单人
 			map7.put("CHANDLER",createBy);//审核人
+			map7.put("CMEMO",main.getRemarks());//制单人
 
 
 			map.put("CDEFINE4",main.getTheFinalShippingDate());//最终船期
@@ -2225,7 +2242,8 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 						queryWrapper2.last("limit 1");
 						SyShippingDetailsItem syShippingDetailsItem = syShippingDetailsItemMapper.selectOne(queryWrapper2);
 						if (syShippingDetailsItem != null) {
-							System.out.println("syShippingDetailsItemId\t"+syShippingDetailsItem.getId());
+							sy1.setIsTc(syShippingDetailsItem.getIsTc());
+							//System.out.println("syShippingDetailsItemId\t"+syShippingDetailsItem.getId());
 							sy1.setInventoryCcode(syShippingDetailsItem.getInventoryCcode());
 							String elementsId = syShippingDetailsItem.getElementsId();//申报要素id
 							if (oConvertUtils.isNotEmpty(elementsId)) {
@@ -2414,7 +2432,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		Map<String,List<String>> customers=getCustomers(codes);//key:供应商编码,value:出库单id
 		Map<String,List<SyPackingListFabricItem>> listFabricItemMaps=getListFabricItemMaps(customers,listFabrics);//key:供应商编码,value:子表数据
 		Map<String,List<SyPackingListFabric>> listFabricMaps=getListFabricMaps(customers,listFabrics);//key:供应商编码,value:主表数据
-		Map<String,List<SyPackingListFabric>> codeMaps=getListFabricMaps(customers,listFabrics);//key:传入销售发票单id,value:主表数据
+		Map<String,List<SyPackingListFabric>> codeMaps=new HashMap<>();//key:传入销售发票单id,value:主表数据
 		JSONArray jsonArrays1=new JSONArray();
 		String code=purchaseWarehousingMapper.getMaxCode("cSBVCode","SaleBillVouch where cvouchtype=27","cSBVCode");//发票号
 
@@ -2472,6 +2490,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					jsonObject.put("IQUANTITY",item.getActualDeclaredQuantity());//实际报关数量
 				}
 				jsonObject.put("CINVCODE",item.getInventoryCode());//存货编码
+				//jsonObject.put("size",item.getInventoryCode());//存货编码
 				jsonObject.put("DISAUTOIDCOL","DISAUTOIDCOL");//对应类型
 				boolean bool=true;
 				for (Map<String,Object> map : invoices){
@@ -2511,19 +2530,22 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			long endTime = System.currentTimeMillis();
 			System.out.println("互相插入数据时用的时间:" + (endTime - startTime) + "ms");
 		}
-		System.out.println("jsonArrays1\t"+jsonArrays1);
+		text(jsonArrays1,"测试合并推送面辅料销售发票");
 		JSONArray resturnJsonArrays = InterfaceConnUtils.doPost(jsonArrays1,"saleinvoice_import");//销售发票单
 		Map<String,String> codeMaps2 = result(resturnJsonArrays);
 		for (String code1 : codeMaps.keySet()){
 			List<SyPackingListFabric> listFabricList=codeMaps.get(code1);
-			List<String> ids=new ArrayList<>();
+			if(!codeMaps2.containsKey(code1)){//循环中没有就退出
+				continue;
+			}
 			for (SyPackingListFabric fabric : listFabricList){
-				ids.add(fabric.getId());
+				if (codeMaps2.get(code1).indexOf("失败")>-1){
+					fabric.setSaleInvoiceError(codeMaps2.get(code1));
+				}else{
+					fabric.setSaleInvoiceCode(codeMaps2.get(code1));
+					fabric.setRecordingError(null);
+				}
 			}
-			UpdateWrapper updateWrapper=new UpdateWrapper();
-			updateWrapper.set("sale_Invoice_Code","103销售发票:"+codeMaps2.get(code1));
-			updateWrapper.in("id",ids);
-			syPackingListFabricMapper.update(null,updateWrapper);
 		}
 		return "推送成功";
 	}
@@ -2532,7 +2554,12 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		Map<String,String> codeMaps=new HashMap<>();
 		for (int i=0;i<jsonArray.size();i++){
 			JSONObject jsonObject=jsonArray.getJSONObject(i);
-			codeMaps.put(jsonObject.get("ReceiptNo").toString(),jsonObject.get("U8ReceiptNo").toString());//key:传入的单号,value:生成的单号
+			if(jsonObject.get("Result").equals("F")){//获取发货单是否成功添加
+				//throw new JeecgBootException("账套"+account+"接口"+tableName+",原因"+ jsonObject.get("Description"));
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),"销售发票接口推送失败原因:"+jsonObject.get("Description").toString());//key:传入的单号,value:失败的信息
+			}else{
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),"103销售发票接口"+jsonObject.get("U8ReceiptNo").toString());//key:传入的单号,value:生成的单号
+			}
 		}
 		return codeMaps;//账套号-序号-生成的单号
 	}

+ 77 - 31
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/controller/SyPackingListTailoringController.java

@@ -1421,10 +1421,10 @@ public class SyPackingListTailoringController implements Job {
 					 }else{
 						 map.put("mpOrder",main.getPurchase());//采购委外订单号
 					 }
-					 String venCode=syPackingListTailoringService.getDictValue(main.getGarmentFactory());//根据成衣工厂获取仓库编码
+					 /*String venCode=syPackingListTailoringService.getDictValue(main.getGarmentFactory());//根据成衣工厂获取仓库编码
 					 if(venCode!=null){
 						 map.put("vencode",venCode);//委外采购账套号
-					 }
+					 }*/
 					 map.put("customerCode","one");//客户编码
 					 map.put("CVENCODE","one");//供应商编码
 					 map.put("orderNumber","one");//销售订单号2
@@ -1705,10 +1705,10 @@ public class SyPackingListTailoringController implements Job {
 				}else{
 					map.put("mpOrder",main.getPurchase());//采购委外订单号
 				}
-				String venCode=syPackingListTailoringService.getDictValue(main.getGarmentFactory());//根据成衣工厂获取仓库编码
+				/*String venCode=syPackingListTailoringService.getDictValue(main.getGarmentFactory());//根据成衣工厂获取仓库编码
 				if(venCode!=null){
 					map.put("vencode",venCode);//委外采购账套号
-				}
+				}*/
 				map.put("customerCode","one");//客户编码
 				map.put("CVENCODE","one");//供应商编码
 				map.put("orderNumber","one");//销售订单号
@@ -1941,20 +1941,19 @@ public class SyPackingListTailoringController implements Job {
 	 @ApiOperation(value="测试推送", notes="测试推送")
 	 @GetMapping(value = "/testPushInvoice")*/
 	 //public Result<List<SyPackingListTailoring>> pushInvoice(@RequestParam(name="id",required=true) String id) {
-	 public String pushInvoice(@RequestParam(name="id",required=true) String id) {
-//		 Result<List<SyPackingListTailoring>> result=new Result<>();
-//		 if(oConvertUtils.isEmpty(id)){
-//			 result.setSuccess(false);
-//			 result.setMessage("id为空");
-//			 return result;
-//		 }
+	 public String pushInvoice(@RequestParam(name="id",required=true) String id,Map<String,Object> codeMaps) {
 		 List<SyPackingListTailoring> listTailorings=syPackingListTailoringService.queryByList(id);
 		 if(listTailorings.size()==0){
 		 	return "未在装箱单找到对应单据";
 		 }
 		 //List<SyPackingListFabricItem> listFabricItems=syPackingListFabricItemService.queryByList(id);//获取托书下所有的主表信
 		 Map<String,Object> mapdate=syPackingListTailoringService.getSyShippingOrder(listTailorings.get(0).getId());//获取一些日期信息
+		 Map<String,List<SyPackingListTailoring>> listMap=new HashMap<>();
+		 Map<String,List<String>> listStrMap=new HashMap<>();
 		 for (SyPackingListTailoring tailoring : listTailorings){
+		 	 if (!tailoring.getPushState().equals("1")){
+		 		 return "需要装箱单全部推送成功,才能推送发票";
+			 }
 			 //System.out.println("madate\t"+mapdate);
 			 if(mapdate!=null){
 				 if(mapdate.containsKey("e1")&&mapdate.get("e1")!=null) {
@@ -1968,27 +1967,74 @@ public class SyPackingListTailoringController implements Job {
 				 }
 			 }
 			 List<SyPackingListTailoringItem> tailoringItemList=syPackingListTailoringService.getList(tailoring.getId());
+			 SyOrderData syOrderData=syOrderDataMapper.selectById(tailoringItemList.get(0).getSyOrderDataId());//最终客户
+			 if(syOrderData!=null){
+				 tailoring.setEndCustomer(syOrderData.getEndCustomer());
+			 }
 			 tailoring.setSyPackingListTailoringItemList(tailoringItemList);
-		 }
-		 return syPackingListTailoringService.pushInvoice1(listTailorings);
-		 //return message;
-		 //String message = syPackingListFabricService.pushInvoice(listFabricItems,listFabrics);
-//		 if(listTailorings.size()==0){
-//			 result.setSuccess(false);
-//			 result.setMessage("未查询到装箱单的数据");
-//			 result.setResult(listTailorings);
-//			 return result;
-//		 }
-//		 result.setSuccess(true);
-//		 result.setMessage(message);
-//		 result.setResult(listTailorings);
-//		 return result;
-	 }
+			 if(listMap.containsKey(tailoring.getOmpoAccount())){
+			 	 listMap.get(tailoring.getOmpoAccount()).add(tailoring);
 
-	 /*@AutoLog(value = "获取数据")
-	 @ApiOperation(value="获取数据", notes="获取数据")
-	 @GetMapping(value = "/getMessage")*/
-	 public String getMessage( ) {
-		 return "更新了6条数据";
+			 	 listStrMap.get(tailoring.getOmpoAccount()).add(tailoring.getId());
+			 }else{
+				 List<SyPackingListTailoring> listTailorings1=new ArrayList<>();
+				 listTailorings1.add(tailoring);
+				 listMap.put(tailoring.getOmpoAccount(),listTailorings1);
+				 List<String> stringList=new ArrayList<>();
+				 stringList.add(tailoring.getId());
+				 listStrMap.put(tailoring.getOmpoAccount(),stringList);
+			 }
+		 }
+		 String message="";
+		 String messages="";
+		 for (String key : listMap.keySet()){
+			 Map<String,Object> maps=new HashMap<>();
+			 maps.put("account",key);//账套号
+			 maps.put("account1",key);//账套号
+			 for (int i=0;i<2;i++){
+			 	/*if(maps.get("account").equals("103")){
+					message+=syPackingListTailoringService.pushInvoice3(listTailorings, maps);
+					message+=syPackingListTailoringService.pushInvoice6(listTailorings, maps);
+				}else if(maps.get("account").equals("102")){
+					message+=syPackingListTailoringService.pushInvoice2(listTailorings, maps);
+					message+=syPackingListTailoringService.pushInvoice5(listTailorings, maps);
+				}else if(maps.get("account").equals("101")){
+					message+=syPackingListTailoringService.pushInvoice1(listTailorings, maps);
+					message+=syPackingListTailoringService.pushInvoice6(listTailorings, maps);
+				}*/
+				 if(i==0){
+					 maps.put("account","103");//账套号
+					 message+=syPackingListTailoringService.pushInvoice3(listTailorings, maps);
+					 message+=syPackingListTailoringService.pushInvoice6(listTailorings, maps);
+				 }else if(i==1){
+					 maps.put("account","102");//账套号
+					 message+=syPackingListTailoringService.pushInvoice2(listTailorings, maps);
+					 message+=syPackingListTailoringService.pushInvoice5(listTailorings, maps);
+				 }else if(i==2){
+					 maps.put("account","101");//账套号
+					 message+=syPackingListTailoringService.pushInvoice1(listTailorings, maps);
+					 message+=syPackingListTailoringService.pushInvoice4(listTailorings, maps);
+				 }
+			 }
+		 }
+		 syPackingListTailoringService.updateBatchById(listTailorings);
+		 List<String> msgs=new ArrayList<>();
+		 List<String> errors=new ArrayList<>();
+		 for (SyPackingListTailoring tailoring : listTailorings){
+			 if(tailoring.getSaleInvoiceError()!=null){
+				errors.add(tailoring.getSaleInvoiceError());
+			 }
+			 if(tailoring.getSaleInvoiceCode()!=null){
+			 	if(!msgs.contains(tailoring.getSaleInvoiceCode())){
+					msgs.add(tailoring.getSaleInvoiceCode());
+				}
+			 }
+		 }
+		 codeMaps.put("message",msgs);//推送成功消息
+		 codeMaps.put("error",errors);//成功
+		 if(errors.size()==0){
+			 codeMaps.put("time_Stuta",2);//成功
+		 }
+		 return messages;
 	 }
 }

+ 16 - 22
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/entity/PushJob.java

@@ -32,42 +32,36 @@ public class PushJob implements Job {
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException {
         long startTime = System.currentTimeMillis();
-        QueryWrapper queryWrapper= new QueryWrapper();
-        queryWrapper.eq("time_Stuta","1");
+        QueryWrapper<SyShippingOrder> queryWrapper= new QueryWrapper();
+        queryWrapper.nested(i->i.eq("time_Stuta",1).or().eq("time_Stuta",3));//1、待推送,2、推送成功,3、推送失败
+        //queryWrapper.eq("time_Stuta","1");//待推送
         queryWrapper.eq("del_flag","0");
+        //queryWrapper.eq("ready_Fabric","成衣");
+        //queryWrapper.last("limit 2");
       //  queryWrapper.nested(i->i.ne("recording_Status","1").nested(s->s.eq("push_State","3").or().like("recording_Error","超时"))) ;//推送中
         //queryWrapper.ne("time_Stuta",2);
         //queryWrapper.last("limit 3");
         List<SyShippingOrder> orderList=syShippingOrderMapper.selectList(queryWrapper);
         System.out.println("orderList.size\t"+orderList.size());
-        Map<String,String> codeMaps=new HashMap<>();
         for (SyShippingOrder order : orderList){
-            String message="";
+            Map<String,Object> codeMaps=new HashMap<>();
+            codeMaps.put("time_Stuta",3);//默认为失败 清空所有失败记录就算成功
+            codeMaps.put("message","");//推送成功消息
+            codeMaps.put("error","");//成功
             if(order.getReadyFabric().equals("成衣")){
-                message=syPackingListTailoringController.pushInvoice(order.getId());
-                //System.out.println("成衣\t"+order.getReadyFabric());
-               // System.out.println(syPackingListTailoringController.getMessage());
-            }else{
-                message=syPackingListFabricController.pushInvoice(order.getId());
-                //System.out.println("面辅料\t"+order.getReadyFabric());
-              //  System.out.println(syPackingListFabricController.getMessage());
-            }
-            if(message.indexOf("失败")>-1){
-                order.setTimeStuta(2);
+                syPackingListTailoringController.pushInvoice(order.getId(),codeMaps);
             }else{
-                order.setTimeStuta(1);
+                syPackingListFabricController.pushInvoice(order.getId(),codeMaps);
             }
+            order.setTimeStuta(Integer.parseInt(codeMaps.get("time_Stuta").toString()));
+            order.setTimeMesage(codeMaps.get("message").toString());
+            order.setFailMesage(codeMaps.get("error").toString());
             syShippingOrderMapper.updateById(order);
-            codeMaps.put(order.getId(),message);
+            //codeMaps.put(order.getId(),message);
         }
-        /*for (String id : codeMaps.keySet()){
-            if(codeMaps.get(id).indexOf("失败")>-1){
-
-            }
-        }*/
         long endTime = System.currentTimeMillis();
         System.out.println("互相插入数据时用的时间:" + (endTime - startTime) + "ms");
-        System.out.println("codeMaps\n"+codeMaps);
+       // System.out.println("codeMaps\n"+codeMaps);
     }
 
   /*  public static void main(String[] args) {

+ 20 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/entity/SyPackingListTailoring.java

@@ -218,6 +218,11 @@ public class SyPackingListTailoring implements Serializable {
 	@ApiModelProperty(value = "委外采购主表Id")
 	private String ompoId;
 
+	//委外采购Id
+	@ApiModelProperty(value = "委外采购账套号")
+	@TableField(exist = false)
+	private String ompoAccount;
+
 	/**最终船期*/
 	@TableField(exist = false)
 	private String theFinalShippingDate;
@@ -255,6 +260,21 @@ public class SyPackingListTailoring implements Serializable {
 	@TableField(exist = false)
 	private String latestDateOfShipment2;
 
+	/**是否tc功能0否1是*/
+	@Excel(name = "是否tc功能0否1是", width = 15)
+	@ApiModelProperty(value = "是否tc功能0否1是")
+	private java.lang.String isTc;
+
+	/**记录销售发票单编码*/
+	@Excel(name = "记录销售发票单编码", width = 15)
+	@ApiModelProperty(value = "记录销售发票单编码")
+	private String saleInvoiceCode;
+
+	/**记录销售发票单推送报错原因*/
+	@Excel(name = "记录销售发票单推送报错原因", width = 15)
+	@ApiModelProperty(value = "记录销售发票单推送报错原因")
+	private String saleInvoiceError;
+
 	/*public static void main(String[] args) {
 		String code="103账套采购入库单:0000023077;103账套销售发货单:20230407T00908541;103账套销售出库单:0000008778;101账套采购入库单:0000023501;101账套采购发票单:0000018078";
 		String [] strs=code.split(";");

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/mapper/xml/syPackingListTailoringItemMapper.xml

@@ -303,6 +303,7 @@
 		ompo_Account,
 		ompo_Id,
 		spur_Or_Sub_Order,
+		supplier,
 		small_Po,
 		inventory_Code,
 		(select declaration_Name from sy_declaration_elements

+ 10 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/mapper/xml/syPackingListTailoringMapper.xml

@@ -38,6 +38,9 @@
     </select>
 
     <select id="querySpaplIds" resultType="org.jeecg.modules.splt.entity.SyPackingListTailoring">
+--        size_range,customer_code,container_code,the_factory_price,business_Type_Value,
+--       salesman,sales_Department,ompo_id,sy_order_data_id,is_tc
+
         select
         a.id syPreAssembledPackingListId,/*预装箱单主表id*/
         a.order_Number,/*订单号*/
@@ -70,6 +73,7 @@
         a.sales_Department,/*业务部门(销售部门)*/
         a.business_Type_Value,/*业务类型*/
         a.elements_Id,/*申报要素id*/
+        a.is_tc,
         order_Type /*订单类型*/
         /*a.pre_Delivery_Date,预发货日期*/
         /*a.total_Boxes,总箱数*/
@@ -327,13 +331,17 @@
     <select id="queryByList"  parameterType="java.lang.String" resultType="org.jeecg.modules.splt.entity.SyPackingListTailoring">
 		select   *,
 		    (select supplier from sy_packing_list_tailoring_item
-		     where sy_packing_list_tailoring_id=sy_packing_list_tailoring.id limit 1) supplier
+		     where sy_packing_list_tailoring_id=sy_packing_list_tailoring.id limit 1) supplier,
+		      (select supplier_code from sy_packing_list_tailoring_item
+		     where sy_packing_list_tailoring_id=sy_packing_list_tailoring.id limit 1) supplier_code,
+		      (select ompo_account from sy_packing_list_tailoring_item
+		     where sy_packing_list_tailoring_id=sy_packing_list_tailoring.id limit 1) ompo_account
 		from sy_packing_list_tailoring
 		where del_flag=0 and id in
 		(select tailoring_fabric_id
 		from sy_shipping_order_item
 		where sy_shipping_order_item_id=#{value }
-		and del_flag=0)
+		and del_flag=0)  /*and sale_Invoice_Code is null and sale_Invoice_error is null*/
 	</select>
 
     <select id="getSuppliers"  parameterType="java.lang.String" resultType="java.util.HashMap">

+ 11 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/service/ISyPackingListTailoringService.java

@@ -127,7 +127,17 @@ public interface ISyPackingListTailoringService extends IService<SyPackingListTa
 	public String getIvouchrowno( String params1, String params2,  String params3
 			,  String params4, String params5);
 
-	String pushInvoice1(List<SyPackingListTailoring> listTailorings);
+	String pushInvoice1(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
+
+	String pushInvoice2(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
+
+	String pushInvoice3(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
+
+	String pushInvoice4(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
+
+	String pushInvoice5(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
+
+	String pushInvoice6(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps);
 
 	List<SyPackingListTailoring> queryByList(String id);
 

+ 270 - 44
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/service/impl/SyPackingListTailoringServiceImpl.java

@@ -243,6 +243,11 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		return syPackingListTailoring;
 	}
 
+	/**
+	 * 添加方式1 批量参照
+	 * @param syPackingListTailorings
+	 * @param ids
+	 */
 	@Override
 	@Transactional
 	public void saveMain3(List<SyPackingListTailoring> syPackingListTailorings,String[] ids) {
@@ -336,7 +341,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 	}
 
 	/**
-	 * 云工厂测试用-接口
+	 * 云工厂测试用-接口 添加方式2 云工厂添加
 	 * @param syPackingListTailoring
 	 * @return
 	 */
@@ -362,6 +367,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		syPackingListTailoring.setBusinessTypeValue(syPreAssembledPackingList.getBusinessTypeValue());//业务类型
 		syPackingListTailoring.setSalesman(syPreAssembledPackingList.getSalesman());//业务员
 		syPackingListTailoring.setSalesDepartment(syPreAssembledPackingList.getSalesDepartment());//业务部门
+		syPackingListTailoring.setIsTc(syPreAssembledPackingList.getIsTc());
 		syPackingListTailoring.setCustomer(syPreAssembledPackingList.getCustomer());//客户
 		syPackingListTailoring.setCustomerAbbreviation(syPreAssembledPackingList.getCustomerAbbreviation());//客户简称
 		syPackingListTailoringMapper.insert(syPackingListTailoring);//往主表添加数据
@@ -732,7 +738,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 
 	/**
 	 * excel
-	 * @param mains
+	 * @param mains 添加方式3 通过excel文档导入
 	 * @return
 	 */
 	@Override
@@ -774,7 +780,6 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 
 		UpdateWrapper updateWrapper=new UpdateWrapper();
 		updateWrapper.set("is_Reference","2");//已被装箱单参照,预装箱单不能取消提交
-		System.out.println("mainIds\t"+mainIds);
 		updateWrapper.in("id",mainIds);//预装箱单主表id做为修改条件
 		syPreAssembledPackingListMapper.update(null,updateWrapper);//修改
 
@@ -852,7 +857,9 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 							item1.setOmpoId(syPreItem.getOmpoId());//主表id
 							item1.setOmpoIdItem(syPreItem.getOmpoIdItem());//子表id
 							item1.setOmpoAccount(syPreItem.getOmpoAccount());//子表id
-
+							item1.setPacks(syPreItem.getPacks());//包数
+							item1.setPackBox(syPreItem.getPackBox());//包数/箱
+							item1.setTotalPack(syPreItem.getTotalPack());//件数/包
 							item1.setSyOrderDataId(syPreItem.getSyOrderDataId());//订单数据子表id
 							item1.setSyOrderDataItemId(syPreItem.getSyOrderDataItemId());//订单数据子表id
 							/*item1.setSupplier(syPreItem.getSupplier());
@@ -872,6 +879,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 				SyPreAssembledPackingList syPreAssembledPackingList=syPreAssembledPackingListMapper.selectById(syPackingListTailoring.getSyPreAssembledPackingListId());
 				if(syPreAssembledPackingList!=null){
 					syPackingListTailoring.setCustomer(syPreAssembledPackingList.getCustomer());
+					syPackingListTailoring.setIsTc(syPreAssembledPackingList.getIsTc());
 					syPackingListTailoring.setElementsId(syPreAssembledPackingList.getElementsId());
 					syPackingListTailoring.setOrderNumber(syPreAssembledPackingList.getOrderNumber());
 				}
@@ -1100,6 +1108,15 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		System.out.println("maptererere\t"+mapt);
 		//账套号
 		if (main!=null){
+
+			if (main.getIsTc()!=null&&main.getIsTc().equals("1")){
+				if(main.getMemo()!=null){
+					main.setMemo(main.getMemo()+"TC证书");
+				}else{
+					main.setMemo("TC证书");
+				}
+			}
+
 			Map<String,String> mapSort=new HashMap<>();
 			String createBy="进出口平台管理员";
 			//String createDate=main.getCreateTime().toString();
@@ -1120,6 +1137,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			map3.put("BRETURNFLAG","0");//退货标识(1:退货,0:发货)
 			map3.put("CMAKER",createBy);//制单人名称
 			map3.put("CVERIFIER",createBy);//审核人名称
+			map3.put("CMEMO",main.getMemo());//备注
 
 			JSONObject map4=new JSONObject();//销售出库单
 			map4.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("ccode","rdrecord32","dnmaketime")));//单据号
@@ -1127,6 +1145,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			map4.put("CHANDLER",createBy);//审核人
 			map4.put("CRDCODE","26");//出库类别
 			map4.put("CMAKER",createBy);//制单人
+			map4.put("CMEMO",main.getMemo());//备注
 
 			JSONObject map5=new JSONObject();//采购发票
 			map5.put("CVOUCHCODE",org.jeecg.modules.system.util.oConvertUtils.addOne(purchaseWarehousingMapper.getMaxCode("cpbvcode ","PurBillVouch","cmaketime")));//发票号
@@ -1134,6 +1153,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			map5.put("CTYPE","专用");//发票类型(01:专用 02:普票)
 			map5.put("CMAKER",createBy);//制单人
 			map5.put("CHANDLER",createBy);//审核人
+			map5.put("CMEMO",main.getMemo());//备注
 
 
 			JSONObject map6=new JSONObject();//销售发票
@@ -1142,6 +1162,7 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			map6.put("CTYPE","普通");//发票类型(普通,专用)
 			map6.put("CMAKER",createBy);//制单人名称
 			map6.put("CVERIFIER",createBy);//制单人名称
+			map6.put("CMEMO",main.getMemo());//备注
 
 			map.put("CDEFINE4",main.getTheFinalShippingDate().substring(0,10));//最终船期
 			map.put("CDEFINE6",main.getTheFinalShippingDate2().substring(0,10));//合同日期
@@ -1786,9 +1807,9 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			return null;
 		}
 		List<SyPackingListTailoringItem> itemLists=syPackingListTailoringItemMapper.querySpaplItemIds(ids);
-		System.out.println("itemLists.size\t"+itemLists.size());
+		//System.out.println("itemLists.size\t"+itemLists.size());
 		List<SizeTable> sizeLists2=syPreAssembledPackingListItemMapper.queryAllSize(ids);//子表尺码
-		System.out.println("sizeLists2.size\t"+sizeLists2.size());
+		//System.out.println("sizeLists2.size\t"+sizeLists2.size());
 		Map<String,List<SyPackingListTailoringItem>> maplItems=new HashMap<>();
 		Map<String,List<SizeTable>> mapItemSizes=new HashMap<>();//子表尺码
 		for (SizeTable size : sizeLists2){//子表尺码
@@ -1912,53 +1933,65 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		return syPackingListTailoringMapper.getIvouchrowno(params1,params2,params3,params4,params5);
 	}
 
-	@Override
-	@DS("multi-two")
-	public String pushInvoice1(List<SyPackingListTailoring> listTailorings) {
+	/**
+	 * 采购委外入库单
+	 * @param listTailorings
+	 * @param maps
+	 * @return
+	 */
+	public String pushInvoices(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
 		long startTime = System.currentTimeMillis();
 		String message="";
-		//List<SyPackingListFabricItem> listFabricItems=syPackingListFabricItemMapper.queryByList(id);
-		//List<SyPackingListFabric> listFabrics=syPackingListFabricMapper.queryByList(id);//获取托书下所有的主表信息
-		List<String> codes=getList(listTailorings);//获取出库单号
-		System.out.println("成衣查看出库单号\t"+codes);
+		List<String> codes=getList(listTailorings,maps.get("account").toString());//获取出库单号
+		System.out.println("成衣查看入库单号\t"+codes);
 		if(codes.size()==0){
-			return "推送失败,未查询到对应的出库单号!";
+			return "无可推送数据!";
 		}
 		Map<String,List<String>> customers=getSuppliers(codes);//key:供应商编码,value:出库单id
 		Map<String,List<SyPackingListTailoringItem>> listTailoringItemMaps=getListTailoringItemMaps(customers,listTailorings);//key:供应商编码,value:对应子表
 		Map<String,List<SyPackingListTailoring>> listTailoringMaps=getListTailoringMaps(customers,listTailorings);//key:供应商编码,value:对应主表
+		Map<String,List<SyPackingListTailoring>> codeMaps=new HashMap<>();//key:传入销售发票单id,value:主表数据
 		JSONArray jsonArrays1=new JSONArray();
 		String code=purchaseWarehousingMapper.getMaxCode("cpbvcode ","PurBillVouch","cmaketime");//发票号
+		String account=maps.get("account").toString();
 
 		for (String customer : customers.keySet()){
 			SyPackingListTailoring syPackingListTailoring=listTailoringMaps.get(customer).get(0);
-			Map<String, Object> orderData=syPackingListTailoringMapper.getOmOrPo("po_pomain",
-					"cpoid=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListTailoring.getRdrecord32Code()+"')","poid");
+			Map<String, Object> orderData=null;
+			if(account.equals("103")||account.equals("101")){
+				orderData=syPackingListTailoringMapper.getOmOrPo("om_momain",
+				"cCode=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListTailoring.getRdrecord32Code()+"')","MOID");
+			}else{
+				orderData=syPackingListTailoringMapper.getOmOrPo("po_pomain",
+				"cpoid=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListTailoring.getRdrecord32Code()+"')","poid");
+			}
 			System.out.println("orderData\t"+orderData);
 			String cvenName=syPackingListTailoringMapper.getCvenName(syPackingListTailoring.getSupplierCode());//供应商编码
 			//List<SyPackingListFabricItem> listFabricItems=syPackingListFabric.getSyPackingListFabricItem();//需要进行分组
 			List<SyPackingListTailoringItem> listTailoringItems=listTailoringItemMaps.get(customer);
 			//System.out.println("codes.size\t"+codes.size());
 			System.out.println("codes\t"+codes);
-			List<Map<String,Object>> invoices=getInvoices(customers.get(customer));
+			List<Map<String,Object>> invoices=getInvoices1(customers.get(customer));
 			JSONObject  jsonObject1=new JSONObject();
 			code=org.jeecg.modules.system.util.oConvertUtils.addOne(code);
+			codeMaps.put(code,listTailoringMaps.get(customer));
 			jsonObject1.put("CVOUCHCODE",code);//发票号
 			jsonObject1.put("CMAKER","进出口平台管理员");//制单人
-			jsonObject1.put("CVERIFIER","进出口平台管理员");//审核人
-			jsonObject1.put("CACCID","102");//账套号
+			jsonObject1.put("CHANDLER","进出口平台管理员");//审核人
+			jsonObject1.put("CACCID",account);//账套号
 			jsonObject1.put("CTYPE","专用");//发票类型
 
 			jsonObject1.put("CGLTYPE","入库单");//上游单据
+			System.out.println("syPackingListTailoring.getLatestDateOfShipment2()\t"+syPackingListTailoring.getLatestDateOfShipment2());
 			jsonObject1.put("DDATE",syPackingListTailoring.getLatestDateOfShipment2().substring(0,10));//装运期限
-			jsonObject1.put("CDEFINE4",syPackingListTailoring.getTheFinalShippingDate());//最终船期
-			jsonObject1.put("CDEFINE6",syPackingListTailoring.getTheFinalShippingDate2());//合同日期
+			jsonObject1.put("CDEFINE4",syPackingListTailoring.getTheFinalShippingDate().substring(0,10));//最终船期
+			jsonObject1.put("CDEFINE6",syPackingListTailoring.getTheFinalShippingDate2().substring(0,10));//合同日期
 			jsonObject1.put("CDEFINE10",syPackingListTailoring.getShippingOrderNumber());//托书号
 
 			jsonObject1.put("CDEFINE12",cvenName);//供应商全称
 			jsonObject1.put("CPAYCODE",orderData.get("cPayCode"));//付款条件编码
-			jsonObject1.put("IEXCHRATE",orderData.get("cexchname"));//汇率
-			jsonObject1.put("CEXCH_NAME",orderData.get("nflat"));//币种名称
+			jsonObject1.put("IEXCHRATE",orderData.get("nflat"));//汇率
+			jsonObject1.put("CEXCH_NAME",orderData.get("cexchname"));//币种名称
 
 			if(!orderData.get("cexchname").equals("人民币")){//不为人民币
 				SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-M-dd");
@@ -1975,34 +2008,22 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 				jsonObject.put("CINVCODE",item.getInventoryCode());//存货编码
 				jsonObject.put("CDEFINE28",item.getSmallPo());//小po
 				jsonObject.put("DISAUTOIDCOL","DISAUTOIDCOL");//对应类型
-				boolean bool=true;
 				for (Map<String,Object> map : invoices){
 					if(Double.parseDouble(map.get("iQuantity").toString())==Double.parseDouble(jsonObject.get("IQUANTITY").toString())&&
-							map.get("cInvCode").toString().equalsIgnoreCase(item.getInventoryCode())&&map.get("cFree2").equals(item.getSize())){
+					   map.get("cInvCode").toString().equalsIgnoreCase(item.getInventoryCode())&&map.get("cFree2").equals(item.getSize())){
 						jsonObject.put("AUTOID_PO",map.get("AutoID"));
 						jsonObject.put("IORITAXCOST",syPackingListTailoringItemMapper.getiTaxPrice(map.get("AutoID").toString()));
-						//System.out.println("map\t"+map);
 						getcFree(jsonObject,map);
-						//invoices.remove(map);
-						bool=false;
 						break;
 					}
 				}
-				if(bool){
-					//System.out.println("tid\t"+item.getId());
-					//System.out.println("tpid\t"+item.getSyPackingListFabricId());
-				}
 				jsonObject.put("CDEFINE23",syPackingListTailoringMapper.getUnit(item.getInventoryCode()));//报关单位
 				jsonObject.put("CDEFINE33",item.getDeclarationName());//存货名称
-				//jsonObject.put("iTaxRate",syPackingListFabricItemMapper.getItaxRate(item.getOmpoIdItem()));//税率
-				//jsonObject.put("CWHCODE",syPackingListFabricItemMapper.getVencode(item.getSupplier()));//获取仓库编码
 				jsonArrays.add(jsonObject);
-				//getcFree(jsonObject,jsonObject);
-				//System.out.println("jsonObject\n"+jsonObject);
 			}
 			jsonObject1.put("DETAILList",jsonArrays);
 			jsonArrays1.add(jsonObject1);
-			Map<String,List<String>> maps=new HashMap<>();//key:客户编码-字符,value:主表id-数组 用于区分维度完成分组条件
+			//Map<String,List<String>> maps=new HashMap<>();//key:客户编码-字符,value:主表id-数组 用于区分维度完成分组条件
 			System.out.println("jsonObject\n"+jsonObject1);
 			//System.out.println("jsonArrays.size\t"+jsonArrays.size());
 			//System.out.println("listFabrics.size\t"+listFabrics.size());
@@ -2011,16 +2032,197 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			System.out.println("互相插入数据时用的时间:" + (endTime - startTime) + "ms");
 		}
 		System.out.println("jsonArrays1\n"+jsonArrays1);
-		//JSONArray resturnJsonArrays = InterfaceConnUtils.doPost(jsonArrays1,"saleinvoice_import");//采购发票单
-		//Map<String,String> codeMaps2 = result(resturnJsonArrays);
+		text(jsonArrays1,"测试合并推送成衣采购发票");
+		JSONArray resturnJsonArrays = InterfaceConnUtils.doPost(jsonArrays1,"purinvoice_import");//采购发票单
+		Map<String,String> codeMaps2 = result(resturnJsonArrays,"销售发票",account);
+		for (String code1 : codeMaps.keySet()){
+			List<SyPackingListTailoring> listTailoringList=codeMaps.get(code1);
+			//List<String> ids=new ArrayList<>();
+			for (SyPackingListTailoring tailoring : listTailoringList){
+				//ids.add(fabric.getId());
+				if (codeMaps2.get(code1).indexOf("失败")>-1){
+					tailoring.setSaleInvoiceError(codeMaps2.get(code1));
+				}else{
+					if(tailoring.getSaleInvoiceCode()==null){
+						tailoring.setSaleInvoiceCode(codeMaps2.get(code1));
+					}else{
+						tailoring.setSaleInvoiceCode(tailoring.getSaleInvoiceCode()+";"+codeMaps2.get(code1));
+					}
+					tailoring.setSaleInvoiceError("");
+				}
+			}
+		}
 		return "推送成功";
 	}
 
-	public Map<String,String> result(JSONArray jsonArray){
+	public String pushInvoices2(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		long startTime = System.currentTimeMillis();
+		String message="";
+		List<String> codes=getList2(listTailorings,maps.get("account").toString());//获取出库单号
+		System.out.println("成衣查看出库单号\t"+codes);
+		if(codes.size()==0){
+			return "无可推送数据!";
+		}
+		Map<String,List<String>> customers=getCustomers(codes);//key:供应商编码,value:出库单id
+		Map<String,List<SyPackingListTailoringItem>> listTailoringItemMaps=getListTailoringItemMaps(customers,listTailorings);//key:供应商编码,value:子表数据
+		Map<String,List<SyPackingListTailoring>> listTailoringMaps=getListTailoringMaps(customers,listTailorings);//key:供应商编码,value:主表数据
+		Map<String,List<SyPackingListTailoring>> codeMaps=new HashMap<>();//key:传入销售发票单id,value:主表数据
+		JSONArray jsonArrays1=new JSONArray();
+		String code=purchaseWarehousingMapper.getMaxCode("cSBVCode","SaleBillVouch where cvouchtype=27","cSBVCode");//发票号
+		String account=maps.get("account").toString();
+		for (String customer : customers.keySet()){
+			SyPackingListTailoring syPackingListTailoring=listTailoringMaps.get(customer).get(0);
+			List<SyPackingListTailoringItem> listFabricItems=listTailoringItemMaps.get(customer);
+			System.out.println("codes\t"+codes);
+			List<Map<String,Object>> invoices=getInvoices(customers.get(customer));
+			JSONObject  jsonObject1=new JSONObject();
+
+			code=org.jeecg.modules.system.util.oConvertUtils.addOne(code);
+			codeMaps.put(code,listTailoringMaps.get(customer));
+			jsonObject1.put("CVOUCHCODE",code);//发票号
+			jsonObject1.put("CMAKER","进出口平台管理员");//制单人
+			jsonObject1.put("CVERIFIER","进出口平台管理员");//审核人
+			jsonObject1.put("CACCID",account);//账套号
+			jsonObject1.put("CTYPE","普通");//发票类型
+			jsonObject1.put("CGLTYPE","销售出库单");//上游单据
+			jsonObject1.put("CDEFINE11",syPackingListTailoring.getEndCustomer());//最终客户
+
+			Map<String,Object> order=syPackingListTailoringMapper.getSoMainCode(syPackingListTailoring.getRdrecord32Code());//随便哪一个做主表信息
+			System.out.println("成衣销售order\t"+order);
+			if(order.get("cCusCode").equals("T020001")&&!account.equals("101")){
+				//maps.put("account","101");//账套号
+			}else if(order.get("cCusCode").equals("0001")&&!account.equals("102")){
+				jsonObject1.put("CTYPE","专用");//发票类型(普通,专用)
+				//maps.put("account","102");//账套号
+			}else{
+				//maps.put("account","104");//账套号
+			}
+			jsonObject1.put("DDATE",syPackingListTailoring.getLatestDateOfShipment2().substring(0,10));//日期
+			jsonObject1.put("CDEFINE4",syPackingListTailoring.getTheFinalShippingDate());//最终船期
+			jsonObject1.put("CDEFINE6",syPackingListTailoring.getTheFinalShippingDate2());//合同日期
+			jsonObject1.put("CDEFINE10",syPackingListTailoring.getShippingOrderNumber());//托书号
+			//{cBusType=普通销售, cPayCode=null, cDepCode=TSM01, cSOCode=SYE511-马菲羊-面料, cPersonCode=T0148, cCusCode=T020001, cSTCode=02, cexch_name=美元, iExchRate=6.7428}
+			System.out.println("syPackingListFabric.getSupplierCode()\t"+syPackingListTailoring.getSupplierCode());
+			if(syPackingListTailoring.getSupplierCode()!=null){
+				String	venName=syPackingListTailoringMapper.getCvenName(syPackingListTailoring.getSupplierCode());
+				jsonObject1.put("CDEFINE12",venName);//供应商全称
+			}
+			jsonObject1.put("CBUSTYPE",order.get("cBusType"));//业务类型
+			jsonObject1.put("CCUSCODE",order.get("cCusCode"));//客户编码
+			jsonObject1.put("CDEPCODE",order.get("cDepCode"));//部门编码
+			jsonObject1.put("SALETPYECODE",order.get("cSTCode"));//销售类型编码
+			jsonObject1.put("IEXCHRATE",order.get("iExchRate"));//汇率
+			jsonObject1.put("CEXCH_NAME",order.get("cexch_name"));//币种名称
+			if(!order.get("cexch_name").equals("人民币")){//不为人民币
+				SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-M-dd");
+				String dd = sf1.format(new Date());
+				String rateSplit[] = dd.split("-");
+				Map<String, Object> rate= syShippingOrderMapper.queryU8Rate(rateSplit[0], rateSplit[1]);
+				jsonObject1.put("IEXCHRATE",rate.get("nflat").toString());//汇率(如果传空,接口默认1)cPayCode
+			}
+			JSONArray jsonArrays=new JSONArray();
+			for (SyPackingListTailoringItem item : listFabricItems){
+				JSONObject  jsonObject=new JSONObject();
+				jsonObject.put("IQUANTITY",item.getTotal());//净重
+				jsonObject.put("size",item.getSize());
+				jsonObject.put("CINVCODE",item.getInventoryCode());//存货编码
+				jsonObject.put("DISAUTOIDCOL","DISAUTOIDCOL");//对应类型
+				for (Map<String,Object> map : invoices){
+					if(Double.parseDouble(map.get("iQuantity").toString())==Double.parseDouble(jsonObject.get("IQUANTITY").toString())&&
+							map.get("cInvCode").toString().equalsIgnoreCase(item.getInventoryCode())){
+						jsonObject.put("AUTOID_DIS",map.get("AutoID"));
+						getcFree(jsonObject,map);
+						break;
+					}
+				}
+				jsonObject.put("CDEFINE23",syPackingListTailoringMapper.getUnit(item.getInventoryCode()));//报关单位
+				jsonObject.put("CDEFINE31",item.getDeclarationName());//存货名称
+				String iTaxRate=syPackingListFabricItemMapper.getItaxRate(item.getOmpoIdItem());
+				if(iTaxRate!=null){
+					jsonObject.put("iTaxRate",iTaxRate);//税率
+					jsonObject1.put("iTaxRate",iTaxRate);//税率
+				}
+				jsonObject.put("CWHCODE",syPackingListFabricItemMapper.getVencode(item.getSupplier()));//获取仓库编码
+				jsonArrays.add(jsonObject);
+			}
+			jsonObject1.put("DETAILList",jsonArrays);
+			jsonArrays1.add(jsonObject1);
+			//Map<String,List<String>> maps=new HashMap<>();//key:客户编码-字符,value:主表id-数组 用于区分维度完成分组条件
+//			System.out.println("jsonObject\n"+jsonArrays.get(0));
+			long endTime = System.currentTimeMillis();
+			System.out.println("互相插入数据时用的时间:" + (endTime - startTime) + "ms");
+		}
+		text(jsonArrays1,"测试合并推送成衣销售发票");
+		//System.out.println("jsonArrays1\t"+jsonArrays1);
+		JSONArray resturnJsonArrays = InterfaceConnUtils.doPost(jsonArrays1,"saleinvoice_import");//销售发票单
+		Map<String,String> codeMaps2 = result(resturnJsonArrays,"销售发票",account);
+		for (String code1 : codeMaps.keySet()){
+			List<SyPackingListTailoring> listTailoringList=codeMaps.get(code1);
+			if(!codeMaps2.containsKey(code1)){//循环中没有就退出
+				continue;
+			}
+			for (SyPackingListTailoring tailoring : listTailoringList){
+				if (codeMaps2.get(code1).indexOf("失败")>-1){
+					tailoring.setSaleInvoiceError(codeMaps2.get(code1));
+				}else{
+					if(tailoring.getSaleInvoiceCode()==null){
+						tailoring.setSaleInvoiceCode(codeMaps2.get(code1));
+					}else{
+						tailoring.setSaleInvoiceCode(tailoring.getSaleInvoiceCode()+";"+codeMaps2.get(code1));
+					}
+						tailoring.setSaleInvoiceError("");
+				}
+			}
+		}
+		return "推送成功";
+	}
+
+	@Override
+	@DS("multi-one")
+	public String pushInvoice1(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices(listTailorings,maps);
+	}
+
+	@Override
+	@DS("multi-two")
+	public String pushInvoice2(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices(listTailorings,maps);
+	}
+
+	@Override
+	@DS("multi-three")
+	public String pushInvoice3(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices(listTailorings,maps);
+	}
+
+	@Override
+	@DS("multi-one")
+	public String pushInvoice4(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices2(listTailorings,maps);
+	}
+
+	@Override
+	@DS("multi-two")
+	public String pushInvoice5(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices2(listTailorings,maps);
+	}
+
+	@Override
+	@DS("multi-three")
+	public String pushInvoice6(List<SyPackingListTailoring> listTailorings,Map<String,Object> maps) {
+		return pushInvoices2(listTailorings,maps);
+	}
+
+	public Map<String,String> result(JSONArray jsonArray,String pushName,String account){
 		Map<String,String> codeMaps=new HashMap<>();
 		for (int i=0;i<jsonArray.size();i++){
 			JSONObject jsonObject=jsonArray.getJSONObject(i);
-			codeMaps.put(jsonObject.get("ReceiptNo").toString(),jsonObject.get("U8ReceiptNo").toString());//key:传入的单号,value:生成的单号
+			if(jsonObject.get("Result").equals("F")){//获取发货单是否成功添加
+				//throw new JeecgBootException("账套"+account+"接口"+tableName+",原因"+ jsonObject.get("Description"));
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),pushName+"接口推送失败原因:"+jsonObject.get("Description").toString());//key:传入的单号,value:失败的信息
+			}else{
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),account+pushName+"接口"+jsonObject.get("U8ReceiptNo").toString());//key:传入的单号,value:生成的单号
+			}
 		}
 		return codeMaps;//账套号-序号-生成的单号
 	}
@@ -2030,18 +2232,26 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		return syPackingListTailoringMapper.queryByList(id);
 	}
 
+
 	@Autowired
 	private SyPackingListFabricMapper syPackingListFabricMapper;
 	@Autowired
 	private SyPackingListFabricItemMapper syPackingListFabricItemMapper;
 
-	public List<Map<String,Object>> getInvoices(List<String> codes){
+	public List<Map<String,Object>> getInvoices1(List<String> codes){
 		List<Map<String,Object>> invoices=syPackingListTailoringItemMapper.getInvoice1(codes.toArray(new String[codes.size()]));
 		System.out.println("invoices.size\t"+invoices.size());
 		System.out.println("invoices\t"+invoices);
 		return invoices;
 	}
 
+	public List<Map<String,Object>> getInvoices(List<String> codes){
+		List<Map<String,Object>> invoices=syPackingListFabricItemMapper.getInvoice(codes.toArray(new String[codes.size()]));
+		System.out.println("invoices.size\t"+invoices.size());
+		System.out.println("invoices\t"+invoices);
+		return invoices;
+	}
+
 	public Map<String,List<String>> getCustomers(List<String> codes){
 		List<Map<String,Object>> customers=syPackingListFabricMapper.getCustomers(codes.toArray(new String[codes.size()]));
 		Map<String,List<String>> mapLists=new HashMap<>();
@@ -2107,13 +2317,29 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		return mapLists;
 	}
 
-	public List<String> getList(List<SyPackingListTailoring> listFabrics){
+	public List<String> getList(List<SyPackingListTailoring> listFabrics,String account){
+		List<String> ids=new ArrayList<>();//获取出库单号
+		for (SyPackingListTailoring syPackingListFabric : listFabrics){
+			if(syPackingListFabric.getRecordingCode()!=null){
+				String [] strs=syPackingListFabric.getRecordingCode().split(";");
+				for (String str : strs){
+					if(str.indexOf(account)>-1&&str.indexOf("入库单")>-1&&(syPackingListFabric.getSaleInvoiceCode()==null||syPackingListFabric.getSaleInvoiceCode().indexOf(account+"采购发票")==-1)){
+						ids.add(str.split(":")[1]);
+						syPackingListFabric.setRdrecord32Code(str.split(":")[1]);
+					}
+				}
+			}
+		}
+		return ids;
+	}
+
+	public List<String> getList2(List<SyPackingListTailoring> listFabrics,String account){
 		List<String> ids=new ArrayList<>();//获取出库单号
 		for (SyPackingListTailoring syPackingListFabric : listFabrics){
 			if(syPackingListFabric.getRecordingCode()!=null){
 				String [] strs=syPackingListFabric.getRecordingCode().split(";");
 				for (String str : strs){
-					if(str.indexOf("102账套采购入库单")>-1){
+					if(str.indexOf(account+"账套销售出库单")>-1&&(syPackingListFabric.getSaleInvoiceCode()==null||syPackingListFabric.getSaleInvoiceCode().indexOf(account+"采购发票")==-1)){
 						ids.add(str.split(":")[1]);
 						syPackingListFabric.setRdrecord32Code(str.split(":")[1]);
 					}