Procházet zdrojové kódy

预装箱单,添加发货情况做为查询条件

huxy před 2 roky
rodič
revize
5297e63e0e

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

@@ -1,13 +1,8 @@
 package org.jeecg.modules.spapl.controller;
 
-import java.io.UnsupportedEncodingException;
 import java.io.IOException;
-import java.math.BigDecimal;
-import java.net.URLDecoder;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -15,30 +10,15 @@ import javax.servlet.http.HttpServletResponse;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import org.apache.commons.beanutils.PropertyUtils;
-import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.base.controller.JeecgController;
-import org.jeecg.common.system.vo.LoginUser;
-import org.apache.shiro.SecurityUtils;
-import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetails;
-import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
 import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
-import org.jeecg.modules.documents.shippingDetails.service.ISyShippingDetailsItemService;
-import org.jeecg.modules.documents.shippingDetails.service.ISyShippingDetailsService;
 import org.jeecg.modules.openApi.entity.DxpDataPlan;
 import org.jeecg.modules.openApi.service.IDxpDataPlanService;
-import org.jeecg.modules.scas.entity.SyCostAllocationSummary;
-import org.jeecg.modules.scas.service.ISyCostAllocationSummaryService;
-import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.vo.PackingHeaderVo;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo;
 import org.jeecg.modules.system.util.InterfaceConnUtils;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -58,7 +38,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
-import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
@@ -79,11 +58,8 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 	@Autowired
 	private ISyPreAssembledPackingListItemService syPreAssembledPackingListItemService;
 	@Autowired
-	private ISyShippingDetailsService syShippingDetailsService;
-	@Autowired
-	private ISyShippingDetailsItemService syShippingDetailsItemService;
-	 @Autowired
-	 private IDxpDataPlanService iDxpDataPlanService;
+	private IDxpDataPlanService iDxpDataPlanService;
+
 	/**
 	 * 分页列表查询
 	 *
@@ -670,4 +646,15 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 		String dateNo ="YCY"+sf.format(System.currentTimeMillis())+syPreAssembledPackingListService.getOne(queryWrapperCount).getId();;
 		return dateNo;
 	 }
+
+	 @AutoLog(value = "测试")
+	 @ApiOperation(value="测试", notes="测试")
+	 @GetMapping(value = "/deletee")
+	 public int deletee(String id){
+		 QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
+		 queryWrapperCount.select("sum(total) total");
+		 queryWrapperCount.eq("del_Flag","0");
+		 queryWrapperCount.eq("sy_Pre_Assembled_Packing_List_Id",id);
+		 return syPreAssembledPackingListItemService.getOne(queryWrapperCount).getTotal().intValue();
+	 }
 }

+ 10 - 34
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingList.java

@@ -152,27 +152,16 @@ public class SyPreAssembledPackingList implements Serializable {
 	@ApiModelProperty(value = "业务员")
 	private java.lang.String salesman;
 
-/*	*//**小PO*//*
-	@ApiModelProperty(value = "小PO")
-	private String smallPo;
-	*//**分销点*//*
-	@ApiModelProperty(value = "分销点")
-	private String distributionPoint;
-	*//**存货名称*//*
-	@ApiModelProperty(value = "存货名称")
-	private String inventoryName;
-	*//**颜色*//*
-	@ApiModelProperty(value = "颜色")
-	private String colour;
-	*//**采购/委外订单号*//*
-	@ApiModelProperty(value = "采购/委外订单号")
-	private String purOrSubOrder;*/
-	/**工厂单价*/
-	/*@ApiModelProperty(value = "工厂单价")
-	private java.math.BigDecimal factoryUnitPrice;
-	*//**数量(按合并规则累计)*//*
-	@ApiModelProperty(value = "数量(按合并规则累计)")
-	private java.math.BigDecimal totalQuantity;*/
+	/**业务部门(销售部门)*/
+	@Excel(name = "业务部门(销售部门)", width = 15)
+	@ApiModelProperty(value = "业务部门(销售部门)")
+	private java.lang.String salesDepartment;
+
+	/**是否被参照(0:无,1:被预托书参照,2:被装箱单参照)*/
+	@Excel(name = "是否被参照(0:无,1:被预托书参照,2:被装箱单参照)", width = 15)
+	@ApiModelProperty(value = "是否被参照(0:无,1:被预托书参照,2:被装箱单参照)")
+	private Integer isReference;
+
 	//子表集合
 	@TableField(exist = false)
 	@ApiModelProperty(value = "子表集合")
