瀏覽代碼

面辅料推送销售发票和采购发票

huxy 10 小時之前
父節點
當前提交
bd719de8d0

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

@@ -159,7 +159,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
         }
         // 小po 分销点
         if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getSmallPo())){//小po
-            queryWrapper.likeRight("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
+            queryWrapper.like("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
         }
         if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getDistributionPoint())){//分销点
             queryWrapper.eq("b.distribution_Point",syPreAssembledPackingListVo.getDistributionPoint().trim());
@@ -914,7 +914,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
             }
             // 小po 分销点
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getSmallPo())){//小po
-                queryWrapper.likeRight("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
+                queryWrapper.like("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
             }
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getDistributionPoint())){//分销点
                 queryWrapper.like("b.distribution_Point",syPreAssembledPackingListVo.getDistributionPoint().trim());
@@ -1032,7 +1032,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
             }
             // 小po 分销点
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getSmallPo())){//小po
-                queryWrapper.likeRight("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
+                queryWrapper.like("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
             }
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getDistributionPoint())){//分销点
                 queryWrapper.like("b.distribution_Point",syPreAssembledPackingListVo.getDistributionPoint().trim());
@@ -1175,7 +1175,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
             }
             // 小po 分销点
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getSmallPo())){//小po
-                queryWrapper.likeRight("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
+                queryWrapper.like("b.small_Po",syPreAssembledPackingListVo.getSmallPo().trim());
             }
             if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getDistributionPoint())){//分销点
                 queryWrapper.like("b.distribution_Point",syPreAssembledPackingListVo.getDistributionPoint().trim());

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

@@ -566,6 +566,7 @@ public class SyPackingListFabricController implements Job {
 		 try {
 			 List<SyPackingListFabric> listFabrics=syPackingListFabricService.queryByList(id);
 			 List<SyPackingListFabric> listFabrics1=new ArrayList<>();
+			 List<SyPackingListFabric> listFabrics2=new ArrayList<>();
 			 if(listFabrics.size()==0){
 				 codeMaps.put("error","未在装箱单找到对应单据");//失败信息
 				 return "未在装箱单找到对应单据";
@@ -579,6 +580,9 @@ public class SyPackingListFabricController implements Job {
 				 if (fabric.getPushState().equals("1")||fabric.getDocumentNo().substring(0,3).equals("103")){
 					 listFabrics1.add(fabric);
 				 }
+				 if (fabric.getDocumentNo().substring(0,3).equals("102")){
+					 listFabrics2.add(fabric);
+				 }
 				 fabric.setSaleInvoiceError("");
 				 ////System.out.println("madate\t"+mapdate);
 				 if(mapdate!=null){
@@ -608,7 +612,9 @@ public class SyPackingListFabricController implements Job {
 			 fabric.setSyPackingListFabricItem(fabricItemList);*/
 			 }
 			 try {
-				 message = syPackingListFabricService.pushInvoice(listFabrics1);
+				 message = syPackingListFabricService.pushInvoice(listFabrics1);//推送103销售发票
+				 message = syPackingListFabricService.pushInvoiceTwo(listFabrics2);//推送102销售发票
+				 message = syPackingListFabricService.pushInvoiceOne(listFabrics2);//推送101采购发票
 			 }catch (Exception e){
 				 e.printStackTrace();
 			 }
@@ -627,7 +633,21 @@ public class SyPackingListFabricController implements Job {
 					 }
 				 }
 			 }
+			 for (SyPackingListFabric fabric : listFabrics2){
+				 if(fabric.getSaleInvoiceError()!=null&&fabric.getSaleInvoiceError().length()>1){
+					 fabric.setTimeStuta(3);
+					 errors.add(fabric.getSaleInvoiceError());
+				 }else{
+					 fabric.setTimeStuta(2);
+				 }
+				 if(fabric.getSaleInvoiceCode()!=null){
+					 if(!msgs.contains(fabric.getSaleInvoiceCode())){
+						 msgs.add(fabric.getSaleInvoiceCode());
+					 }
+				 }
+			 }
 			 syPackingListFabricService.updateBatchById(listFabrics1);
+			 syPackingListFabricService.updateBatchById(listFabrics2);
 			 codeMaps.put("message",msgs.stream().distinct().collect(Collectors.toList()));//推送成功消息
 			 codeMaps.put("error",errors.stream().distinct().collect(Collectors.toList()));//推送失败信息
 			 if(errors.size()==0){

+ 6 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/service/ISyPackingListFabricService.java

@@ -93,6 +93,12 @@ public interface ISyPackingListFabricService extends IService<SyPackingListFabri
 	String pushInvoice(List<SyPackingListFabric> listFabrics);
 	//String pushInvoice(List<SyPackingListFabricItem> listFabricItems,List<SyPackingListFabric> listFabrics);
 
+	//根据托书主表id,推送对应装箱单销售发票并返回推送信息
+	String pushInvoiceTwo(List<SyPackingListFabric> listFabrics);
+
+	//根据托书主表id,推送对应装箱单采购发票并返回推送信息
+	String pushInvoiceOne(List<SyPackingListFabric> listFabrics);
+
 	List<SyPackingListFabric> queryByList(String id);
 
 	public void  updateQuantitys(Map<String,SyPackingListFabricItem> mapItems,List<String> ids);

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

@@ -51,6 +51,7 @@ import org.jeecg.modules.splfi.service.ISyPackingListFabricService;
 import org.jeecg.modules.splfi.vo.SyPackingListFabricPage;
 import org.jeecg.modules.splt.entity.SyPackingListTailoring;
 import org.jeecg.modules.splt.entity.SyPackingListTailoringItem;
+import org.jeecg.modules.splt.mapper.SyPackingListTailoringItemMapper;
 import org.jeecg.modules.splt.mapper.SyPackingListTailoringMapper;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.mapper.SysUserMapper;
@@ -1203,6 +1204,9 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 	@Resource
 	private SyPackingListTailoringMapper syPackingListTailoringMapper;//成衣mapper
 
+	@Resource
+	private SyPackingListTailoringItemMapper syPackingListTailoringItemMapper;//成衣子表mapper
+
 	@Resource
 	private PurchaseWarehousingMapper purchaseWarehousingMapper;//采购入库表
 
@@ -2870,6 +2874,375 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		return "推送成功";
 	}
 
+
+	/**
+	 * 合并批量推送销售发票单
+	 * @param
+	 * @return
+	 */
+	@Override
+	@DS("multi-two")
+	public String pushInvoiceTwo(List<SyPackingListFabric> listFabrics) {
+		List<String> codes=getList2(listFabrics);//获取出库单号
+		System.out.println("面辅料查看出库单号\t"+codes);
+		if(codes.size()==0){
+			return "推送失败,未查询到对应的出库单号!";
+		}
+		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=new HashMap<>();//key:传入销售发票单id,value:主表数据
+		JSONArray jsonArrays1=new JSONArray();
+		String code=redisUtil.get("pushsno005").toString();//发票号
+
+		for (String customer : customers.keySet()){
+			SyPackingListFabric syPackingListFabric=listFabricMaps.get(customer).get(0);
+			List<SyPackingListFabricItem> listFabricItems=listFabricItemMaps.get(customer);
+			List<Map<String,Object>> invoices=getInvoices(customers.get(customer));
+			JSONObject  jsonObject1=new JSONObject();
+
+
+			String orderNumber=listFabrics.get(0).getShippingOrderNumber().substring(0,syPackingListFabric.getShippingOrderNumber().indexOf("-"));
+			Map<String,Object> order=syPackingListTailoringMapper.getSoMainCode(syPackingListFabric.getRdrecord32Code());//随便哪一个做主表信息
+			code=org.jeecg.modules.system.util.oConvertUtils.addOne(code);
+			code=orderNumber+code.substring(code.indexOf("0"));
+			redisUtil.set("pushsno005", code);//采购委外入库单
+			codeMaps.put(code,listFabricMaps.get(customer));
+			jsonObject1.put("CVOUCHCODE",code.replaceAll("DZ",orderNumber));//发票号
+			jsonObject1.put("CMAKER","进出口平台管理员");//制单人
+			jsonObject1.put("CVERIFIER","进出口平台管理员");//审核人
+			jsonObject1.put("CACCID","103");//账套号
+			jsonObject1.put("CTYPE","专用");//发票类型
+			if(order.get("cCusCode").equals("T020001")){
+				jsonObject1.put("CTYPE","普通");//发票类型
+			}
+			jsonObject1.put("CGLTYPE","销售出库单");//上游单据
+			if (syPackingListFabric.getEndCustomer()!=null){
+				jsonObject1.put("CDEFINE11",syPackingListFabric.getEndCustomer().replace("&","(-)"));//最终客户
+			}
+
+			jsonObject1.put("DDATE",syPackingListFabric.getTheFinalShippingDate().substring(0,10));//日期
+			jsonObject1.put("CDEFINE4",syPackingListFabric.getTheFinalShippingDate());//最终船期
+			jsonObject1.put("CDEFINE6",syPackingListFabric.getTheFinalShippingDate2());//合同日期
+			jsonObject1.put("CDEFINE10",syPackingListFabric.getShippingOrderNumber());//托书号
+			if(syPackingListFabric.getSupplierCode()!=null){
+				String	venName=syPackingListTailoringMapper.getCvenName(syPackingListFabric.getSupplierCode());
+				jsonObject1.put("CDEFINE12",venName);//供应商全称
+			}
+			jsonObject1.put("CBUSTYPE",order.get("cBusType"));//业务类型
+			if(order.get("cBusType").toString().indexOf("采购")>-1){
+				jsonObject1.put("CPTCODE","01");
+			}else{
+				jsonObject1.put("CPTCODE","02");
+			}
+			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="";
+				try {
+					dd = sf1.format(sf1.parse(syPackingListFabric.getTheFinalShippingDate()));
+				}catch (Exception e){
+					throw new JeecgBootException("最终船期转换异常");
+				}
+				String rateSplit[] = dd.split("-");
+				Map<String, Object> rate= syShippingOrderMapper.queryU8Rate(rateSplit[0], rateSplit[1]);
+				if (rate==null||rate.size()==0){
+					throw new JeecgBootException("该船期查询不到汇率,请检查日期是否填错");
+				}
+				jsonObject1.put("IEXCHRATE",rate.get("nflat").toString());//汇率(如果传空,接口默认1)cPayCode
+			}
+			JSONArray jsonArrays=new JSONArray();
+			List<Object> autoIds=new ArrayList<>();
+			for (SyPackingListFabricItem item : listFabricItems){
+				JSONObject  jsonObject=new JSONObject();
+				if(item.getMasterMetering().equalsIgnoreCase("KG")){
+					jsonObject.put("IQUANTITY",item.getNetWeight());//净重
+				}else{
+					jsonObject.put("IQUANTITY",item.getActualDeclaredQuantity());//实际报关数量
+				}
+				jsonObject.put("CINVCODE",item.getInventoryCode());//存货编码
+
+				String istc2=item.getIsTc();
+				if (istc2!=null&&istc2.equals("1")){
+					if(item.getRemarks2()!=null){
+						item.setRemarks2(item.getRemarks2()+"TC证书");
+					}else{
+						item.setRemarks2("TC证书");
+					}
+				}
+				jsonObject.put("CBATCH",item.getDyelotNumber());//批号-缸号
+				jsonObject.put("CBMEMO",item.getRemarks2());//子表备注
+				jsonObject.put("DISAUTOIDCOL","AUTOID");//对应类型
+				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())&&!autoIds.contains(map.get("AutoID"))){
+						autoIds.add(map.get("AutoID"));
+						jsonObject.put("AUTOID_DIS",map.get("AutoID"));
+						////System.out.println("map\t"+map);
+						getcFree(jsonObject,map);
+						//invoices.remove(map);
+						bool=false;
+						break;
+					}
+				}
+				if(item.getMasterMetering()!=null&&item.getMasterMetering().equals("KG")){
+					jsonObject.put("CDEFINE23","千克");//报关单位
+				}else if(item.getMasterMetering()!=null&&item.getMasterMetering().equals("M")){
+					jsonObject.put("CDEFINE23","米");//报关单位
+				}else{
+					jsonObject.put("CDEFINE23",item.getDeclarationUnit());//报关单位
+				}
+				jsonObject.put("CDEFINE31",item.getDeclarationName());//存货名称
+				String iTaxRate=syPackingListFabricItemMapper.getItaxRate(item.getOmpoIdItem());
+				jsonObject1.put("iTaxRate","13.0000000000");//税率
+				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-数组 用于区分维度完成分组条件
+		}
+
+		text(jsonArrays1,"测试合并推送面辅料销售发票");
+//		System.out.println("102销售发票\t"+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);
+			if(!codeMaps2.containsKey(code1)){//循环中没有就退出
+				continue;
+			}
+			for (SyPackingListFabric fabric : listFabricList){
+				if (codeMaps2.get(code1).indexOf("失败")>-1){
+					fabric.setSaleInvoiceError(codeMaps2.get(code1));
+				}else{
+					fabric.setSaleInvoiceCode(codeMaps2.get(code1));
+					fabric.setRecordingError(null);
+				}
+			}
+		}
+		return "推送成功";
+	}
+
+
+	/**
+	 * 合并批量推送采购发票单
+	 * @param
+	 * @return
+	 */
+	@Override
+	@DS("multi-one")
+	public String pushInvoiceOne(List<SyPackingListFabric> listFabrics) {
+		//删除入库单号记录
+		String account="101";
+		List<String> codes=getList3(listFabrics);//获取入库单号
+		System.out.println("面辅料查看入库单号  "+codes);
+		if(codes.size()==0){
+			return "无可推送数据!";
+		}
+		Map<String,List<String>> customers=getSuppliers(listFabrics);//key:供应商编码,value:入库单单据号
+		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=new HashMap<>();//key:传入销售发票单id,value:主表数据
+		JSONArray jsonArrays1=new JSONArray();
+		String code=redisUtil.get("pushsno002").toString();//发-票号
+		for (String customer : customers.keySet()){
+			SyPackingListFabric syPackingListFabric=listFabricMaps.get(customer).get(0);//面辅料主表
+			Map<String, Object> orderData=syPackingListTailoringMapper.getOmOrPo("po_pomain",
+					"cpoid=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListFabric.getRdrecord32Code()+"')","poid");
+			if (orderData.size()==0){
+				getError(syPackingListFabric,account+"查询不到对应的采购订单");
+				throw new JeecgBootException(account+"查询不到对应的采购订单");
+			}
+			String orderNumber=listFabrics.get(0).getShippingOrderNumber().substring(0,syPackingListFabric.getShippingOrderNumber().indexOf("-"));
+			List<SyPackingListFabricItem> listTailoringItems=listFabricItemMaps.get(customer);
+			List<Map<String,Object>> invoices=getInvoices1(customers.get(customer));
+			JSONObject  jsonObject1=new JSONObject();
+			code=org.jeecg.modules.system.util.oConvertUtils.addOne(code);
+			code=orderNumber+code.substring(code.indexOf("0"));
+			redisUtil.set("pushsno002", code);//采购委外发-票单
+			codeMaps.put(code,listFabricMaps.get(customer));
+			jsonObject1.put("CVOUCHCODE",code);//发-票号 CBUSTYPE
+			jsonObject1.put("CMAKER","进出口平台管理员");//制单人
+			jsonObject1.put("CHANDLER","进出口平台管理员");//审核人
+			jsonObject1.put("CACCID",account);//账套号
+			jsonObject1.put("CTYPE","专用");//发-票类型
+
+			jsonObject1.put("CGLTYPE","入库单");//上游单据
+			jsonObject1.put("DDATE",syPackingListFabric.getTheFinalShippingDate().substring(0,10));//装运期限
+			jsonObject1.put("CDEFINE4",syPackingListFabric.getTheFinalShippingDate().substring(0,10));//最终船期
+			jsonObject1.put("CDEFINE6",syPackingListFabric.getTheFinalShippingDate2().substring(0,10));//合同日期
+			jsonObject1.put("CDEFINE10",syPackingListFabric.getShippingOrderNumber());//托书号
+			String venName=syPackingListTailoringMapper.getCvenName3(syPackingListFabric.getRdrecord32Code());
+			if (venName==null){
+				venName=syPackingListTailoringMapper.getCvenName4(syPackingListFabric.getRdrecord32Code());
+			}
+			jsonObject1.put("CDEFINE12",venName);//供应商全称
+			if (orderData.containsKey("cPayCode")){
+				jsonObject1.put("CPAYCODE",orderData.get("cPayCode"));//付款条件编码
+			}
+			if (orderData.containsKey("cBusType")){
+				jsonObject1.put("CBUSTYPE",orderData.get("cBusType"));//业务类型
+				if(orderData.get("cBusType").toString().indexOf("采购")>-1){
+					jsonObject1.put("CPTCODE","01");
+				}else{
+					jsonObject1.put("CPTCODE","02");
+				}
+			}
+			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");
+				String dd="";
+				try {
+					dd = sf1.format(sf1.parse(syPackingListFabric.getTheFinalShippingDate()));
+				}catch (Exception e){
+					getError(syPackingListFabric,account+"最终船期转换异常");
+					throw new JeecgBootException(account+"最终船期转换异常");
+				}
+				String rateSplit[] = dd.split("-");
+				Map<String, Object> rate= syShippingOrderMapper.queryU8Rate(rateSplit[0], rateSplit[1]);
+				if (rate==null||rate.size()==0){
+					getError(syPackingListFabric,account+"该船期查询不到汇率,请检查日期是否填错");
+					throw new JeecgBootException(account+"该船期查询不到汇率,请检查日期是否填错");
+				}
+				jsonObject1.put("IEXCHRATE",rate.get("nflat").toString());//汇率(如果传空,接口默认1)cPayCode
+			}
+			JSONArray jsonArrays=new JSONArray();
+			List<Object> autoIds=new ArrayList<>();
+			BigDecimal dzMoney=new BigDecimal("0");//单证金额合计
+			BigDecimal u8Money=new BigDecimal("0");//u8金额合计
+			for (SyPackingListFabricItem item : listTailoringItems){
+				JSONObject  jsonObject=new JSONObject();
+				BigDecimal iquantity=new BigDecimal("0");
+				if(item.getMasterMetering().equalsIgnoreCase("KG")){
+					jsonObject.put("IQUANTITY",item.getNetWeight());//净重
+					iquantity=item.getNetWeight();
+				}else{
+					jsonObject.put("IQUANTITY",item.getActualDeclaredQuantity());//实际报关数量
+					iquantity=item.getActualDeclaredQuantity();
+				}
+				jsonObject.put("size",item.getSize());//尺码
+				jsonObject.put("CINVCODE",item.getInventoryCode());//存货编码
+				jsonObject.put("POAUTOIDCOL","Autoid");//对应类型
+				String istc2=item.getIsTc();
+				if (istc2!=null&&istc2.equals("1")){
+					item.setMemo("TC证书");
+				}
+				jsonObject.put("CBMEMO",item.getMemo());//备注
+				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())*/
+							&&!autoIds.contains(map.get("AutoID"))){
+						autoIds.add(map.get("AutoID"));
+						jsonObject.put("AUTOID_PO",map.get("AutoID"));
+						jsonObject.put("IORITAXCOST",item.getPrice());//改成使用报关单价
+						BigDecimal u8Price=new BigDecimal(jsonObject.get("IORITAXCOST").toString());
+						dzMoney=dzMoney.add(iquantity.multiply(u8Price).setScale(2,RoundingMode.HALF_UP));//单证合计
+						u8Money=u8Money.add(u8Price.multiply(iquantity).setScale(2, RoundingMode.HALF_UP));//单证合计
+						jsonObject.put("IORIMONEY",iquantity.multiply(u8Price).setScale(2, RoundingMode.HALF_UP));//改成使用报关单价*成衣参考单价
+						getcFree(jsonObject,map);
+						jsonObject.put("CDEFINE28",item.getSmallPo());//小po
+						break;
+					}
+				}
+				jsonObject.put("CDEFINE23",item.getDeclarationUnit());//报关单位
+				jsonObject.put("CDEFINE33",item.getDeclarationName());//存货名称
+				jsonArrays.add(jsonObject);
+			}
+			dzMoney=dzMoney.setScale(2, RoundingMode.HALF_UP);
+			if(dzMoney.compareTo(u8Money)!=0){
+				BigDecimal dividePrice =dzMoney.subtract(u8Money);
+				BigDecimal ioriMoney=new BigDecimal(jsonArrays.getJSONObject(jsonArrays.size()-1).get("IORIMONEY").toString());
+				jsonArrays.getJSONObject(jsonArrays.size()-1).put("IORIMONEY",ioriMoney.add(dividePrice));
+			}
+//			jsonObject.put("IORIMONEY",item.getUnitPrice());//金额
+			jsonObject1.put("DETAILList",jsonArrays);
+			jsonArrays1.add(jsonObject1);
+		}
+		text(jsonArrays1,"测试合并推送面辅料采购发票");
+		JSONArray resturnJsonArrays = InterfaceConnUtils.doPost(jsonArrays1,"purinvoice_import");//采购发-票单
+		Map<String,String> codeMaps2 = result(resturnJsonArrays,"采购发票",account);
+		for (String code1 : codeMaps.keySet()){
+			List<SyPackingListFabric> listFabricList=codeMaps.get(code1);
+			for (SyPackingListFabric fabric : listFabricList){
+				fabric.setRdrecord32Code(null);
+				if (codeMaps2.get(code1).indexOf("失败")>-1){
+					if(fabric.getSaleInvoiceError()==null){
+						fabric.setSaleInvoiceError(codeMaps2.get(code1));
+					}else{
+						fabric.setSaleInvoiceError(fabric.getSaleInvoiceError()+";"+codeMaps2.get(code1));
+					}
+				}else{
+					if(fabric.getSaleInvoiceCode()==null){
+						fabric.setSaleInvoiceCode(codeMaps2.get(code1));
+					}else{
+						fabric.setSaleInvoiceCode(fabric.getSaleInvoiceCode()+";"+codeMaps2.get(code1));
+					}
+				}
+			}
+		}
+		return "推送成功";
+	}
+
+	/**
+	 * 采购发票
+	 * @param listTailorings
+	 * @return
+	 */
+	public Map<String,List<String>> getSuppliers(List<SyPackingListFabric> listTailorings){
+		Map<String,List<String>> mapLists=new HashMap<>();
+		for (SyPackingListFabric tailoring : listTailorings){
+			if(tailoring.getRdrecord32Code()==null){
+				continue;
+			}
+			if(mapLists.containsKey(tailoring.getSupplierCode())){
+				mapLists.get(tailoring.getSupplierCode()).add(tailoring.getRdrecord32Code());
+			}else{
+				List<String> list=new ArrayList<>();
+				list.add(tailoring.getRdrecord32Code());
+				mapLists.put(tailoring.getSupplierCode(),list);
+			}
+		}
+		return mapLists;
+	}
+
+	// 101入库单记录
+	public List<Map<String,Object>> getInvoices1(List<String> codes){
+		List<Map<String,Object>> invoices=syPackingListTailoringItemMapper.getInvoice1(codes.toArray(new String[codes.size()]));
+		return invoices;
+	}
+
+	//获取报错原因
+	public void getError(SyPackingListFabric syPackingListFabric,String error){
+		if (syPackingListFabric.getSaleInvoiceError()==null){
+			syPackingListFabric.setSaleInvoiceError(error);
+		}else{
+			syPackingListFabric.setSaleInvoiceError(syPackingListFabric.getSaleInvoiceError()+";"+error);
+		}
+	}
+
+	//回写报错
+	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);
+			if(jsonObject.get("Result").equals("F")){//获取发货单是否成功添加
+				//throw new JeecgBootException("账套"+account+"接口"+tableName+",原因"+ jsonObject.get("Description"));
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),account+"账套"+pushName+"接口推送失败原因:"+jsonObject.get("Description").toString());//key:传入的单号,value:失败的信息
+			}else{
+				codeMaps.put(jsonObject.get("ReceiptNo").toString(),account+pushName+"单号"+jsonObject.get("U8ReceiptNo").toString());//key:传入的单号,value:生成的单号
+			}
+		}
+		return codeMaps;//账套号-序号-生成的单号
+	}
+
 	public Map<String,String> result(JSONArray jsonArray){
 		Map<String,String> codeMaps=new HashMap<>();
 		for (int i=0;i<jsonArray.size();i++){
@@ -2965,6 +3338,29 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		return ids;
 	}
 
+	public List<String> getList2(List<SyPackingListFabric> listFabrics){
+		List<String> ids=new ArrayList<>();//获取出库单号
+		for (SyPackingListFabric syPackingListFabric : listFabrics){
+			if(syPackingListFabric.getDocumentNo().substring(0,3).equals("102")){
+				ids.add(syPackingListFabric.getDocumentNo().substring(3));
+				syPackingListFabric.setRdrecord32Code(syPackingListFabric.getDocumentNo().substring(3));
+			}
+		}
+		return ids;
+	}
+
+	public List<String> getList3(List<SyPackingListFabric> listFabrics){
+		List<String> ids=new ArrayList<>();//获取出库单号
+		for (SyPackingListFabric syPackingListFabric : listFabrics){
+			if(syPackingListFabric.getDocumentNo().substring(0,3).equals("102")){
+				ids.add(syPackingListFabric.getDocumentNo().substring(3));
+				String rdrecord01Code=syPackingListTailoringItemMapper.getRdrecord01Code(syPackingListFabric.getDocumentNo().substring(3));
+				syPackingListFabric.setRdrecord32Code(rdrecord01Code);
+			}
+		}
+		return ids;
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public RespUpdateVO saveSrmBill(SyPackingListFabric syPackingListFabric){

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

@@ -95,19 +95,6 @@ public class PushJob implements Job {
        // //System.out.println("codeMaps\n"+codeMaps);
     }
 
-  /*  public static void main(String[] args) {
-        //ReceiptNo U8ReceiptNo
-        JSONArray jsonArrays=new JSONArray();
-        for (int i=1;i<=5;i++){
-            JSONObject jsonObject=new JSONObject();
-            jsonObject.put("ReceiptNo","test10001"+i);
-            jsonObject.put("U8ReceiptNo","test10002"+i);
-            jsonArrays.add(jsonObject);
-        }
-        Map<String,String> codeMaps=result(jsonArrays);
-        //System.out.println("codeMaps\t"+codeMaps);
-    }*/
-
     public static Map<String,String> result(JSONArray jsonArray){
         Map<String,String> codeMaps=new HashMap<>();
         for (int i=0;i<jsonArray.size();i++){
@@ -118,29 +105,4 @@ public class PushJob implements Job {
     }
 
 
-//    public static void main(String[] args) throws IOException {
-//        try {
-//            String code="dz000001";
-//            int max=Integer.parseInt(code);
-//        }catch (Exception e){
-//            String exceptionStr = getExceptionStr(e);
-//            //System.out.println("exceptionStr\t"+exceptionStr);
-//        }
-//    }
-//
-//    public static String getExceptionStr(Exception e) throws IOException {
-//        //读取异常栈信息
-//        ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
-//        e.printStackTrace(new PrintStream(arrayOutputStream));
-//        //通过ByteArray转换输入输出流
-//        BufferedReader fr=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(arrayOutputStream.toByteArray())));
-//        String str;
-//        StringBuilder exceptionStr=new StringBuilder();
-//        while ((str=fr.readLine())!=null){
-//            exceptionStr.append(str);
-//        }
-//        //关闭流
-//        fr.close();
-//        return exceptionStr.toString();
-//    }
 }

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splt/mapper/SyPackingListTailoringItemMapper.java

@@ -56,4 +56,6 @@ public interface SyPackingListTailoringItemMapper extends BaseMapper<SyPackingLi
 	 * @return
 	 */
 	List<SyPackingListTailoringItem> getSrmPushExtraList(@Param("prePackingIdList")List<String> prePackingIdList);
+
+	String getRdrecord01Code(String substring);
 }

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

@@ -420,4 +420,11 @@
 		</foreach>
 	</select>
 
+
+	<select id="getRdrecord01Code"  parameterType="String" resultType="String">
+        SELECT A.cvoucherno FROM UFDATA_103_2021.dbo.HY_DZ_K7_SYNERGISMLOGDT  A
+        LEFT JOIN UFDATA_103_2021.dbo.HY_DZ_K7_SYNERGISMLOGDT B ON A.id=B.id AND A.ilineno=B.ilineno+1
+        WHERE B.cvoucherno=#{value } AND B.accid='0000000002'
+    </select>
+
 </mapper>