diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
index d4592c2..f79561e 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
@@ -9,6 +9,7 @@ import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.aspectj.lang.annotation.Log;
 import com.huaheng.framework.aspectj.lang.constant.BusinessType;
 import com.huaheng.framework.web.controller.BaseController;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
@@ -16,6 +17,7 @@ import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
 import com.huaheng.pc.inventory.adjustDetail.service.AdjustDetailService;
 import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -96,7 +98,36 @@ public class adjustDetailController extends BaseController {
         }
     }
 
+    /**
+     * 只调整数量
+     * 修改
+     */
+    @GetMapping("/adjustEdit")
+    public String editAdjust(Integer id, ModelMap mmap)
+    {
+        AdjustDetail adjustDetailEdit = adjustDetailService.getById(id);
+        mmap.put("adjustDetailEdit", adjustDetailEdit);
+        return prefix + "/adjustEdit";
+    }
 
+    /**
+     * 修改保存调整数量
+     */
+    //@RequiresPermissions("inventory:cyclecountAdjustDetail:addAdjust")
+    @Log(title = "库存-调整单", operating = "调整单调整库存差异,调整数量", action = BusinessType.UPDATE)
+    @PostMapping("/editAdjustSave")
+    @ResponseBody
+    public AjaxResult editAdjustSave(AdjustDetail adjustDetail)
+    {
+        //未上传不允许进行明细差异调整
+//        CyclecountAdjust cyclecountAdjust = cycleconutAdjustService.selectEntityById(cyclecountAdjustDetail.getCyclecountAdjustId());
+//        if(cyclecountAdjust.getStatus() != 30 ){
+//            return AjaxResult.error("单据未上传,没有调整单下发,不允许差异调整!!");
+//            //throw new ServiceException("单据未上传,没有调整单下发,不允许差异调整!");
+//        }
+        AjaxResult result = adjustDetailService.updateAdjustDetail(adjustDetail);
+        return result;
+    }
 
 
 
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
index a467c4b..7302a6b 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/domain/AdjustDetail.java
@@ -34,6 +34,13 @@ public class AdjustDetail implements Serializable {
     private String cycleCountCode;
 
     /**
+     * 库存明细ID
+     */
+    @TableField(value = "inventoryDetailId")
+    @ApiModelProperty(value = "库存明细ID")
+    private Integer inventoryDetailId;
+
+    /**
      * 盘点单号行号
      */
     @TableField(value = "cycleDetailId")
@@ -249,6 +256,18 @@ public class AdjustDetail implements Serializable {
     @TableField(value = "containerCode")
     @ApiModelProperty(value = "容器编码")
     private String containerCode;
+    /**
+     * 更新人
+     * */
+    @TableField(value = "lastUpdatedBy")
+    @ApiModelProperty(value = "更新人")
+    private String lastUpdatedBy;
+    /**
+     * 更新时间
+     */
+    @TableField(value = "lastUpdated")
+    @ApiModelProperty(value = "更新时间")
+    private Date lastUpdated;
 
 
     private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
index 00b7c60..c342752 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailService.java
@@ -1,13 +1,14 @@
 package com.huaheng.pc.inventory.adjustDetail.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
 
 
 
 public interface AdjustDetailService extends IService<AdjustDetail> {
 
-
+    AjaxResult updateAdjustDetail(AdjustDetail adjustDetail);
 
 }
 
diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
index 51de3d6..998d43f 100644
--- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
@@ -1,10 +1,167 @@
 package com.huaheng.pc.inventory.adjustDetail.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.config.container.service.ContainerService;
+import com.huaheng.pc.config.location.service.LocationService;
+import com.huaheng.pc.inventory.adjustHeader.domain.AdjustHeader;
+import com.huaheng.pc.inventory.adjustHeader.service.AdjustHeaderService;
+import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
+import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
+import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
+import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
+import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
+import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
+import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
+import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
+import io.swagger.models.auth.In;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaheng.pc.inventory.adjustDetail.domain.AdjustDetail;
 import com.huaheng.pc.inventory.adjustDetail.mapper.AdjustDetailMapper;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.net.CacheResponse;
+import java.util.Date;
+import java.util.List;
+import java.util.WeakHashMap;
+
 @Service
 public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService {
 
+
+    @Resource
+    private AdjustHeaderService adjustHeaderService;
+    @Resource
+    private CycleCountHeaderService cycleCountHeaderService;
+    @Resource
+    private CycleCountDetailService cycleCountDetailService;
+    @Resource
+    private InventoryHeaderService inventoryHeaderService;
+    @Resource
+    private InventoryDetailService inventoryDetailService;
+    @Resource
+    private InventoryTransactionService inventoryTransactionService;
+    @Resource
+    private LocationService locationService;
+    @Resource
+    private ContainerService containerService;
+
+
+
+
+
+
+
+    /**
+     * 调整库存数量
+     * @param adjustDetail
+     * @return
+     */
+    @Transactional
+    @Override
+    public AjaxResult updateAdjustDetail(AdjustDetail adjustDetail) {
+        /*修改库存数量,调整单据状态,写入库存交易*/
+
+        //已调整过不允许修改。
+        if(adjustDetail.getStatus() == 1){
+            AjaxResult.error("该单据已调整,不允许再次调整!" );
+        }
+        //查询调整的库存明细
+        InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());
+        /*调整后的数量写入库存*/
+        //比较大小可以用 .compareTo()返回值 -1 小于 0 等于 1 大于
+        //Bigdecimal 自带运算方法.add加法 .subtract减法
+
+        if(adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0){
+            //当调整后数量为0时,直接删除该条库存,并写入库存交易
+            //删除库存,并查询当前库位还有没有其他物料,没有则删除库存头,恢复容器和库位状态
+            InventoryDetail inv = new InventoryDetail();
+            inv.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId());
+            inv.setLocationCode(inventoryDetail.getLocationCode());
+            inv.setContainerCode(inventoryDetail.getContainerCode());
+            LambdaQueryWrapper<InventoryDetail> lamdDetail = Wrappers.lambdaQuery(inv);
+            List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lamdDetail);
+            inventoryDetailService.removeById(adjustDetail.getInventoryDetailId());//删除实际库存数量为0的库存明细
+                if(inventoryDetailList.size() == 0){
+                //恢复库位和容器状态,删除库存头
+                inventoryHeaderService.removeById(inventoryDetail.getInventoryHeaderId());
+                locationService.updateContainerCodeAndStatus(inventoryDetail.getLocationCode(),"","empty");
+                containerService.updateLocationCodeAndStatus(inventoryDetail.getContainerCode(),"","empty");
+                }
+            }else{
+            //修改库存
+            //BigDecimal temp =(adjustDetail.getFromQty()).add(adjustDetail.getGapQty());
+            inventoryDetail.setQty(adjustDetail.getToQty());//调整后的数量
+            inventoryDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+            inventoryDetail.setLastUpdated(new Date());
+            inventoryDetailService.saveOrUpdate(inventoryDetail);
+
+        }
+        //写入库存交易记录
+        InventoryTransaction inventoryTransaction = new InventoryTransaction();
+        inventoryTransaction.setWarehouseCode(inventoryDetail.getWarehouseCode());
+        inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode());
+        inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode());
+        inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode());
+        inventoryTransaction.setTransactionType(40);
+        inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode());
+        inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName());
+        inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec());
+        inventoryTransaction.setMaterialUnit(inventoryDetail.getMaterialUnit());
+        inventoryTransaction.setTaskQty(inventoryDetail.getTaskQty());
+        inventoryTransaction.setInventorySts(inventoryDetail.getInventorySts());
+        inventoryTransaction.setReferCode(inventoryDetail.getReferCode());
+        inventoryTransaction.setReferDetailId(inventoryDetail.getReferDetailId());
+        inventoryTransaction.setBatch(inventoryDetail.getBatch());
+        inventoryTransaction.setLot(inventoryDetail.getLot());
+        inventoryTransaction.setProjectNo(inventoryDetail.getProjectNo());
+        inventoryTransaction.setQcCheck(inventoryDetail.getQcCheck());
+        inventoryTransaction.setWeight(inventoryDetail.getWeight());
+        inventoryTransaction.setManufactureDate(inventoryDetail.getManufactureDate());
+        inventoryTransaction.setExpirationDate(inventoryDetail.getExpirationDate());
+        inventoryTransaction.setAgingDate(inventoryDetail.getCreated());
+        inventoryTransaction.setAttributeId(inventoryDetail.getAttributeId());
+        inventoryTransaction.setAttribute1(inventoryDetail.getAttribute1());
+        inventoryTransaction.setAttribute2(inventoryDetail.getAttribute2());
+        inventoryTransaction.setAttribute3(inventoryDetail.getAttribute3());
+//           inventoryTransaction.setLockCode(inventoryDetail.getLockCode());//交易锁
+        inventoryTransaction.setCreated(new Date());
+        inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
+//            inventoryTransaction.setVersion();
+//            inventoryTransaction.setUserDef1();
+//            inventoryTransaction.setUserDef2();
+//            inventoryTransaction.setUserDef3();
+//            inventoryTransaction.setProcessStamp();
+//            inventoryTransaction.setBillCode();
+        inventoryTransaction.setBillDetailId(inventoryDetail.getReceiptDetailId());
+        inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode());
+        inventoryTransactionService.saveOrUpdate(inventoryTransaction);
+
+        //修改调整单明细状态
+        adjustDetail.setStatus(1);
+        adjustDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
+        adjustDetail.setLastUpdated(new Date());
+        this.saveOrUpdate(adjustDetail);
+
+        return AjaxResult.success("调整库存数量成功!");
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 }
diff --git a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
index 91fc8f0..b8fb449 100644
--- a/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/cycleCountHeader/service/CycleCountHeaderServiceImpl.java
@@ -205,6 +205,7 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMap
                 adjustDetail.setAdjustCode(adjustHeader.getCode());
                 adjustDetail.setWarehouseCode(adjustHeader.getWarehouseCode());
                 adjustDetail.setCompanyCode(adjustHeader.getCompanyCode());