@@ -184,17 +173,4 @@ public class SyPreAssembledPackingList implements Serializable {
 	@ApiModelProperty(value = "二维表格")
 	private List<SizeTable> sizeTables;
 
-	@Override
-	public String toString() {
-		return "SyPreAssembledPackingList{" +
-				"id='" + id + '\'' +
-				", orderNumber='" + orderNumber + '\'' +
-				", itemNumber='" + itemNumber + '\'' +
-				", productName='" + productName + '\'' +
-				", sizeRange='" + sizeRange + '\'' +
-				", preDeliveryDate=" + preDeliveryDate +
-				", orderType='" + orderType + '\'' +
-				", syPreAssembledPackingListItemList=" + syPreAssembledPackingListItemList +
-				'}';
-	}
 }

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

@@ -22,6 +22,8 @@ public interface SyPreAssembledPackingListItemMapper extends BaseMapper<SyPreAss
     
 	public List<SyPreAssembledPackingListItem> selectByMainId(String mainId);
 
+	public List<SyPreAssembledPackingListItem> selectAll(String mainId);
+
 	public List<SyPreAssembledPackingListItem> selectSyShippingDetailsItemData(@Param("value")String value);
 
 	public List<SizeTable> selectSize(@Param("begin") String begin,@Param("end") String end);

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

@@ -55,6 +55,12 @@
 		GROUP BY group_id/*原本按照颜色进行分组 现改为按照分组id*/
 	</select>
 
+	<select id="selectAll" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
+		SELECT *
+		FROM  sy_pre_assembled_packing_list_item
+		WHERE sy_pre_assembled_packing_list_id = #{value}
+	</select>
+
 	<select id="selectSyShippingDetailsItemData" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
 		 SELECT
 		 	sy_shipping_details_item.shipping_details_id syDeclarationElementsId,/*发育明细主表id s*/
@@ -67,8 +73,8 @@
 			sy_shipping_details_item.factory_unit_price factoryUnitPrice,/* s*/
 			sy_shipping_details_item.sales_Unit_Price UnitPrice,/*销售单价--> 单价*/
 			sy_order_data_item.coding_Rules withCode,/*配码规则*/
-			sy_order_data_item.size,/*尺码 s*/
-			sy_order_data_item.colour,/*颜色 s*/
+			sy_shipping_details_item.size,/*尺码 s*/
+			sy_shipping_details_item.colour,/*颜色 s*/
 			sy_order_data_item.master_Metering,/*主计量*/
 		    sy_shipping_details_item.item_Number styleNo, /*款号 s*/
            	sy_shipping_details_item.distribution_Point distributionPoint, /*分销点 s*/
@@ -86,7 +92,7 @@
 		 LEFT JOIN sy_order_data_item
 		 ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
 		 where sy_shipping_details_item.del_flag = 0 and shipping_details_id =#{value}
-		group by sy_order_data_item.colour
+		group by  sy_shipping_details_item.colour
 	</select>
 
 	<select id="selectSize" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
@@ -96,11 +102,16 @@
 
 	<!--获取所有id的所有尺码去重并排序-->
 	<select id="querySizes" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
-		SELECT DISTINCT sy_order_data_item.size FROM sy_shipping_details_item LEFT JOIN sy_order_data_item
-		 ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
-		 LEFT JOIN sizetable ON sy_order_data_item.`size`=sizetable.`size` OR sy_order_data_item.`size`=sizetable.`alias`
-		 WHERE shipping_details_id =#{value}  AND sy_order_data_item.size IS NOT NULL and sy_shipping_details_item.del_flag=0
-		 ORDER BY sizetable.num
+		SELECT DISTINCT sy_shipping_details_item.size
+		FROM sy_shipping_details_item
+		LEFT JOIN sizetable
+		ON sy_shipping_details_item.`size`=sizetable.`size`
+		OR sy_shipping_details_item.`size`=sizetable.`alias`
+		WHERE shipping_details_id =#{value }
+		AND sy_shipping_details_item.size IS NOT NULL
+		and sy_shipping_details_item.del_flag=0
+		ORDER BY sizetable.num
+
 	</select>
 
 	<!--获取所有id的所有尺码去重并排序2-->
