|  | @@ -672,94 +672,92 @@ public class SyShippingOrderServiceImpl extends ServiceImpl<SyShippingOrderMappe
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          int ii = 0;
 | 
	
		
			
				|  |  | -        //记录运费总金额
 | 
	
		
			
				|  |  | -        Double sumMoney = 0.00;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        Boolean boo = false;
 | 
	
		
			
				|  |  | -        //记录除以毛重的总金额
 | 
	
		
			
				|  |  | -        BigDecimal sumImoney = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            if(rmbList.size()!=0){
 | 
	
		
			
				|  |  | -                for (Map<String, Object> rmb : rmbList) {
 | 
	
		
			
				|  |  | -                    sumMoney = sumMoney+Double.parseDouble(rmb.get("amount").toString());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(usdList.size()!=0){
 | 
	
		
			
				|  |  | -                for (Map<String, Object> usd : usdList) {
 | 
	
		
			
				|  |  | -                    sumMoney = sumMoney+Double.parseDouble(usd.get("amount").toString());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //业务场景
 | 
	
		
			
				|  |  | -        //一张托书有五个销售订单号,美元代币有三个,人民币代币有三个,此时需要生成30张销售费用支出单,每一个销售订单需要生成6个费用支出单,所以(5*6=30)
 | 
	
		
			
				|  |  | -        for(Map<String,Object> li: itemList){
 | 
	
		
			
				|  |  | +        //一张托书有五个销售订单号,美元代币有三个,人民币代币有三个,此时需要生成30张销售费用支出单,每一个销售订单需要生成6个费用支出单
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if(rmbList.size()!=0) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //人民币信息
 | 
	
		
			
				|  |  |                  for (Map<String, Object> rmb : rmbList) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    String redisId = redisUtil.get("salerID").toString();
 | 
	
		
			
				|  |  | -                    int addId = Integer.parseInt(redisId)+1;
 | 
	
		
			
				|  |  | -                    String id = String.valueOf(addId);
 | 
	
		
			
				|  |  | -                    redisUtil.set("salerID",id);
 | 
	
		
			
				|  |  | -                    ii++;
 | 
	
		
			
				|  |  | -                    Map<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | -                    Map<String, Object> mapPo;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    String orderId = li.get("orderId").toString();
 | 
	
		
			
				|  |  | -                    if(orderId.indexOf("-") > 0){
 | 
	
		
			
				|  |  | -                        String idsplit[] = orderId.split("-");
 | 
	
		
			
				|  |  | -                        orderId = idsplit[0];
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    //记录除以毛重的总金额
 | 
	
		
			
				|  |  | +                    BigDecimal sumImoney = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    mapPo = syShippingOrderMapper.querySOMain(orderId.substring(3, orderId.length()));//li.get("orderId").toString()
 | 
	
		
			
				|  |  | +                    for(Map<String,Object> li: itemList){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    if (ii > 1) {
 | 
	
		
			
				|  |  | -                        cCode = org.jeecg.modules.system.util.oConvertUtils.addOne(cCode);
 | 
	
		
			
				|  |  | -                        //id = org.jeecg.modules.system.util.oConvertUtils.addOne(id);
 | 
	
		
			
				|  |  | -                        map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | -                        map.put("ID", id);//ID
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | -                        map.put("ID", id);//ID
 | 
	
		
			
				|  |  | +                        String redisId = redisUtil.get("salerID").toString();
 | 
	
		
			
				|  |  | +                        int addId = Integer.parseInt(redisId)+1;
 | 
	
		
			
				|  |  | +                        String id = String.valueOf(addId);
 | 
	
		
			
				|  |  | +                        redisUtil.set("salerID",id);
 | 
	
		
			
				|  |  | +                        ii++;
 | 
	
		
			
				|  |  | +                        Map<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | +                        Map<String, Object> mapPo;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        String orderId = li.get("orderId").toString();
 | 
	
		
			
				|  |  | +                        if(orderId.indexOf("-") > 0){
 | 
	
		
			
				|  |  | +                            String idsplit[] = orderId.split("-");
 | 
	
		
			
				|  |  | +                            orderId = idsplit[0];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        mapPo = syShippingOrderMapper.querySOMain(orderId.substring(3, orderId.length()));//li.get("orderId").toString()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if (ii > 1) {
 | 
	
		
			
				|  |  | +                            cCode = org.jeecg.modules.system.util.oConvertUtils.addOne(cCode);
 | 
	
		
			
				|  |  | +                            //id = org.jeecg.modules.system.util.oConvertUtils.addOne(id);
 | 
	
		
			
				|  |  | +                            map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | +                            map.put("ID", id);//ID
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | +                            map.put("ID", id);//ID
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        map.put("dDate", sf.format(new Date()));//日期
 | 
	
		
			
				|  |  | +                        map.put("cPersonCode", mapPo.get("cPersonCode"));//业务员
 | 
	
		
			
				|  |  | +                        map.put("cDepCode", mapPo.get("cDepCode"));//部门
 | 
	
		
			
				|  |  | +                        map.put("cCusCode", mapPo.get("cCusCode"));//客户简称
 | 
	
		
			
				|  |  | +                        map.put("cDefine10", map1.get("shippingOrderNumber"));//外销发票号
 | 
	
		
			
				|  |  | +                        map.put("cMaker", "进出口平台管理员");//制单人
 | 
	
		
			
				|  |  | +                        map.put("iSourceId", mapPo.get("ID"));//来源ID、
 | 
	
		
			
				|  |  | +                        map.put("cSourceCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | +                        map.put("cSOCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | +                        map.put("cnextsystem", "其他应付单");//单据流向
 | 
	
		
			
				|  |  | +                        map.put("iexchrate", "1");//汇率
 | 
	
		
			
				|  |  | +                        map.put("Cexch_Name", "人民币");
 | 
	
		
			
				|  |  | +                        map.put("iVTid", "57");
 | 
	
		
			
				|  |  | +                        map.put("cvencode", rmb.get("freightForwarder"));
 | 
	
		
			
				|  |  | +                        map.put("cSysBarCode", "||SA09|"+cCode);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        //添加子表信息
 | 
	
		
			
				|  |  | +                        Map<String, Object> maps = new HashMap<>();
 | 
	
		
			
				|  |  | +                        maps.put("cSPVCode", cCode);//销售支出单号
 | 
	
		
			
				|  |  | +                         //金额 = 以销售订单号为维度计算对应销售订单号下的毛重合计数/总毛重“费用支出金额
 | 
	
		
			
				|  |  | +                         Double money = Double.parseDouble(li.get("grossWeight").toString()) / Double.parseDouble(map1.get("totalGrossWeight").toString());
 | 
	
		
			
				|  |  | +                        Double  imoney = money * Double.parseDouble(rmb.get("amount").toString());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        maps.put("iMoney", df.format(imoney));
 | 
	
		
			
				|  |  | +                        maps.put("INatMoney", df.format(imoney));
 | 
	
		
			
				|  |  | +                        maps.put("cExpCode", rmb.get("itemColumn"));//项目编码
 | 
	
		
			
				|  |  | +                        maps.put("ID", id);
 | 
	
		
			
				|  |  | +                        maps.put("irowno", "1");//行号
 | 
	
		
			
				|  |  | +                        maps.put("cbSysBarCode", "||SA09|"+cCode+"|"+ii);
 | 
	
		
			
				|  |  | +                        if(imoney >= 0.01){
 | 
	
		
			
				|  |  | +                            sumImoney = sumImoney.add(new BigDecimal(df.format(imoney)));
 | 
	
		
			
				|  |  | +                            listmap.add(map);
 | 
	
		
			
				|  |  | +                            listmaps.add(maps);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    map.put("dDate", sf.format(new Date()));//日期
 | 
	
		
			
				|  |  | -                    map.put("cPersonCode", mapPo.get("cPersonCode"));//业务员
 | 
	
		
			
				|  |  | -                    map.put("cDepCode", mapPo.get("cDepCode"));//部门
 | 
	
		
			
				|  |  | -                    map.put("cCusCode", mapPo.get("cCusCode"));//客户简称
 | 
	
		
			
				|  |  | -                    map.put("cDefine10", map1.get("shippingOrderNumber"));//外销发票号
 | 
	
		
			
				|  |  | -                    map.put("cMaker", "进出口平台管理员");//制单人
 | 
	
		
			
				|  |  | -                    map.put("iSourceId", mapPo.get("ID"));//来源ID、
 | 
	
		
			
				|  |  | -                    map.put("cSourceCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | -                    map.put("cSOCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | -                    map.put("cnextsystem", "其他应付单");//单据流向
 | 
	
		
			
				|  |  | -                    map.put("iexchrate", "1");//汇率
 | 
	
		
			
				|  |  | -                    map.put("Cexch_Name", "人民币");
 | 
	
		
			
				|  |  | -                    map.put("iVTid", "57");
 | 
	
		
			
				|  |  | -                    map.put("cvencode", rmb.get("freightForwarder"));
 | 
	
		
			
				|  |  | -                    map.put("cSysBarCode", "||SA09|"+cCode);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    //添加子表信息
 | 
	
		
			
				|  |  | -                    Map<String, Object> maps = new HashMap<>();
 | 
	
		
			
				|  |  | -                    maps.put("cSPVCode", cCode);//销售支出单号
 | 
	
		
			
				|  |  | -                     //金额 = 以销售订单号为维度计算对应销售订单号下的毛重合计数/总毛重“费用支出金额
 | 
	
		
			
				|  |  | -                     Double money = Double.parseDouble(li.get("grossWeight").toString()) / Double.parseDouble(map1.get("totalGrossWeight").toString());
 | 
	
		
			
				|  |  | -                    Double  imoney = money * Double.parseDouble(rmb.get("amount").toString());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    maps.put("iMoney", df.format(imoney));
 | 
	
		
			
				|  |  | -                    maps.put("INatMoney", df.format(imoney));
 | 
	
		
			
				|  |  | -                    maps.put("cExpCode", rmb.get("itemColumn"));//项目编码
 | 
	
		
			
				|  |  | -                    maps.put("ID", id);
 | 
	
		
			
				|  |  | -                    maps.put("irowno", "1");//行号
 | 
	
		
			
				|  |  | -                    maps.put("cbSysBarCode", "||SA09|"+cCode+"|"+ii);
 | 
	
		
			
				|  |  | -                    if(imoney >= 0.01){
 | 
	
		
			
				|  |  | -                        sumImoney = sumImoney.add(new BigDecimal(df.format(imoney)));
 | 
	
		
			
				|  |  | -                        listmap.add(map);
 | 
	
		
			
				|  |  | -                        listmaps.add(maps);
 | 
	
		
			
				|  |  | +                    BigDecimal sumMoney = new BigDecimal(rmb.get("amount").toString());
 | 
	
		
			
				|  |  | +                    if(sumMoney.compareTo(sumImoney) > 0){
 | 
	
		
			
				|  |  | +                        BigDecimal mo = sumMoney.subtract(sumImoney).setScale(2,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("iMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("iMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("INatMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("INatMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        BigDecimal mo = sumImoney.subtract(sumMoney).setScale(2,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("iMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("iMoney").toString()).subtract(mo)));
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("INatMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("INatMoney").toString()).subtract(mo)));
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -769,82 +767,83 @@ public class SyShippingOrderServiceImpl extends ServiceImpl<SyShippingOrderMappe
 | 
	
		
			
				|  |  |                  int index = 0;
 | 
	
		
			
				|  |  |                  //美元信息
 | 
	
		
			
				|  |  |                  for (Map<String, Object> usd : usdList) {
 | 
	
		
			
				|  |  | -                    String redisId = redisUtil.get("salerID").toString();
 | 
	
		
			
				|  |  | -                    int addId = Integer.parseInt(redisId)+1;
 | 
	
		
			
				|  |  | -                    String id = String.valueOf(addId);
 | 
	
		
			
				|  |  | -                    redisUtil.set("salerID",id);
 | 
	
		
			
				|  |  | -                    ii++;
 | 
	
		
			
				|  |  | -                    Map<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | -                    Map<String, Object> mapPo;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    String orderId = li.get("orderId").toString();
 | 
	
		
			
				|  |  | -                    if(orderId.indexOf("-") > 0){
 | 
	
		
			
				|  |  | -                        String idsplit[] = orderId.split("-");
 | 
	
		
			
				|  |  | -                        orderId = idsplit[0];
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    mapPo = syShippingOrderMapper.querySOMain(orderId.substring(3, orderId.length()));//li.get("orderId").toString()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    if (ii > 1) {
 | 
	
		
			
				|  |  | -                        cCode = org.jeecg.modules.system.util.oConvertUtils.addOne(cCode);
 | 
	
		
			
				|  |  | -                        //id = org.jeecg.modules.system.util.oConvertUtils.addOne(id);
 | 
	
		
			
				|  |  | -                        map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | -                        map.put("ID", id);//ID
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | -                        map.put("ID", id);//ID
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    //记录除以毛重的总金额
 | 
	
		
			
				|  |  | +                    BigDecimal sumImoney = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    for(Map<String,Object> li: itemList){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        String redisId = redisUtil.get("salerID").toString();
 | 
	
		
			
				|  |  | +                        int addId = Integer.parseInt(redisId)+1;
 | 
	
		
			
				|  |  | +                        String id = String.valueOf(addId);
 | 
	
		
			
				|  |  | +                        redisUtil.set("salerID",id);
 | 
	
		
			
				|  |  | +                        ii++;
 | 
	
		
			
				|  |  | +                        Map<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | +                        Map<String, Object> mapPo;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        String orderId = li.get("orderId").toString();
 | 
	
		
			
				|  |  | +                        if(orderId.indexOf("-") > 0){
 | 
	
		
			
				|  |  | +                            String idsplit[] = orderId.split("-");
 | 
	
		
			
				|  |  | +                            orderId = idsplit[0];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        mapPo = syShippingOrderMapper.querySOMain(orderId.substring(3, orderId.length()));//li.get("orderId").toString()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if (ii > 1) {
 | 
	
		
			
				|  |  | +                            cCode = org.jeecg.modules.system.util.oConvertUtils.addOne(cCode);
 | 
	
		
			
				|  |  | +                            //id = org.jeecg.modules.system.util.oConvertUtils.addOne(id);
 | 
	
		
			
				|  |  | +                            map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | +                            map.put("ID", id);//ID
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            map.put("cSPVCode", cCode);//单据号
 | 
	
		
			
				|  |  | +                            map.put("ID", id);//ID
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    map.put("dDate", sf.format(new Date()));//日期
 | 
	
		
			
				|  |  | -                    map.put("cPersonCode", mapPo.get("cPersonCode"));//业务员
 | 
	
		
			
				|  |  | -                    map.put("cDepCode", mapPo.get("cDepCode"));//部门
 | 
	
		
			
				|  |  | -                    map.put("cCusCode", mapPo.get("cCusCode"));//客户简称
 | 
	
		
			
				|  |  | -                    map.put("cDefine10", map1.get("shippingOrderNumber"));//外销发票号
 | 
	
		
			
				|  |  | -                    map.put("cMaker", "进出口平台管理员");//制单人
 | 
	
		
			
				|  |  | -                    map.put("iSourceId", mapPo.get("ID"));//来源ID、
 | 
	
		
			
				|  |  | -                    map.put("cSourceCode", li.get("orderNumber"));//订单号li.get("orderNumber")
 | 
	
		
			
				|  |  | -                    map.put("cSOCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | -                    map.put("cnextsystem", "其他应付单");//单据流向
 | 
	
		
			
				|  |  | -                    map.put("iexchrate", nflat);//汇率
 | 
	
		
			
				|  |  | -                    map.put("Cexch_Name", "美元");
 | 
	
		
			
				|  |  | -                    map.put("iVTid", "57");//单据模板号
 | 
	
		
			
				|  |  | -                    map.put("cvencode", usd.get("freightForwarder"));
 | 
	
		
			
				|  |  | -                    map.put("cSysBarCode", "||SA09|"+cCode);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    //添加子表信息
 | 
	
		
			
				|  |  | -                    Map<String, Object> maps = new HashMap<>();
 | 
	
		
			
				|  |  | -                    maps.put("cSPVCode", cCode);//销售支出单号
 | 
	
		
			
				|  |  | -                    Double money = Double.parseDouble(li.get("grossWeight").toString()) / Double.parseDouble(map1.get("totalGrossWeight").toString());
 | 
	
		
			
				|  |  | -                    Double  imoney = money * Double.parseDouble(usd.get("amount").toString());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    maps.put("cbSysBarCode", "||SA09|"+cCode+"|"+ii);
 | 
	
		
			
				|  |  | -                    Double usdMoney = Double.parseDouble(df.format(imoney))*Double.parseDouble(nflat);
 | 
	
		
			
				|  |  | -                    maps.put("INatMoney", df.format(usdMoney));
 | 
	
		
			
				|  |  | -//                    System.out.println("调整前:"+df.format(imoney*Double.parseDouble(nflat)));
 | 
	
		
			
				|  |  | -//                    System.out.println("调整后:"+df.format(usdMoney));
 | 
	
		
			
				|  |  | -                    maps.put("iMoney", df.format(imoney));
 | 
	
		
			
				|  |  | -                    maps.put("cExpCode",usd.get("itemColumn"));//项目编码
 | 
	
		
			
				|  |  | -                    maps.put("ID", id);
 | 
	
		
			
				|  |  | -                    maps.put("irowno", "1");//行号
 | 
	
		
			
				|  |  | -                    if(imoney >= 0.01){
 | 
	
		
			
				|  |  | -                        sumImoney = sumImoney.add(new BigDecimal(df.format(imoney)));
 | 
	
		
			
				|  |  | -                        listmap.add(map);
 | 
	
		
			
				|  |  | -                        listmaps.add(maps);
 | 
	
		
			
				|  |  | +                        map.put("dDate", sf.format(new Date()));//日期
 | 
	
		
			
				|  |  | +                        map.put("cPersonCode", mapPo.get("cPersonCode"));//业务员
 | 
	
		
			
				|  |  | +                        map.put("cDepCode", mapPo.get("cDepCode"));//部门
 | 
	
		
			
				|  |  | +                        map.put("cCusCode", mapPo.get("cCusCode"));//客户简称
 | 
	
		
			
				|  |  | +                        map.put("cDefine10", map1.get("shippingOrderNumber"));//外销发票号
 | 
	
		
			
				|  |  | +                        map.put("cMaker", "进出口平台管理员");//制单人
 | 
	
		
			
				|  |  | +                        map.put("iSourceId", mapPo.get("ID"));//来源ID、
 | 
	
		
			
				|  |  | +                        map.put("cSourceCode", li.get("orderNumber"));//订单号li.get("orderNumber")
 | 
	
		
			
				|  |  | +                        map.put("cSOCode", li.get("orderNumber"));//订单号
 | 
	
		
			
				|  |  | +                        map.put("cnextsystem", "其他应付单");//单据流向
 | 
	
		
			
				|  |  | +                        map.put("iexchrate", nflat);//汇率
 | 
	
		
			
				|  |  | +                        map.put("Cexch_Name", "美元");
 | 
	
		
			
				|  |  | +                        map.put("iVTid", "57");//单据模板号
 | 
	
		
			
				|  |  | +                        map.put("cvencode", usd.get("freightForwarder"));
 | 
	
		
			
				|  |  | +                        map.put("cSysBarCode", "||SA09|"+cCode);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        //添加子表信息
 | 
	
		
			
				|  |  | +                        Map<String, Object> maps = new HashMap<>();
 | 
	
		
			
				|  |  | +                        maps.put("cSPVCode", cCode);//销售支出单号
 | 
	
		
			
				|  |  | +                        Double money = Double.parseDouble(li.get("grossWeight").toString()) / Double.parseDouble(map1.get("totalGrossWeight").toString());
 | 
	
		
			
				|  |  | +                        Double  imoney = money * Double.parseDouble(usd.get("amount").toString());
 | 
	
		
			
				|  |  | +                        maps.put("cbSysBarCode", "||SA09|"+cCode+"|"+ii);
 | 
	
		
			
				|  |  | +                        Double usdMoney = Double.parseDouble(df.format(imoney))*Double.parseDouble(nflat);
 | 
	
		
			
				|  |  | +                        maps.put("INatMoney", df.format(usdMoney));
 | 
	
		
			
				|  |  | +                        maps.put("iMoney", df.format(imoney));
 | 
	
		
			
				|  |  | +                        maps.put("cExpCode",usd.get("itemColumn"));//项目编码
 | 
	
		
			
				|  |  | +                        maps.put("ID", id);
 | 
	
		
			
				|  |  | +                        maps.put("irowno", "1");//行号
 | 
	
		
			
				|  |  | +                        if(imoney >= 0.01){
 | 
	
		
			
				|  |  | +                            sumImoney = sumImoney.add(new BigDecimal(df.format(imoney)));
 | 
	
		
			
				|  |  | +                            listmap.add(map);
 | 
	
		
			
				|  |  | +                            listmaps.add(maps);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    BigDecimal sumMoney = new BigDecimal(usd.get("amount").toString());
 | 
	
		
			
				|  |  | +                    if(sumMoney.compareTo(sumImoney) > 0){
 | 
	
		
			
				|  |  | +                        BigDecimal mo = sumMoney.subtract(sumImoney).setScale(2,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("iMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("iMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("INatMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("INatMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        BigDecimal mo = sumImoney.subtract(sumMoney).setScale(2,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("iMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("iMoney").toString()).subtract(mo)));
 | 
	
		
			
				|  |  | +                        listmaps.get(listmaps.size()-1).put("INatMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("INatMoney").toString()).subtract(mo)));
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //判断算出来的金额是否跟运费合计金额相等
 | 
	
		
			
				|  |  | -            if(sumMoney - sumImoney.doubleValue() ==0){
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | -                BigDecimal mo = new BigDecimal(sumMoney).subtract(sumImoney).setScale(2,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | -                listmaps.get(listmaps.size()-1).put("iMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("iMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | -                listmaps.get(listmaps.size()-1).put("INatMoney",(new BigDecimal(listmaps.get(listmaps.size()-1).get("INatMoney").toString()).add(mo)));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              //循环新增主表
 | 
	
		
			
				|  |  |              for(Map<String,Object> ma:listmap){
 | 
	
		
			
				|  |  |                  syShippingOrderMapper.saveSalePayVouch(ma);
 | 
	
	
		
			
				|  | @@ -858,8 +857,7 @@ public class SyShippingOrderServiceImpl extends ServiceImpl<SyShippingOrderMappe
 | 
	
		
			
				|  |  |              //修改最大编码
 | 
	
		
			
				|  |  |              purchaseWarehousingMapper.updateVoucherHistoryCNumber(cCode,"09");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            //修改最大ID
 | 
	
		
			
				|  |  | -            //syShippingOrderMapper.updateUaIdentity(id,itemList.get(0).get("pkOrg").toString());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }catch (Exception e){
 | 
	
		
			
				|  |  |              e.printStackTrace();
 |