+                adjustDetail.setInventoryDetailId(item.getInventoryDetailId());//库存明细
                 adjustDetail.setLocationCode(item.getLocationCode());
                 adjustDetail.setContainerCode(item.getContainerCode());
                 adjustDetail.setCycleCountCode(cyclecountHeader.getCode());
@@ -217,7 +218,8 @@ public class CycleCountHeaderServiceImpl extends ServiceImpl<CycleCountHeaderMap
                 adjustDetail.setToInventorySts(item.getInventorySts());//盘点不涉及属性
                 adjustDetail.setFromInventorySts(item.getInventorySts());
                 adjustDetail.setFromQty(item.getSystemQty());//调整前数量
-                adjustDetail.setToQty(null);//调整后数量
+                BigDecimal toqty = item.getSystemQty().add(item.getGapQty());//调整后数量
+                adjustDetail.setToQty(toqty);
                 adjustDetail.setGapQty(item.getGapQty());//调整数量
                 adjustDetail.setCreated(new Date());
                 adjustDetail.setCreatedBy(ShiroUtils.getLoginName());
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
index f0267c1..10c86ab 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import lombok.Data;
 
@@ -93,7 +94,7 @@ public class InventoryTransaction implements Serializable {
      */
     @TableField(value = "taskQty")
     @ApiModelProperty(value="任务数量")
-    private Integer taskQty;
+    private BigDecimal taskQty;
 
     /**
      * 库存状态
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java
index c67cc88..a9f7ce6 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderService.java
@@ -5,6 +5,7 @@ import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerD
 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentCombinationModel;
 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -28,6 +29,8 @@ public interface ShipmentContainerHeaderService extends IService<ShipmentContain
 
     AjaxResult autoCombination(String shipmentCode);
 
+    AjaxResult autoCombination(List<ShipmentDetail> shipmentDetailList);
+
     AjaxResult checkForCancelCombination(List<Integer> shipmentContainerIds);
 
     AjaxResult createTask(List<Integer> idList);
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
index b761c33..e689b9d 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
@@ -387,16 +387,21 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
     @Override
     @Transactional
     public AjaxResult autoCombination(String shipmentCode) {
-        int num=0;
-        AjaxResult ajaxResult=new AjaxResult();
-
-        LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper=Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode,shipmentCode)
-                .eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
+        LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode, shipmentCode)
+                .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
         List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(lambdaQueryWrapper);
-        if(shipmentDetailList.size()<1 || shipmentDetailList==null){
+        if (shipmentDetailList.size() < 1 || shipmentDetailList == null) {
             return AjaxResult.error("找不到子单链");
         }
+        return this.autoCombination(shipmentDetailList);
+    }
+
+
+    //出库自动组盘
+    public AjaxResult autoCombination(List<ShipmentDetail> shipmentDetailList){
+        int num = 0;
+        List<Integer> list=new ArrayList<>();
         for (ShipmentDetail item : shipmentDetailList) {
             //获取需要出库数量
             BigDecimal shipmentQty = item.getShipQty().subtract(item.getRequestQty());
@@ -412,6 +417,9 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
 //            search.setInventorySts(item.getInventorySts()); //物料状态
 
             List<InventoryDetail> inventoryList = shippingCombinationService.getInventorys(item);
+            if(inventoryList.size() < 1 && item.getWaveId() != 0){
+                return AjaxResult.error("主单为"+item.getShipmentCode()+"子单id为"+item.getId() + "的单据没有库存,波次失败");
+            }
             if (inventoryList.size() < 1) {
                 num = num + 1;
             } else {
@@ -426,11 +434,12 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
                     shipmentCombination.setInventoryDetailId(inventory.getId());
                     shipmentCombination.setShipmentDetailId(item.getId());
                     shipmentCombination.setType((short) 300);
-                    List<Integer> list=new ArrayList<>();
+
                     //如果库存数 >= 待出库数,组盘数就是待出库数并且结束组盘,否则组盘数就是库存数
                     if (inventoryQty.compareTo(shipmentQty) > -1) {
                         shipmentCombination.setShipQty(shipmentQty);
                         ShipmentContainerHeader shipmentContainerHeader=this.combination(shipmentCombination);
+                        list.add(shipmentContainerHeader.getId());
                     } else {
                         shipmentCombination.setShipQty(inventoryQty);
                         ShipmentContainerHeader shipmentContainerHeader=this.combination(shipmentCombination);
@@ -443,7 +452,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         if(num==shipmentDetailList.size()){
             throw new ServiceException("单据物料在此库区没有库存,无法出库");
         }
-        return AjaxResult.success("成功");
+        return AjaxResult.success("成功",list);
     }
 
     /**
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
index 306f83c..75aa9fa 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
+++ b/src/main/java/com/huaheng/pc/shipment/wave/controller/WaveController.java
@@ -165,9 +165,12 @@ public class WaveController extends BaseController {
     @Log(title = "出库-波次", operating = "开始波次", action = BusinessType.UPDATE)
     @PostMapping("/startWave")
     @ResponseBody
-    public AjaxResult editSave(Wave wave) {
-        wave.setLastUpdatedBy(ShiroUtils.getLoginName());
-        return toAjax(waveService.updateById(wave));
+    public AjaxResult starWave(String ids) {
+        if (StringUtils.isEmpty(ids)){
+            return AjaxResult.error("id不能为空");
+        }
+        AjaxResult result=waveService.startWave(ids);
+        return result;
     }
 
 }
diff --git a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
index b170945..d0bf227 100644
--- a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
+++ b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java
@@ -1,11 +1,57 @@
 package com.huaheng.pc.shipment.wave.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.common.support.Convert;
+import com.huaheng.common.utils.security.ShiroUtils;
+import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
+import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
+import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
 import com.huaheng.pc.shipment.wave.domain.Wave;
 import com.huaheng.pc.shipment.wave.mapper.WaveMapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 @Service
 public class WaveService extends ServiceImpl<WaveMapper, Wave> {
 
+
+    @Autowired
+    private ShipmentDetailService shipmentDetailService;
+    @Autowired
+    private ShipmentContainerHeaderService shipmentContainerHeaderService;
+
+    //开始波次,对带有此波次号的单据进行后续的后台操作
+
+    @Transactional
+    public AjaxResult startWave(String ids) {
+        List<ShipmentDetail> list = new ArrayList<>();
+        for (Integer id : Convert.toIntArray(ids)) {
+            //找到此波次的单据
+            LambdaQueryWrapper<ShipmentDetail> lam = Wrappers.lambdaQuery();
+            lam.eq(ShipmentDetail::getWaveId,id)
+                .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
+            List<ShipmentDetail> shipmentDetails=shipmentDetailService.list(lam);
+
+            //整合所有加入波次的单据
+            if(shipmentDetails != null){
+                list.addAll(shipmentDetails);
+            }
+        }
+
+        //自动组盘
+        AjaxResult ajaxResult=shipmentContainerHeaderService.autoCombination(list);
+        if(ajaxResult.getData() != null){
+            //生成任务
+            shipmentContainerHeaderService.createTask(Arrays.asList(Convert.toIntArray(ajaxResult.getData().toString())));
+        }
+        return AjaxResult.success("波次运行成功");
+    }
 }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
index 173af93..59a21d0 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
@@ -502,6 +502,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                     detail.setMaterialCode(DataUtils.getString(map.get("materialCode")));//物料号
                     detail.setMaterialName(DataUtils.getString(map.get("materialName")));//物料名称
                     detail.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格
+                    detail.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位
                     detail.setReceiptCode(DataUtils.getString(map.get("receiptCode")));//入库单编码
                     detail.setReceiptDetailId(DataUtils.getInteger(map.get("receiptDetailId")));//入库单明细ID
                     detail.setBatch(DataUtils.getString(map.get("batch")));//批次
@@ -534,6 +535,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 inventoryTransaction.setContainerCode(DataUtils.getString(map.get("containerCode")));
                 inventoryTransaction.setMaterialCode(DataUtils.getString(map.get("materialCode")));
                 inventoryTransaction.setMaterialName(DataUtils.getString(map.get("materialName")));
+                inventoryTransaction.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格
+                inventoryTransaction.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位
                 inventoryTransaction.setBillCode(DataUtils.getString(map.get("receiptCode")));
                 inventoryTransaction.setBillDetailId(DataUtils.getInteger(map.get("receiptDetailId")));
                 inventoryTransaction.setBatch(DataUtils.getString(map.get("batch")));
@@ -541,7 +544,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
 //                inventoryTransaction.setManufactureDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("manufactureDate").toString()));//生产日期
 //                inventoryTransaction.setExpirationDate(DataUtils.getDateTime(map.get("expirationDate")));
                 inventoryTransaction.setInventorySts(DataUtils.getString((map.get("inventorySts"))));
-                inventoryTransaction.setTaskQty(DataUtils.getInteger(map.get("qty")));
+                inventoryTransaction.setTaskQty(DataUtils.getBigDecimal(map.get("qty")));
                 inventoryTransaction.setCreated(new Date());
                 inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
                 if (!inventoryTransactionService.save(inventoryTransaction))
@@ -774,7 +777,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             inventoryTransaction.setMaterialName(item.getMaterialName());
             inventoryTransaction.setMaterialSpec(item.getMaterialSpec());
             inventoryTransaction.setMaterialUnit(item.getMaterialUnit());
-            inventoryTransaction.setTaskQty(0);
+            inventoryTransaction.setTaskQty(BigDecimal.ZERO);
             inventoryTransaction.setInventorySts(item.getInventorySts());
             //inventoryTransaction.setReferCode();
             //inventoryTransaction.setQcCheck();
@@ -1229,7 +1232,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 inventoryTransaction.setExpirationDate(shipmentDetail.getExpirationDate());
                 inventoryTransaction.setInventorySts(inventoryDetail.getInventorySts());
                 //这里取反,更符合出库的语义,同时方便对记录进行统计
-                inventoryTransaction.setTaskQty(taskDetail.getQty().intValue());
+                inventoryTransaction.setTaskQty(taskDetail.getQty());
 //                inventoryTransaction.setCostPrice(shipmentDetail.);
                 inventoryTransaction.setCreated(null);
                 inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());
@@ -1293,8 +1296,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         shipmentContainerHeaderLambdaUpdateWrapper.eq(ShipmentContainerHeader::getId,task.getAllocationHeadId());
         if (! shipmentContainerHeaderService.update(shipmentContainerHeader, shipmentContainerHeaderLambdaUpdateWrapper))
             throw new ServiceException("更新组盘头状态失败");
-
-
                    //修改出库单状态
                     LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
                     taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId,task.getId());
diff --git a/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml
index ecc41cb..7215083 100644
--- a/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml
+++ b/src/main/resources/mybatis/inventory/AdjustDetailMapper.xml
@@ -6,6 +6,7 @@
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="adjustCode" jdbcType="VARCHAR" property="adjustCode" />
     <result column="cycleCountCode" jdbcType="VARCHAR" property="cycleCountCode" />
+    <result column="inventoryDetailId" jdbcType="INTEGER" property="inventoryDetailId" />
     <result column="cycleDetailId" jdbcType="INTEGER" property="cycleDetailId" />
     <result column="checkCode" jdbcType="VARCHAR" property="checkCode" />
     <result column="checkDetailId" jdbcType="VARCHAR" property="checkDetailId" />
@@ -29,6 +30,8 @@
     <result column="status" jdbcType="INTEGER" property="status" />
     <result column="createdBy" jdbcType="VARCHAR" property="createdBy" />
     <result column="created" jdbcType="TIMESTAMP" property="created" />
+    <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" />
+    <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" />
     <result column="agreeBy" jdbcType="VARCHAR" property="agreeBy" />
     <result column="agreeTime" jdbcType="TIMESTAMP" property="agreeTime" />
     <result column="Remark" jdbcType="VARCHAR" property="remark" />
@@ -40,10 +43,10 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, adjustCode, cycleCountCode, cycleDetailId, checkCode, checkDetailId, referCode,
+    id, adjustCode, cycleCountCode, inventoryDetailId, cycleDetailId, checkCode, checkDetailId, referCode,
     referDetailId, warehouseCode, companyCode, containerCode, locationCode ,materialCode, materialName,
     materialSpec, materialUnit, problemType, attributeId, fromInventorySts, toInventorySts, 
-    fromQty, toQty, gapQty, `status`, created, createdBy, agreeTime, Remark,
+    fromQty, toQty, gapQty, `status`, created, createdBy,lastUpdatedBy,lastUpdated, agreeTime, Remark,
     version, userDef1, userDef2, userDef3, processStamp
   </sql>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
index a20ecc1..9b50d13 100644
--- a/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
+++ b/src/main/resources/mybatis/inventory/InventoryTransactionMapper.xml
@@ -13,7 +13,7 @@
     <result column="materialName" jdbcType="VARCHAR" property="materialName" />
     <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec" />
     <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit" />
-    <result column="taskQty" jdbcType="INTEGER" property="taskQty" />
+    <result column="taskQty" jdbcType="DECIMAL" property="taskQty" />
     <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts" />
     <result column="referCode" jdbcType="VARCHAR" property="referCode" />
     <result column="referDetailId" jdbcType="VARCHAR" property="referDetailId" />
diff --git a/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
index d9f885d..700cd04 100644
--- a/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
+++ b/src/main/resources/templates/inventory/adjustDetail/adjustDetail.html
@@ -94,18 +94,13 @@
             <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()">
                 <i class="fa fa-plus"></i> 新增
             </a>
-            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"/>
-            &lt;!&ndash;shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"&ndash;&gt;
+            <a class="btn btn-outline btn-primary btn-rounded" onclick="">
+                <i class="fa fa-edit"></i> 审核
+            </a>
+            <a class="btn btn-outline btn-danger btn-rounded" onclick="addAdjust()"/>
+            <!--shiro:hasPermission="inventory:cyclecountAdjustDetail:addAdjust"-->
             <i class="fa fa-vcard"></i>调整
-            </a>-->
-            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="createCyclecountWithGapQty()"
-                shiro:hasPermission="inventoryHeader:cycleCountDetail:cyclecountRepeat">
-                 <i class="fa fa-vcard"></i> 差异复盘
-             </a>-->
-            <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="adjust()"
-               shiro:hasPermission="inventoryHeader:cycleCountDetail:adjust">
-                <i class="fa fa-vcard"></i> 差异库存调整
-            </a>-->
+            </a>
             <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.table.refresh()">
                 <i class="fa fa-refresh"></i> 刷新
             </a>-->
@@ -138,15 +133,15 @@
                 {
                     radio: true
                 },
-                {
+                /*{
                     title: '调整操作',
                     align: 'center',
                     formatter: function (value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="$.operate.addAdjust()"><i class="fa fa-trash-o"></i>调整</a> ');
+                        actions.push('<a class="btn btn-warning btn-xs " href="#" onclick="addAdjust(\'' + row.id + '\')"><i class="fa fa-send"></i>&nbsp;调整</a> ');
                         return actions.join('');
                     }
-                },
+                },*/
                 {
                     field: 'id',
                     title: '明细id',
@@ -158,6 +153,12 @@
                     visible: true
                 },
                 {
+                    field: 'inventoryDetailId',
+                    title: '库存明细',
+                    visible: true
+                },
+
+                {
                     field: 'warehouseCode',
                     title: '仓库',
                     visible: false
@@ -380,21 +381,13 @@
 
         $.modal.confirm("注意:该操作将更改库存,当实盘数量为0且库位上只剩空容器时,请手动执行空托出库任务,容器上有货则无需其他操作!",
             function () {
-                var cyclecountAdjustId = $('#cyclecountAdjustId').val();
-                var companyCode = $('#companyCode').val();
-                var code = $('#code').val();
-                var cyclecountHeadCode = $('#sourceCode').val();
-                //判断有没有选取明细条目,进的页面不同
-                if (row.length !== 0) {
                     /*判断是否已经调整过*/
-                    if (row[0].status == 40) {
+                    if (row[0].status == 2) {
                         $.modal.msg('该条明细已调整,请勿重复调整!')
                     } else {
                         $.modal.open("差异调整单", prefix + "/adjustEdit?id=" + row[0].id)
                     }
-                } else {
-                    $.modal.open("调整单", prefix + "/addAdjust?cyclecountAdjustId=" + cyclecountAdjustId + "&companyCode=" + companyCode + "&code=" + code + "&cyclecountHeadCode=" + cyclecountHeadCode);
-                }
+
             });
     }