@@ -115,18 +126,18 @@
 
 	<!--参照发育明细获取id的所有尺码并排序-->
 	<select id="querySize" resultType="org.jeecg.modules.spapl.entity.SizeTable" >
-		SELECT 	sy_order_data_item.size,
-				sizetable.alias,
-				sy_shipping_details_item.shipment_Quantity quantity,
-				sy_shipping_details_item.shipment_Quantity/sy_order_data_item.box_Number proportion,
-				sy_shipping_details_item.id itemId
-			FROM sy_shipping_details_item
-			LEFT JOIN sy_order_data_item
-			ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
-			LEFT JOIN sizetable ON sy_order_data_item.`size`=sizetable.`size`
-			OR sy_order_data_item.`size`=sizetable.`alias`
-		WHERE shipping_details_id=#{value} and sy_order_data_item.colour=#{color} and sy_shipping_details_item.del_flag=0
-		order by sizetable.num
+		SELECT 	sy_shipping_details_item.size,
+		sizetable.alias,
+		sy_shipping_details_item.shipment_Quantity quantity,
+		sy_shipping_details_item.shipment_Quantity/sy_shipping_details_item.box_Number proportion,
+		sy_shipping_details_item.id itemId
+		FROM sy_shipping_details_item
+		LEFT JOIN sizetable ON sy_shipping_details_item.`size`=sizetable.`size`
+		OR sy_shipping_details_item.`size`=sizetable.`alias`
+		WHERE shipping_details_id=#{value}
+			and sy_shipping_details_item.colour=#{color}
+			and sy_shipping_details_item.del_flag=0
+		ORDER BY sizetable.num
 	</select>
 
 	<!--预装箱单获取id的所有尺码并排序-->

+ 80 - 76
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListMapper.xml

@@ -3,88 +3,92 @@
 <mapper namespace="org.jeecg.modules.spapl.mapper.SyPreAssembledPackingListMapper">
     <select id="selectSyShippingDetailsData" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingList">
         /*获取发运明细数据*/
-        SELECT
-            sy_shipping_details.id AS syDeclarationElementsId, /*发运明细主表id*/
-            sy_order_data.id AS syDeclarationElementsId, /*订单数据主表id*/
-            sy_shipping_details.chinese_Name AS productName,/*中文品名-->品名*/
-            sy_shipping_details.customer AS customer, /*客户 customer */
-            sy_order_data.customer_Abbreviation AS customerAbbreviation, /*客户简称 customer */
-            sy_order_data.customer_Code AS customerCode, /*客户编码 customer */
-            sy_order_data.business_Type_Value,/*业务类型*/
-            sy_order_data.salesman,/*业务员*/
-            /*sy_shipping_details.garment_Factory AS garmentFactory, 成衣工厂 garmentFactory m*/
-            sy_shipping_details.order_Type AS  orderType, /*订单类型 m*/
-             (SELECT sy_shipping_details_item.`pur_or_sub_order` FROM sy_shipping_details_item
-            WHERE shipping_details_id=sy_shipping_details.id LIMIT 1) spur_Or_Sub_Order
-        FROM sy_shipping_details LEFT JOIN
-        sy_order_data ON sy_shipping_details.`sy_order_data_id`=sy_order_data.`id`
-        WHERE sy_shipping_details.del_flag = 0 AND sy_shipping_details.id=#{value}
+    SELECT
+        sy_shipping_details.id AS syDeclarationElementsId, /*发运明细主表id*/
+        sy_order_data.id AS syDeclarationElementsId, /*订单数据主表id*/
+        sy_shipping_details.chinese_Name AS productName,/*中文品名-->品名*/
+        sy_shipping_details.customer AS customer, /*客户 customer */
+        sy_order_data.customer_Abbreviation AS customerAbbreviation, /*客户简称 customer */
+        sy_order_data.customer_Code AS customerCode, /*客户编码 customer */
+        sy_order_data.business_Type_Value,/*业务类型*/
+        sy_order_data.salesman,/*业务员*/
+        sy_order_data.sales_Department,/*业务部门(销售部门)*/
+
+        /*sy_shipping_details.garment_Factory AS garmentFactory, 成衣工厂 garmentFactory m*/
+        sy_shipping_details.order_Type AS  orderType, /*订单类型 m*/
+        (SELECT sy_shipping_details_item.`pur_or_sub_order` FROM sy_shipping_details_item
+        WHERE shipping_details_id=sy_shipping_details.id LIMIT 1) spur_Or_Sub_Order/*采购/委外订单号*/
+    FROM sy_shipping_details
+    LEFT JOIN sy_order_data
+    ON sy_shipping_details.`sy_order_data_id`=sy_order_data.`id`
+    WHERE sy_shipping_details.del_flag = 0
+    AND sy_shipping_details.id=#{value}
 	</select>
 
     <select id="selectPage" resultType="org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo">
