瀏覽代碼

预装箱单更新导入规则

huxy 1 年之前
父節點
當前提交
491ace2178

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

@@ -232,6 +232,10 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "分组id")
 	private String groupId;
 
+	@TableField(exist = false)
+	@ApiModelProperty(value = "出运明细分组id")
+	private String groupItemId;
+
 	/**二维表格*/
 	@TableField(exist = false)
 	//@ExcelCollection(name="二维表格")
@@ -362,7 +366,11 @@ public class SyPreAssembledPackingListItem implements Serializable {
 			}else{
 				netWeightToo=new BigDecimal(parsms[15]);
 			}*/
-			withCode=parsms[17];//配码
+			if (parsms[17]==null||parsms[17].length()<1){
+				withCode="默认配码规格";
+			}else{
+				withCode=parsms[17];//配码
+			}
 			if(parsms[18]==null||!isNumeric(parsms[18])){
 				//packBox=new BigDecimal("0");//件数包
 			}else{
@@ -384,6 +392,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 
 			//发运明细分组ID	发运明细主表ID	申报要素ID
 			groupId=parsms[16+6+4];//分组id
+			groupItemId=parsms[16+6+4];//出运明细分组id
 			syDeclarationElementsId=parsms[16+7+4];
 			sizeTables=new ArrayList<>();
 			String planSize="";
@@ -398,10 +407,11 @@ public class SyPreAssembledPackingListItem implements Serializable {
 				piecesBox+=box;
 				sizeTable.setProportion(box);//比例
 				planSize+=parsms3[i]+":"+(boxNumber.intValue()*sizeTable.getProportion())+"+";
-				sizeTable.setItemId(parsms2[parsms2.length-1].split(",")[i]);//发运明细子表id
+				//sizeTable.setItemId(parsms2[parsms2.length-1].split(",")[i]);//发运明细子表id
 				sizeTables.add(sizeTable);
 				//System.out.println(sizeTable.getSize()+"\t"+sizeTable.getItemId());
 			}
+			//System.out.println("sizeTables\n"+sizeTables);
 			this.planSize=planSize.substring(0,planSize.length()-1);
 			this.piecesBox=new BigDecimal(piecesBox);//每箱件数
 			this.total=this.boxNumber.multiply(this.piecesBox);//数量

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

@@ -5,6 +5,7 @@ import java.util.List;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
 import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
@@ -58,4 +59,5 @@ public interface SyPreAssembledPackingListItemMapper extends BaseMapper<SyPreAss
 
 	public List<SizeTable> queryAllSizes2(@Param("list")String []ids);
 
+    List<SyShippingDetailsItem> getWideSizes(@Param("mainId")String syDeclarationElementsId);
 }

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

@@ -81,6 +81,13 @@
 		and del_flag=0
 	</select>
 
+	<select id="getWideSizes" parameterType="java.lang.String" resultType="org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem">
+		select  *
+		from  sy_shipping_details_item
+		where shipping_details_id= #{mainId}
+		and del_flag=0
+	</select>
+
 	<select id="selectSyShippingDetailsItemData" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
 		 SELECT
 		 	sy_shipping_details_item.shipping_details_id syDeclarationElementsId,/*发育明细主表id s*/

+ 72 - 63
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListServiceImpl.java

@@ -748,19 +748,14 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		List<String> ids=new ArrayList<>();
 		long startTime = System.currentTimeMillis();
 		for (SyPreAssembledPackingList item : items1){
-			List<SyPreAssembledPackingListItem> listItems2=item.getSyPreAssembledPackingListItemList();
-			for (SyPreAssembledPackingListItem listItem : listItems2){
-				for (SizeTable sizeTable : listItem.getSizeTables()){
-					ids.add(sizeTable.getItemId());
-				}
-			}
+			ids.add(item.getSyDeclarationElementsId());//获取主表id
 		}
 		QueryWrapper queryWrapper=new QueryWrapper();