-        /*获取汇总数据*/
-       SELECT
-            a.id,/*主键id*/
-			a.document_No,/*单据号*/
-			a.order_number,/*订单号*/
-			a.item_number, /*款号*/
-			a.product_name,/*品名*/
-			a.size_range,/*尺码范围*/
-			a.customer,/*客户名称*/
-			a.container_code,/*集装箱号*/
-			a.container_number,/*集装箱代号*/
-			a.u8_remarks,/*备注*/
-			a.garment_factory,/*成衣工厂*/
-			a.depositary_receipt_no,/*预托书号*/
-			a.memo,/*备注*/
-			b.hod,/*预发货日期*/
-			a.order_type,/*订单类型*/
-			a.customer_abbreviation,/*客户简称*/
-			a.`update_time`,/*修改日期*/
-			a.`status`,/*单据状态*/
-			a.`push_Status`,/*推送状态*/
-			b.master_Metering,/*计量单位*/
-			SUM(b.total) total,/*件数*/
-			a.total_Boxes totalboxes,/*总箱数*/
-			sum(b.total_net_weight) totalnetweight,/*总净重*/
-			sum(b.total_gross_weight) totalgrossweight,/*总毛重*/
-			sum(b.total_volume) totalvolume,/*总体积*/
-			sum(b.total_price) totalprice,/*总价*/
-			/*sum(b.total) totalquantity,*/
-			b.unit_price factoryUnitPrice,/*工厂单价*/
-			a.spur_or_sub_order,/*采购委外订单号*/
-			b.inventory_name,/*存货名称*/
-			b.small_po,/*小po*/
-			b.distribution_point/*分销点*/
-        FROM Sy_Pre_Assembled_Packing_List  a
-        LEFT JOIN Sy_Pre_Assembled_Packing_List_item  b
-        ON a.id=b.sy_pre_assembled_packing_list_id  AND b.del_flag='0'
-        ${ew.customSqlSegment}
-        GROUP BY a.id
-        ORDER BY a.`update_time` DESC
+    /*获取汇总数据*/
+    SELECT
+        a.id,/*主键id*/
+        a.document_No,/*单据号*/
+        a.order_number,/*订单号*/
+        a.item_number, /*款号*/
+        a.product_name,/*品名*/
+        a.size_range,/*尺码范围*/
+        a.customer,/*客户名称*/
+        a.container_code,/*集装箱号*/
+        a.container_number,/*集装箱代号*/
+        a.u8_remarks,/*备注*/
+        a.garment_factory,/*成衣工厂*/
+        a.depositary_receipt_no,/*预托书号*/
+        a.memo,/*备注*/
+        a.order_type,/*订单类型*/
+        a.customer_abbreviation,/*客户简称*/
+        a.`update_time`,/*修改日期*/
+        a.`status`,/*单据状态*/
+        a.total_Boxes totalboxes,/*总箱数*/
+        a.`push_Status`,/*推送状态*/
+        b.master_Metering,/*计量单位*/
+        SUM(b.total) total,/*件数*/
+        b.hod,/*预发货日期*/
+        sum(b.total_net_weight) totalnetweight,/*总净重*/
+        sum(b.total_gross_weight) totalgrossweight,/*总毛重*/
+        sum(b.total_volume) totalvolume,/*总体积*/
+        sum(b.total_price) totalprice,/*总价*/
+        /*sum(b.total) totalquantity,*/
+        b.unit_price factoryUnitPrice,/*工厂单价*/
+        a.spur_or_sub_order,/*采购委外订单号*/
+        b.inventory_name,/*存货名称*/
+        b.small_po,/*小po*/
+        b.distribution_point/*分销点*/
+    FROM Sy_Pre_Assembled_Packing_List  a
+    LEFT JOIN Sy_Pre_Assembled_Packing_List_item  b
+    ON a.id=b.sy_pre_assembled_packing_list_id  AND b.del_flag='0'
+    ${ew.customSqlSegment}
+    GROUP BY a.id
+    ORDER BY a.`update_time` DESC
 	</select>
 
     <update id="deleteId" parameterType="java.lang.String">
-        update sy_pre_assembled_packing_list set del_flag='1' where
-        id=#{value}
+    update sy_pre_assembled_packing_list set del_flag='1' where
+    id=#{value}
     </update>
     
     <select id="pushData" resultType="org.jeecg.modules.spapl.vo.PackingHeaderVo" parameterType="java.lang.String">
-        SELECT
-            document_No AS packingHeaderNum/*单据号*/,
-            spur_Or_Sub_Order AS poNo,/*委外/采购订单号*/
-            /*采购/委外订单号对应的ID(唯一标识)*/ id as attributeBigint1,
-            'CLOTHING' AS packingType /*计划装箱单类型*/,
-            'NEW' AS packingStatus /*计划装箱单头状态*/,
-            size_Range  AS size_Range,/*尺寸范围*/
-            item_number AS styleNo,/*款号*/
-            product_Name AS  productName,/*品名*/
-            supplier_code supplierNumber, /*供应商编码*/
-           /* customer_Code AS customerCode/*客户编码*/,*/
-            create_By AS preparer/*创建人*/,
-            create_Time AS preparationTime/*创建时间*/
-        FROM `sy_pre_assembled_packing_list`
-        where id=#{value}
+    SELECT
+        document_No AS packingHeaderNum/*单据号*/,
+        spur_Or_Sub_Order AS poNo,/*委外/采购订单号*/
+        /*采购/委外订单号对应的ID(唯一标识)*/ id as attributeBigint1,
+        'CLOTHING' AS packingType /*计划装箱单类型*/,
+        'NEW' AS packingStatus /*计划装箱单头状态*/,
+        size_Range  AS size_Range,/*尺寸范围*/
+        item_number AS styleNo,/*款号*/
+        product_Name AS  productName,/*品名*/
+        supplier_code supplierNumber, /*供应商编码*/
+       /* customer_Code AS customerCode/*客户编码*/,*/
+        create_By AS preparer/*创建人*/,
+        create_Time AS preparationTime/*创建时间*/
+    FROM `sy_pre_assembled_packing_list`
+    where id=#{value}
     </select>
 
 
@@ -144,8 +148,8 @@
         a.english_product_name AS englishProductName,
         b.garment_factory AS garmentFactory,
         excess_quantity
-         FROM sy_shipping_details a
-         LEFT JOIN sy_shipping_details_item b
+        FROM sy_shipping_details a
+        LEFT JOIN sy_shipping_details_item b
     ON a.id = b.shipping_details_id AND b.del_flag = 0
     WHERE
     a.del_flag = 0
@@ -153,5 +157,5 @@
     /* and inventory_code like '19%'*/
     GROUP BY a.id ORDER BY a.document_no DESC) AS t
     ${ew.customSqlSegment}
-</select>
+    </select>
 </mapper>

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