-		queryWrapper.in("id",ids);
+		queryWrapper.in("shipping_Details_Id",ids);
 		List<SyShippingDetailsItem> syItems=syShippingDetailsItemMapper.selectList(queryWrapper);//获取数据
 		Map<String,SyShippingDetailsItem> mapItems=new HashMap<>();
 		for (SyShippingDetailsItem item : syItems){
-			mapItems.put(item.getId(),item);
+			mapItems.put(item.getGroupId()+item.getSize(),item);
 		}
 		long endTime2 = System.currentTimeMillis();
 		System.out.println("批量查询时间:" + (endTime2 - startTime) + "ms");
@@ -811,67 +806,68 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 						if(size.getProportion()==null){
 							size.setProportion(0);
 						}
-						SyPreAssembledPackingListItem item1=item;
+						SyShippingDetailsItem syItem=mapItems.get(item.getGroupItemId()+size.getSize());
+						if(syItem==null){
+							continue;
+						}
+						SyPreAssembledPackingListItem item1=item;//itemid
 						item1.setSize(size.getSize());//获取尺码信息
 						BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
 						item1.setTotal(boxNumber);//该尺码件数
 						syPreAssembledPackingList.setTotal(syPreAssembledPackingList.getTotal().add(boxNumber));
 						item1.setActualPackingQty(size.getQuantity());//获取该尺码计划装箱数量
-						item1.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
+						item1.setSyDeclarationElementsItemId(syItem.getId());//获取到发运明细子表id
 						item1.setSort(size.getNum());//获取序号
 						item1.setId(oConvertUtils.id());//获取到随机iddistributionPoint
 						//item1.setRemainingQuantity(boxNumber);//剩余数量
 						//获取发育明细数据
 						//SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item1.getSyDeclarationElementsItemId());
-						SyShippingDetailsItem syItem=mapItems.get(size.getItemId());
-						if(syItem!=null){
-							item1.setPackId(syItem.getPackId());
-							//item1.setDistributionPoint(syItem.getDistributionPoint());
-							item1.setUnitPrice(syItem.getSalesUnitPrice());//获取销售单价
-							item1.setFactoryUnitPrice(new BigDecimal(syItem.getFactoryUnitPrice()==null?"0":syItem.getFactoryUnitPrice()));//工厂单价
-							item1.setInventoryName(syItem.getInventoryName());//存货名称
-							item1.setAcSetNo(syItem.getAccount());//获取账套号
-							item1.setHod(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(syItem.getPreDeliveryDate()));//预发货日期
-							item1.setTotalPrice(item1.getTotal().multiply(item1.getUnitPrice()));//获取总价		箱数*单价-->件数*单价
-							item1.setOrderNumber(syItem.getOrderNumber());//获取订单号
-							//item1.setWithCode(syItem.getCodingRules());//配码规则	因为导出文件新加了配码字段所以注释
-							item1.setSpurOrSubOrder(syItem.getPurOrSubOrder());//获取采购委外订货号
-							item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());//获取到订单子表id
-							syPreAssembledPackingList.setElementsId(syItem.getElementsId());//申报要素id
-							syPreAssembledPackingList.setIsTc(syItem.getIsTc());
-							item1.setSalesman(syItem.getSalesman());//获取业务员
-							item1.setSalesDepartment(syItem.getSalesDepartment());//获取销售部门
-							item1.setInventoryCode(syItem.getInventoryCode());
-							item1.setInventoryCcode(syItem.getInventoryCcode());
+						item1.setPackId(syItem.getPackId());
+						//item1.setDistributionPoint(syItem.getDistributionPoint());
+						item1.setUnitPrice(syItem.getSalesUnitPrice());//获取销售单价
+						item1.setFactoryUnitPrice(new BigDecimal(syItem.getFactoryUnitPrice()==null?"0":syItem.getFactoryUnitPrice()));//工厂单价
+						item1.setInventoryName(syItem.getInventoryName());//存货名称
+						item1.setAcSetNo(syItem.getAccount());//获取账套号
+						item1.setHod(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(syItem.getPreDeliveryDate()));//预发货日期
+						item1.setTotalPrice(item1.getTotal().multiply(item1.getUnitPrice()));//获取总价		箱数*单价-->件数*单价
+						item1.setOrderNumber(syItem.getOrderNumber());//获取订单号
+						//item1.setWithCode(syItem.getCodingRules());//配码规则	因为导出文件新加了配码字段所以注释
+						item1.setSpurOrSubOrder(syItem.getPurOrSubOrder());//获取采购委外订货号
+						item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());//获取到订单子表id
+						syPreAssembledPackingList.setElementsId(syItem.getElementsId());//申报要素id
+						syPreAssembledPackingList.setIsTc(syItem.getIsTc());
+						item1.setSalesman(syItem.getSalesman());//获取业务员
+						item1.setSalesDepartment(syItem.getSalesDepartment());//获取销售部门
+						item1.setInventoryCode(syItem.getInventoryCode());
+						item1.setInventoryCcode(syItem.getInventoryCcode());
 