@@ -73,22 +73,19 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				BigDecimal volume=boxNumber.multiply(item1.getOuterBoxHeight());
 				volume=volume.multiply(item1.getOuterBoxLength());
 				volume=volume.multiply(item1.getOuterBoxWidth());
-				item1.setTotalVolume(volume);//获取总体积						长*宽*高*箱数
+				item1.setTotalVolume(volume);//获取总体积	长*宽*高*箱数
 
 				item1.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
 				item1.setSort(size.getNum());//获取序号
 				item1.setId(oConvertUtils.id());//获取到随机id
 				syPreAssembledPackingListItemMapper.insert(item1);//添加子表数据
-
-				//以下均作用于剩余数量变化--添加
 				//获取发育明细数据
 				SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item.getSyDeclarationElementsItemId());
-				syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item.getTotal()));//原剩余数量-预装箱单装箱数量=新剩余数量
-				if(syItem.getSurplusQuantity().compareTo(new BigDecimal("0"))!=1){//当剩余数量等于0
-					BigDecimal surplusQuantity=syItem.getSurplusQuantity().abs();//取绝对值
-					//syItem.setExcessQuantity(surplusQuantity);//获取超发数量
-				}
-				//syShippingDetailsItemMapper.updateById(syItem);//修改
+				syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item.getTotal()));
+				//原剩余数量-预装箱单装箱数量=新剩余数量
+				syItem.setExcessQuantity(syItem.getSurplusQuantity().subtract(syItem.getShipmentQuantity()));
+				syItem.setIsReference(1);//标识已被参照
+				syShippingDetailsItemMapper.updateById(syItem);//修改发运明细
 			}
 		}
 		return box;
@@ -130,17 +127,21 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 					item1.setSyPreAssembledPackingListId(pid);
 					syPreAssembledPackingListItemMapper.insert(item1);
 				}
-
-				//以下均作用于剩余数量变化 --修改
+				//这个构造器用来获取预装箱单里所有参照了改发运明细数量的合计
+				QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
+				queryWrapperCount.select("sum(total) total");
+				queryWrapperCount.eq("del_Flag","0");
+				queryWrapperCount.eq("sy_Declaration_Elements_Item_Id",item.getSyDeclarationElementsItemId());
+				BigDecimal total=syPreAssembledPackingListItemMapper.selectOne(queryWrapperCount).getTotal();
 				//获取发育明细数据
 				SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item.getSyDeclarationElementsItemId());
-				//原剩余数量-预装箱单装箱数量=新剩余数量
-				syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item.getTotal()));
-				if(syItem.getSurplusQuantity().compareTo(new BigDecimal("0"))!=1){//当剩余数量等于0
-					BigDecimal surplusQuantity=syItem.getSurplusQuantity().abs();//取绝对值
-					//syItem.setExcessQuantity(surplusQuantity);//获取超发数量
-				}
-				//syShippingDetailsItemMapper.updateById(syItem);//修改
+				///发货-预装箱单数量=剩余数量
+				syItem.setSurplusQuantity(syItem.getShipmentQuantity().subtract(total));
+				//预装箱单数量-发货=超发数量
+				syItem.setExcessQuantity(total.subtract(syItem.getShipmentQuantity()));
+				//标识已被参照
+				syItem.setIsReference(1);
+				syShippingDetailsItemMapper.updateById(syItem);//修改
 			}
 		}
 		return box;
@@ -190,33 +191,61 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		}
 		List<SyPreAssembledPackingListItem> items=syPreAssembledPackingList.getSyPreAssembledPackingListItemList();
 		syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);//修改主表数据
-		syPreAssembledPackingListItemMapper.deleteByMainId(syPreAssembledPackingList.getId());//将子表的删除状态都变成1
-		//根据主表id获取所有被删除的子表信息
-		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectByMainId(syPreAssembledPackingList.getId());
+
+		//根据主表id获取所有的子表信息
+		//问题:这样会查询到上次就已经删除的数据,数据会乱
+		//思路:让上次被删除的数据避免被重用
+		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(syPreAssembledPackingList.getId());
 		for(SyPreAssembledPackingListItem item : items2){//要根据这个去改变对应发运明细的剩余数量
+			QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
+			queryWrapperCount.select("sum(total) total");
+			queryWrapperCount.eq("del_Flag","0");
+			queryWrapperCount.eq("sy_Declaration_Elements_Item_Id",item.getSyDeclarationElementsItemId());
+			BigDecimal total=syPreAssembledPackingListItemMapper.selectOne(queryWrapperCount).getTotal();
 			//获取发育明细数据
 			SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item.getSyDeclarationElementsItemId());
-			//预装箱单装箱数量-x=剩余数量+x
-			syItem.setSurplusQuantity(syItem.getSurplusQuantity().add(item.getTotal()));
-			//if(syItem.getExcessQuantity().compareTo(new BigDecimal("0"))!=1){//当超发数量不等于-1
-				//BigDecimal surplusQuantity=syItem.getSurplusQuantity().abs();//取绝对值
-				//syItem.setExcessQuantity(surplusQuantity.multiply(item.getTotal()));//超发数量-本次删除数量
-			//}
-
+			//发货-预装箱单数量=剩余数量
+			syItem.setSurplusQuantity(syItem.getShipmentQuantity().subtract(total));
+			//预装箱单数量-发货=超发数量
+			syItem.setExcessQuantity(total.subtract(syItem.getShipmentQuantity()));
+			syShippingDetailsItemMapper.updateById(syItem);//修改数据
 		}
+		syPreAssembledPackingListItemMapper.deleteByMainId(syPreAssembledPackingList.getId());//将子表的删除状态都变成1
 		if(syPreAssembledPackingList.getSyPreAssembledPackingListItemList()!=null){
 			BigDecimal box= update(syPreAssembledPackingList.getSyPreAssembledPackingListItemList(),syPreAssembledPackingList.getId());
 			syPreAssembledPackingList.setTotalBoxes(box);//主表的总箱数
-			syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);
+			syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);//修改主表总箱数
 		}
 		return syPreAssembledPackingList;
 	}
 
+
 	@Override
 	@Transactional
 	public Integer delMain(String id) {
+		QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
+		queryWrapperCount.select("id");
+		queryWrapperCount.ne("del_Flag","0");
+		queryWrapperCount.eq("sy_Pre_Assembled_Packing_List_Id",id);
+		List<Object> objs=syPreAssembledPackingListItemMapper.selectObjs(queryWrapperCount);
 		syPreAssembledPackingListItemMapper.deleteByMainId(id);//将删除状态更改为1
-		return syPreAssembledPackingListMapper.deleteId(id);//将删除状态更改为1
+		int row=syPreAssembledPackingListMapper.deleteId(id);//将删除状态更改为1
+		//根据主表id获取所有的子表信息
+		//问题:这样会查询到上次就已经删除的数据,数据会乱
+		//思路:让上次被删除的数据避免被重用
+		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(id);
+		for(SyPreAssembledPackingListItem item : items2){//要根据这个去改变对应发运明细的剩余数量
+			if(objs.indexOf(item.getId())!=-1){//如果这条数据已经被删除的数据就执行下条数据
+				continue;
+			}
+			//获取发育明细数据
+			SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item.getSyDeclarationElementsItemId());
+			//预装箱单装箱数量-x=剩余数量+x
+			syItem.setSurplusQuantity(syItem.getSurplusQuantity().add(item.getTotal()));
+			syItem.setExcessQuantity(syItem.getSurplusQuantity().subtract(syItem.getShipmentQuantity()));
+			syShippingDetailsItemMapper.updateById(syItem);//修改数据
+		}
+		return row;
 	}
 
 	@Override
@@ -224,9 +253,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 	public Integer delBatchMain(Collection<? extends Serializable> idList) {
 		int row=0;
 		for(Serializable id:idList) {//批处理删除主表数据
-			syPreAssembledPackingListItemMapper.deleteByMainId(id.toString());//将删除状态更改为1
-			//syPreAssembledPackingListMapper.deleteById(id);
-			row=syPreAssembledPackingListMapper.deleteId(id.toString());//将删除状态更改为1
+			delMain(id.toString());
 		}
 		return row;
 	}