-							item1.setCreateTime(day);
+						item1.setCreateTime(day);
 
-							item1.setSyOrderDataId(syItem.getSyOrderDataId());
-							item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());
-							item1.setOrderNumber(syItem.getOrderNumber()); //销售订单号
-							item1.setOmpoId(syItem.getOmpoId());//采购委外订单id
-							item1.setOmpoAccount(syItem.getOmpoAccount());//采购委外账套号
-							item1.setOmpoIdItem(syItem.getOmpoIdItem());//采购委外订单子表id
-							item1.setSupplierCode(syItem.getSupplierCode());
-							item1.setSupplier(syItem.getSupplier());
-							syPreAssembledPackingList.setOrderNumber(syItem.getOrderNumber());
-							syPreAssembledPackingList.setItemNumber(syItem.getItemNumber());
-							syPreAssembledPackingList.setSpurOrSubOrder(syItem.getPurOrSubOrder());
-							//原剩余数量-预装箱单装箱数量=新剩余数量
-							/*syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
-							//超发数量
-							syItem.setExcessQuantity(item1.getTotal().subtract(syItem.getSurplusQuantity()));
-							//syItem.setIsReference(1);//标识已被参照
-							syShippingDetailsItemMapper.updateById(syItem);//修改发运明细*/
-							/*if(item1.getTotal().doubleValue()>0){
-								if(maps.containsKey(item.getSyDeclarationElementsItemId())){
-									maps.put(item1.getSyDeclarationElementsItemId(),maps.get(item1.getSyDeclarationElementsItemId()).add(item1.getTotal()));
-								}else{
-									maps.put(item1.getSyDeclarationElementsItemId(),item1.getTotal());
-								}
-								//updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
-							}*/
-						}
+						item1.setSyOrderDataId(syItem.getSyOrderDataId());
+						item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());
+						item1.setOrderNumber(syItem.getOrderNumber()); //销售订单号
+						item1.setOmpoId(syItem.getOmpoId());//采购委外订单id
+						item1.setOmpoAccount(syItem.getOmpoAccount());//采购委外账套号
+						item1.setOmpoIdItem(syItem.getOmpoIdItem());//采购委外订单子表id
+						item1.setSupplierCode(syItem.getSupplierCode());
+						item1.setSupplier(syItem.getSupplier());
+						syPreAssembledPackingList.setOrderNumber(syItem.getOrderNumber());
+						syPreAssembledPackingList.setItemNumber(syItem.getItemNumber());
+						syPreAssembledPackingList.setSpurOrSubOrder(syItem.getPurOrSubOrder());
+						//原剩余数量-预装箱单装箱数量=新剩余数量
+						/*syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
+						//超发数量
+						syItem.setExcessQuantity(item1.getTotal().subtract(syItem.getSurplusQuantity()));
+						//syItem.setIsReference(1);//标识已被参照
+						syShippingDetailsItemMapper.updateById(syItem);//修改发运明细*/
+						/*if(item1.getTotal().doubleValue()>0){
+							if(maps.containsKey(item.getSyDeclarationElementsItemId())){
+								maps.put(item1.getSyDeclarationElementsItemId(),maps.get(item1.getSyDeclarationElementsItemId()).add(item1.getTotal()));
+							}else{
+								maps.put(item1.getSyDeclarationElementsItemId(),item1.getTotal());
+							}
+							//updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
+						}*/
 						syPreAssembledPackingList.setTotalPrice(syPreAssembledPackingList.getTotalPrice().add(item1.getTotalPrice()));//获取总价
 						if(size.getProportion()==0){
 							item1.setTotal(null);//该尺码件数
@@ -914,21 +910,35 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 	@Override
 	public String excelTest(List<SyPreAssembledPackingList> mains) {
 		String strs="";
-		List<String> mainIds=new ArrayList<>();
 		for(SyPreAssembledPackingList main : mains){
-			mainIds.add(main.getSyDeclarationElementsId());
 			BigDecimal total1=new BigDecimal("0");
 			BigDecimal total2=new BigDecimal("0");
 			BigDecimal total3=new BigDecimal("0");
 			BigDecimal total4=new BigDecimal("0");//(本次数量+现有数量)>1.9*发货数量就报错
 			String name="";
 			String ids="";
+			List<SyShippingDetailsItem> syShippingDetailsItems=syPreAssembledPackingListItemMapper.getWideSizes(main.getSyDeclarationElementsId());
 			for (SyPreAssembledPackingListItem item :main.getSyPreAssembledPackingListItemList()){
-				//System.out.println("size\t"+item.getSizeTables());
+				Map<String,String> map=new HashMap<>();
+				for (SyShippingDetailsItem detailsItem : syShippingDetailsItems){
+					if(((detailsItem.getCodingRules()==null||detailsItem.getCodingRules().length()<1)&&item.getWithCode().equals("默认配码规格"))
+					||detailsItem.getCodingRules().equals(item.getWithCode())){
+						map.put(detailsItem.getSize(),detailsItem.getId());
+					}
+				}
+				//System.out.println("size\t"+item.getSizeTables());默认配码规格
+				System.out.println("配码规格\t"+item.getWithCode());
 				total3=total3.add(item.getTotal());
 				int num2=0;
 				for (SizeTable size : item.getSizeTables()){
-					ids+=""+size.getItemId()+",";//获取出运明细子表id
+					if (map.get(size.getSize())==null){
+						BigDecimal sub=new BigDecimal(size.getProportion()).multiply(item.getBoxNumber());
+						System.out.println("sub\t"+sub);
+						total3=total3.subtract(sub);
+					}else{
+						ids+=""+map.get(size.getSize())+",";//获取出运明细子表id
+					}
+					System.out.println("尺码\t"+size.getSize()+"\t数量\t"+size.getProportion());
 					if(num2==0){
 						//SyShippingDetailsItem syshippings=syShippingDetailsItemMapper.selectById(size.getItemId());
 						if(main.getCustomerAbbreviation().equals("BW")||main.getCustomerAbbreviation().equals("DUNNES")){
@@ -963,11 +973,10 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 			}
 			total4=total2.add(total3);
 			if(total4.doubleValue()>total1.doubleValue()*1.9){//(本次数量+现有数量)>1.9*发货数量就报错
-				throw new JeecgBootException(name+"本次导入数量+装箱单现有数量大于发货订单数量*1.9,请勿重复导入");
+				//throw new JeecgBootException(name+"本次导入数量+装箱单现有数量大于发货订单数量*1.9,请勿重复导入");
 			}
 			strs+=name+"的原单据数量"+total1.intValue()+",已参照数量"+total2.intValue()+",本次数量"+total3.intValue()+";";
 		}
-		System.out.println("出运明细子表mainIds\t"+mainIds);
 		return strs;
 	}
 

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

@@ -2002,11 +2002,20 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			if(account.equals("103")||maps.get("account1").toString().equals("101")){
 				orderData=syPackingListTailoringMapper.getOmOrPo("om_momain",
 				"cCode=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListTailoring.getRdrecord32Code()+"')","MOID");
+				if (orderData.size()==0){
+					getError(syPackingListTailoring,account+"查询不到对应的委外订单");
+					throw new JeecgBootException(account+"查询不到对应的委外订单");
+				}
 			}else{
 				orderData=syPackingListTailoringMapper.getOmOrPo("po_pomain",
 				"cpoid=(select  top 1 cOrderCode from rdrecord01 where ccode='"+syPackingListTailoring.getRdrecord32Code()+"')","poid");
+				if (orderData.size()==0){
+					getError(syPackingListTailoring,account+"查询不到对应的采购订单");
+					throw new JeecgBootException(account+"查询不到对应的采购订单");
+				}
 			}
 			System.out.println("orderData\t"+orderData);
+
 			//List<SyPackingListFabricItem> listFabricItems=syPackingListFabric.getSyPackingListFabricItem();//需要进行分组
 			List<SyPackingListTailoringItem> listTailoringItems=listTailoringItemMaps.get(customer);
 			//System.out.println("codes.size\t"+codes.size());
@@ -2057,12 +2066,14 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 				try {
 					dd = sf1.format(sf1.parse(syPackingListTailoring.getTheFinalShippingDate()));
 				}catch (Exception e){
-					throw new JeecgBootException("最终船期转换异常");
+					getError(syPackingListTailoring,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){
-					throw new JeecgBootException("该船期查询不到汇率,请检查日期是否填错");
+					getError(syPackingListTailoring,account+"该船期查询不到汇率,请检查日期是否填错");
+					throw new JeecgBootException(account+"该船期查询不到汇率,请检查日期是否填错");
 				}
 				jsonObject1.put("IEXCHRATE",rate.get("nflat").toString());//汇率(如果传空,接口默认1)cPayCode
 			}
@@ -2150,6 +2161,15 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 		return "推送成功";
 	}
 
+	//获取报错原因
+	public void getError(SyPackingListTailoring syPackingListTailoring,String error){
+		if (syPackingListTailoring.getSaleInvoiceError()==null){
+			syPackingListTailoring.setSaleInvoiceError(error);
+		}else{
+			syPackingListTailoring.setSaleInvoiceError(syPackingListTailoring.getSaleInvoiceError()+";"+error);
+		}
+	}
+
 	/**
 	 * 銷售發票 销售发票
 	 * @param listTailorings
@@ -2201,6 +2221,10 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 			jsonObject1.put("CDEFINE11",syPackingListTailoring.getEndCustomer());//最终客户
 
 			Map<String,Object> order=syPackingListTailoringMapper.getSoMainCode(syPackingListTailoring.getRdrecord32Code());//随便哪一个做主表信息
+			if (order.size()==0){
+				getError(syPackingListTailoring,account+"查询不到对应的销售订单");
+				throw new JeecgBootException(account+"查询不到对应的销售订单");
+			}
 			System.out.println("成衣销售order\t"+order);
 			if(order.get("cCusCode").equals("T020001")&&!account.equals("101")){
 				//maps.put("account","101");//账套号
@@ -2235,12 +2259,14 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList
 				try {
 					dd = sf1.format(sf1.parse(syPackingListTailoring.getTheFinalShippingDate()));
 				}catch (Exception e){
-					throw new JeecgBootException("最终船期转换异常");
+					getError(syPackingListTailoring,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){
-					throw new JeecgBootException("该船期查询不到汇率,请检查日期是否填错");
+					getError(syPackingListTailoring,account+"该船期查询不到汇率,请检查日期是否填错");
+					throw new JeecgBootException(account+"该船期查询不到汇率,请检查日期是否填错");
 				}
 				jsonObject1.put("IEXCHRATE",rate.get("nflat").toString());//汇率(如果传空,接口默认1)cPayCode
 			}