Selaa lähdekoodia

码盘上架接口修改

andy 2 vuotta sitten
vanhempi
commit
e1e8aaecac
28 muutettua tiedostoa jossa 434 lisäystä ja 245 poistoa
  1. 28 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java
  2. 4 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/asn/WmsDocAsnHeaderController.java
  3. 3 4
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/order/WmsDocOrderHeaderController.java
  4. 2 2
      ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java
  5. 10 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/form/PaForm.java
  6. 9 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/form/UnlockForm.java
  7. 6 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnDetailsService.java
  8. 24 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnHeaderService.java
  9. 114 4
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java
  10. 27 4
      warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java
  11. 9 0
      warewms-ams/src/main/java/com/ruoyi/ams/config/domain/dto/AgvCallDTO.java
  12. 1 0
      warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/form/InvLotLocIdMoveForm.java
  13. 10 0
      warewms-ams/src/main/java/com/ruoyi/ams/inv/mapper/InvLotLocIdMapper.java
  14. 8 0
      warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java
  15. 23 24
      warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/ActTransactionLogServiceImpl.java
  16. 14 24
      warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotAttServiceImpl.java
  17. 31 9
      warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java
  18. 10 0
      warewms-ams/src/main/java/com/ruoyi/ams/lineCall/domain/form/LineCallListFrom.java
  19. 24 18
      warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml
  20. 1 1
      warewms-ams/src/main/resources/mapper/ams/WmsDocAsnDetailsMapper.xml
  21. 1 1
      warewms-ams/src/main/resources/mapper/docOrder/WmsDocOrderDetailsMapper.xml
  22. 40 0
      warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java
  23. 0 16
      warewms-base/src/main/java/com/ruoyi/base/mapper/SysIdsequenceMapper.java
  24. 7 0
      warewms-base/src/main/java/com/ruoyi/base/service/IBaseIdsequenceService.java
  25. 0 22
      warewms-base/src/main/java/com/ruoyi/base/service/SysIdsequenceService.java
  26. 28 0
      warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseIdsequenceServiceImpl.java
  27. 0 83
      warewms-base/src/main/java/com/ruoyi/base/service/impl/SysIdsequenceServiceImpl.java
  28. 0 30
      warewms-base/src/main/resources/mapper/base/SysIdsequenceMapper.xml

+ 28 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -1,7 +1,9 @@
 package com.ruoyi.web.controller.warewms.pda;
 
 import com.alibaba.fastjson.JSON;
+import com.ruoyi.ams.asn.form.PaForm;
 import com.ruoyi.ams.asn.form.StockForm;
+import com.ruoyi.ams.asn.form.UnlockForm;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
 import com.ruoyi.ams.business.IBusinessService;
 import com.ruoyi.ams.common.vo.DictVO;
@@ -135,6 +137,32 @@ public class PdaController {
         return codeSkuRelationshipService.snCheck(sn);
     }
 
+
+    @PostMapping("/docAsn/doPa")
+    public AjaxResult doPa(@RequestBody PaForm paForm) {
+        if (StringUtils.isEmpty(paForm.getPalletNo())) {
+            return AjaxResult.error("托盘号不能为空");
+        }
+        if (StringUtils.isEmpty(paForm.getLocationFrom())) {
+            return AjaxResult.error("起始库位不能为空");
+        }
+        if (StringUtils.isEmpty(paForm.getLocationTo())) {
+            return AjaxResult.error("目标库位不能为空");
+        }
+        return wmsDocAsnHeaderService.doPa(paForm);
+    }
+
+    /**
+     * 解绑
+     *
+     * @param unlockForm
+     * @return
+     */
+    @PostMapping("/docAsn/unloadStock")
+    public AjaxResult unloadStock(@RequestBody UnlockForm unlockForm) {
+        return wmsDocAsnHeaderService.unloadStock(unlockForm);
+    }
+
     @GetMapping("/lineCall/flowList")
     public AjaxResult flowList() {
         PageUtils.startPage();

+ 4 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/asn/WmsDocAsnHeaderController.java

@@ -7,7 +7,8 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
-import com.ruoyi.base.service.SysIdsequenceService;
+import com.ruoyi.base.domain.BaseIdsequence;
+import com.ruoyi.base.service.IBaseIdsequenceService;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,7 +42,7 @@ public class WmsDocAsnHeaderController extends BaseController {
     @Autowired
     private IWmsDocAsnHeaderService wmsDocAsnHeaderService;
     @Autowired
-    private SysIdsequenceService sysIdsequenceService;
+    private IBaseIdsequenceService baseIdsequenceService;
     @Autowired
     private IWmsDocAsnDetailsService wmsDocAsnDetailsService;
 
@@ -139,7 +140,7 @@ public class WmsDocAsnHeaderController extends BaseController {
         WmsDocAsnHeader docAsnHeader = new WmsDocAsnHeader();
         LoginUser loginUser = getLoginUser();
         if (asnNo == null || "undefine".equals(asnNo)) {
-            asnNo = sysIdsequenceService.getCurrent("ASNNO");
+            asnNo = baseIdsequenceService.getCurrent("ASNNO");
             Date now = new Date();
             docAsnHeader.setAsnNo(asnNo);
             docAsnHeader.setCreateBy(loginUser.getUsername());

+ 3 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/order/WmsDocOrderHeaderController.java

@@ -4,10 +4,9 @@ import java.util.Date;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
-import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.form.AllocationForm;
-import com.ruoyi.base.service.SysIdsequenceService;
+import com.ruoyi.base.service.IBaseIdsequenceService;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +39,7 @@ public class WmsDocOrderHeaderController extends BaseController {
     @Autowired
     private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
     @Autowired
-    private SysIdsequenceService sysIdsequenceService;
+    private IBaseIdsequenceService baseIdsequenceService;
 
     /**
      * 查询出库单头列表
@@ -112,7 +111,7 @@ public class WmsDocOrderHeaderController extends BaseController {
         WmsDocOrderHeader orderHeader = new WmsDocOrderHeader();
         LoginUser loginUser = getLoginUser();
         if (orderNo == null || "undefine".equals(orderNo)) {
-            orderNo = sysIdsequenceService.getCurrent("ORDERNO");
+            orderNo = baseIdsequenceService.getCurrent("ORDERNO");
             Date now = new Date();
             orderHeader.setOrderNo(orderNo);
             orderHeader.setCreateBy(loginUser.getUsername());

+ 2 - 2
ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java

@@ -30,9 +30,9 @@ import com.ruoyi.base.domain.BaseWarehouse;
 import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
 import com.ruoyi.base.mapper.BaseLocationInfoMapper;
 import com.ruoyi.base.mapper.BaseSkuMapper;
+import com.ruoyi.base.service.IBaseIdsequenceService;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseWarehouseService;
-import com.ruoyi.base.service.SysIdsequenceService;
 import com.ruoyi.base.utils.IdSequenceUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -61,7 +61,7 @@ public class WarehouseTest {
     @Autowired
     private IBusinessService businessService;
     @Autowired
-    private SysIdsequenceService sysIdsequenceService;
+    private IBaseIdsequenceService sysIdsequenceService;
     @Autowired
     private BaseSkuMapper baseSkuMapper;
     @Autowired

+ 10 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/form/PaForm.java

@@ -0,0 +1,10 @@
+package com.ruoyi.ams.asn.form;
+
+import lombok.Data;
+
+@Data
+public class PaForm {
+    private String palletNo;
+    private String locationFrom;
+    private String locationTo;
+}

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/form/UnlockForm.java

@@ -0,0 +1,9 @@
+package com.ruoyi.ams.asn.form;
+
+import lombok.Data;
+
+@Data
+public class UnlockForm {
+    private String palletNo;
+    private String skuSN;
+}

+ 6 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnDetailsService.java

@@ -67,5 +67,11 @@ public interface IWmsDocAsnDetailsService
      */
      int deleteWmsDocAsnDetailsByAsnLineNo(Long asnLineNo);
 
+    /**
+     * 根据单号和明细删除
+     * @param asnNo
+     * @param asnLineNo
+     * @return
+     */
      int deleteWmsDocAsnDetailsByAsnNoLineNo(String asnNo,Long asnLineNo);
 }

+ 24 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnHeaderService.java

@@ -4,7 +4,9 @@ import java.util.List;
 
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
+import com.ruoyi.ams.asn.form.PaForm;
 import com.ruoyi.ams.asn.form.StockForm;
+import com.ruoyi.ams.asn.form.UnlockForm;
 import com.ruoyi.common.core.domain.AjaxResult;
 
 /**
@@ -101,4 +103,26 @@ public interface IWmsDocAsnHeaderService {
      * @return
      */
     AjaxResult doStock(StockForm stockForm);
+
+    /**
+     * 上架
+     * @param paForm
+     * @return
+     */
+    AjaxResult doPa(PaForm paForm);
+
+    /**
+     * 解绑物料
+     * @param unlockForm
+     * @return
+     */
+    AjaxResult unloadStock(UnlockForm unlockForm);
+
+    /**
+     * 检查关闭表头
+     * @param asnNo
+     * @param asnLineNo
+     * @return
+     */
+    int closeHeader(String asnNo,Long asnLineNo);
 }

+ 114 - 4
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -4,14 +4,20 @@ import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 
+import com.ruoyi.ams.asn.form.PaForm;
 import com.ruoyi.ams.asn.form.StockForm;
 import com.ruoyi.ams.asn.form.StockInfoForm;
+import com.ruoyi.ams.asn.form.UnlockForm;
 import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
 import com.ruoyi.ams.box.domain.WmsBoxInfo;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
 import com.ruoyi.ams.config.domain.dto.LotattDTO;
+import com.ruoyi.ams.inv.domain.ActTransactionLog;
 import com.ruoyi.ams.inv.domain.InvLotAtt;
 import com.ruoyi.ams.inv.domain.InvLotLocId;
+import com.ruoyi.ams.inv.domain.form.InvLotLocIdMoveForm;
+import com.ruoyi.ams.inv.service.IActTransactionLogService;
+import com.ruoyi.ams.inv.service.IInvLotAttService;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
@@ -20,6 +26,7 @@ import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseSku;
 import com.ruoyi.base.service.IBaseSkuService;
+import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
@@ -56,6 +63,14 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
     private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
     @Autowired
     private IBaseSkuService baseSkuService;
+    @Autowired
+    private IWmsBoxInfoService wmsBoxInfoService;
+    @Autowired
+    private IActTransactionLogService actTransactionLogService;
+    @Autowired
+    private IdSequenceUtils idSequenceUtils;
+    @Autowired
+    private IInvLotAttService invLotAttService;
 
     /**
      * 查询入库单
@@ -237,6 +252,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         } else {
             wmsBoxInfo.setBoxState(1);
             wmsBoxInfo.setIsFull(stockForm.getFullTag());
+            wmsBoxInfo.setLocationId(Long.parseLong(STAGE01));
             boxInfoService.updateWmsBoxInfo(wmsBoxInfo);
         }
 
@@ -258,7 +274,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             queryAtt.setSku(s.getSku());
             queryAtt.setLotatt02(s.getSkuSn());
             List<InvLotLocId> invList = invLotLocIdService.queryInvByInvLotatt(queryAtt, stockForm.getPalletNo());
-            if (invList != null && invList.size() > 0) {
+            if (invList != null && invList.size() > 1) {
                 throw new ServiceException("每个成品条码只允许码一次");
             }
 
@@ -270,7 +286,10 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             if (stockForm.getStockTag().equals("Y")) {
                 //如果是备货需要判断入库单
                 WmsDocOrderDetails od = orderMap.get(s.getSku());
-                if (od.getQtyOrdered().subtract(new BigDecimal(s.getQty())).compareTo(BigDecimal.ZERO) != 1) {
+//                if (od.getQtyOrdered().subtract(new BigDecimal(s.getQty())).compareTo(BigDecimal.ZERO) != 1) {
+//                    throw new ServiceException("备货数量超出出库单需求数量");
+//                }
+                if (od.getQtyOrdered().compareTo(new BigDecimal(s.getQty()).add(od.getQtySoftAllocated())) == -1) {
                     throw new ServiceException("备货数量超出出库单需求数量");
                 }
                 //更新出库单备货数量
@@ -290,12 +309,31 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             //更新数量
             asnDetails.setReceivedQty(asnDetails.getReceivedQty().add(new BigDecimal(s.getQty())));
             String asnStatus = "30";
-            if (asnDetails.getReceivedQty().add(new BigDecimal(s.getQty())).compareTo(asnDetails.getExpectedQty()) == 0) {
+            if (asnDetails.getReceivedQty().compareTo(asnDetails.getExpectedQty()) == 0) {
                 asnStatus = "40";
+                boolean isClose = true;
+                WmsDocAsnDetails query = new WmsDocAsnDetails();
+                query.setAsnNo(s.getAsnNo());
+                List<WmsDocAsnDetails> detailsList = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsList(query);
+                if (detailsList != null && detailsList.size() > 0) {
+                    for (WmsDocAsnDetails de : detailsList) {
+                        if (de.getLineStatus().equals("30")) {
+                            isClose = false;
+                        }
+                    }
+                }
+                WmsDocAsnHeader updateStatus = new WmsDocAsnHeader();
+                if (isClose) {
+                    updateStatus.setAsnStatus("40");
+                } else {
+                    updateStatus.setAsnStatus("30");
+                }
+                wmsDocAsnHeaderMapper.updateWmsDocAsnHeader(updateStatus);
             }
+
             //更新入库单数量
             wmsDocAsnDetailsMapper.updateWmsReceivedQty(asnDetails.getAsnNo(), asnDetails.getAsnLineNo().intValue(), new BigDecimal(s.getQty()), asnStatus);
-            if(!StringUtils.isEmpty(stockForm.getOrderNo())) {
+            if (!StringUtils.isEmpty(stockForm.getOrderNo())) {
                 //绑定对应入库单号
                 WmsDocAsnDetails updateDetails = new WmsDocAsnDetails();
                 updateDetails.setAsnNo(asnDetails.getAsnNo());
@@ -304,7 +342,79 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
                 updateDetails.setdEdi02(s.getSkuSn());//产品sn
                 wmsDocAsnDetailsMapper.updateWmsDocAsnDetails(updateDetails);
             }
+
         }
         return AjaxResult.success("操作成功");
     }
+
+    @Transactional
+    @Override
+    public AjaxResult doPa(PaForm paForm) {
+        //绑定托盘
+        String palletNo = paForm.getPalletNo();
+        WmsBoxInfo wmsBoxInfo = new WmsBoxInfo();
+        wmsBoxInfo.setBoxNo(palletNo);
+        wmsBoxInfo = wmsBoxInfoService.selectWmsBoxInfoByModel(wmsBoxInfo);
+        if (wmsBoxInfo == null) {
+            throw new ServiceException("托盘不存在");
+        }
+        wmsBoxInfo.setLocationId(Long.parseLong(paForm.getLocationTo()));
+        int result = wmsBoxInfoService.updateWmsBoxInfo(wmsBoxInfo);
+        if (result <= 0) {
+            throw new ServiceException("托盘绑定更新失败");
+        }
+        //库存移动
+        InvLotLocIdMoveForm moveForm = new InvLotLocIdMoveForm();
+        moveForm.setLocationFrom(paForm.getLocationFrom());
+        moveForm.setLocationTo(paForm.getLocationTo());
+        moveForm.setIsCallCar("N");
+
+        //更新明细状态
+
+
+        List<InvLotLocId> invLotLocIdList = invLotLocIdService.queryInvByInvLotatt(null, palletNo);
+        InvLotAtt invLotAtt = null;
+        if (invLotLocIdList != null && invLotLocIdList.size() > 0) {
+            for (InvLotLocId inv : invLotLocIdList) {
+                invLotAtt = invLotAttService.selectInvLotAttByLotnum(inv.getLotnum());
+                break;
+            }
+        }
+
+        String lotatt08 = invLotAtt.getLotatt08();
+        WmsDocAsnDetails query = new WmsDocAsnDetails();
+        query.setAsnNo(lotatt08);
+        List<WmsDocAsnDetails> detailsList = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsList(query);
+        if (detailsList != null && detailsList.size() > 0) {
+            for (WmsDocAsnDetails de : detailsList) {
+                de.setLineStatus("60");
+                wmsDocAsnDetailsMapper.updateWmsDocAsnDetails(de);
+            }
+        }
+        WmsDocAsnHeader updateStatus = new WmsDocAsnHeader();
+        updateStatus.setAsnStatus("60");
+        wmsDocAsnHeaderMapper.updateWmsDocAsnHeader(updateStatus);
+
+        //TODO 修改上架数量
+        //TODO 事务日志
+        String tracNo = idSequenceUtils.generateId("TRANSACTIONID");
+        ActTransactionLog paLog = new ActTransactionLog();
+        paLog.setTransactionId(tracNo);
+        paLog.setTransactionType(Constant.Transaction_TYPE.PA.getValue());
+        //paLog.setDocNo();
+        actTransactionLogService.insertActTransactionLog(paLog);
+        return invLotLocIdService.move(moveForm);
+    }
+
+    @Override
+    public AjaxResult unloadStock(UnlockForm unlockForm) {
+
+        return null;
+    }
+
+    @Override
+    public int closeHeader(String asnNo, Long asnLineNo) {
+
+        return 0;
+    }
 }

+ 27 - 4
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ruoyi.ams.business;
 
+import com.ruoyi.ams.box.domain.WmsBoxInfo;
+import com.ruoyi.ams.box.service.IWmsBoxInfoService;
 import com.ruoyi.ams.business.domain.FilterLockInvLocationDTO;
 import com.ruoyi.ams.config.domain.AsnSoStrategy;
 import com.ruoyi.ams.config.domain.dto.*;
@@ -54,6 +56,8 @@ public class BusinessServiceImpl implements IBusinessService {
     private IBaseSkuService baseSkuService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private IWmsBoxInfoService wmsBoxInfoService;
 
     @Transactional
     @Override
@@ -173,11 +177,30 @@ public class BusinessServiceImpl implements IBusinessService {
                             trySize--;
                         }
                     }
+                } else if (flowConfigHeaderVO.getFlowType().equals("RECEIPT")) {
+                    //绑定收货库位库存到起始库位
+                    String palletNo = agvCallDTO.getPalletNo();
+                    WmsBoxInfo wmsBoxInfo = new WmsBoxInfo();
+                    wmsBoxInfo.setBoxNo(palletNo);
+                    wmsBoxInfo = wmsBoxInfoService.selectWmsBoxInfoByModel(wmsBoxInfo);
+                    if (wmsBoxInfo == null) {
+                        throw new ServiceException("托盘不存在");
+                    }
+                    wmsBoxInfo.setLocationId(Long.parseLong(agvCallDTO.getLocationFrom()));
+                    int result = wmsBoxInfoService.updateWmsBoxInfo(wmsBoxInfo);
+                    if (result <= 0) {
+                        throw new ServiceException("托盘绑定更新失败");
+                    }
+                    //锁定库位
+                    if (!redisCache.lockCacheObject(locationFrom.getId().toString(), "", token)) {
+                        throw new ServiceException("库位锁定失败");
+                    }
+                    if (!redisCache.lockCacheObject(locationTo.getId().toString(), "", token)) {
+                        throw new ServiceException("库位锁定失败");
+                    }
+                    //生成任务
+                    this.genTask(locationFrom, locationTo, flowConfigHeaderVO, token);
                 }
-
-//        for (WcsTask wcsTask : wcsTaskList) {
-//            this.addTask(wcsTask);
-//        }
             }
             return AjaxResult.success("任务下发成功");
         } catch (Exception e) {

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/config/domain/dto/AgvCallDTO.java

@@ -8,6 +8,7 @@ import java.util.List;
  */
 public class AgvCallDTO {
     private Long id;
+    private String palletNo;
     private String locationFrom;
     private String locationTo;
     private Long warehouseId;
@@ -52,4 +53,12 @@ public class AgvCallDTO {
     public void setWarehouseId(Long warehouseId) {
         this.warehouseId = warehouseId;
     }
+
+    public String getPalletNo() {
+        return palletNo;
+    }
+
+    public void setPalletNo(String palletNo) {
+        this.palletNo = palletNo;
+    }
 }

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/domain/form/InvLotLocIdMoveForm.java

@@ -20,5 +20,6 @@ public class InvLotLocIdMoveForm extends BaseEntity {
     @NotBlank(message = "是否叫车不能为空!")
     private String isCallCar;
     private String reason;
+    private String palletNo;
     private Long warehouseId;
 }

+ 10 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/mapper/InvLotLocIdMapper.java

@@ -8,6 +8,7 @@ import com.ruoyi.ams.inv.domain.InvLotLocId;
 import com.ruoyi.ams.inv.domain.form.InvLocIdSearchFrom;
 import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
 import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
+import com.ruoyi.common.core.domain.AjaxResult;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -183,4 +184,13 @@ public interface InvLotLocIdMapper {
      * @return
      */
     List<InvLotLocId> queryInvByFull(@Param("orderNo") String orderNo, @Param("sku") String sku);
+
+    /**
+     * 解绑库存
+     * @param locationId
+     * @param sku
+     * @param customerId
+     * @return
+     */
+    AjaxResult unlockInv(@Param("locationId") Long locationId, @Param("sku") String sku, @Param("customerId") String customerId);
 }

+ 8 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -189,4 +189,12 @@ public interface IInvLotLocIdService {
      * @return
      */
     List<InvLotLocId> queryInvByFull(String orderNo, String sku);
+
+    /**
+     * 根据托盘解绑库存
+     *
+     * @param palletNo
+     * @return
+     */
+    AjaxResult unLockInvByPalletNo(String palletNo,String sn);
 }

+ 23 - 24
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/ActTransactionLogServiceImpl.java

@@ -1,6 +1,11 @@
 package com.ruoyi.ams.inv.service.impl;
 
+import java.util.Date;
 import java.util.List;
+
+import com.ruoyi.base.utils.IdSequenceUtils;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.ams.inv.mapper.ActTransactionLogMapper;
@@ -9,37 +14,36 @@ import com.ruoyi.ams.inv.service.IActTransactionLogService;
 
 /**
  * 库存事务Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2022-10-11
  */
 @Service
-public class ActTransactionLogServiceImpl implements IActTransactionLogService 
-{
+public class ActTransactionLogServiceImpl implements IActTransactionLogService {
     @Autowired
     private ActTransactionLogMapper actTransactionLogMapper;
+    @Autowired
+    private IdSequenceUtils idSequenceUtils;
 
     /**
      * 查询库存事务
-     * 
+     *
      * @param transactionId 库存事务主键
      * @return 库存事务
      */
     @Override
-    public ActTransactionLog selectActTransactionLogByTransactionId(String transactionId)
-    {
+    public ActTransactionLog selectActTransactionLogByTransactionId(String transactionId) {
         return actTransactionLogMapper.selectActTransactionLogByTransactionId(transactionId);
     }
 
     /**
      * 查询库存事务列表
-     * 
+     *
      * @param actTransactionLog 库存事务
      * @return 库存事务
      */
     @Override
-    public List<ActTransactionLog> selectActTransactionLogList(ActTransactionLog actTransactionLog)
-    {
+    public List<ActTransactionLog> selectActTransactionLogList(ActTransactionLog actTransactionLog) {
         return actTransactionLogMapper.selectActTransactionLogList(actTransactionLog);
     }
 
@@ -50,10 +54,9 @@ public class ActTransactionLogServiceImpl implements IActTransactionLogService
      * @return 库存事务
      */
     @Override
-    public ActTransactionLog selectActTransactionLogByModel(ActTransactionLog actTransactionLog)
-    {
+    public ActTransactionLog selectActTransactionLogByModel(ActTransactionLog actTransactionLog) {
         List<ActTransactionLog> list = actTransactionLogMapper.selectActTransactionLogList(actTransactionLog);
-        if (list!=null && list.size()>0) {
+        if (list != null && list.size() > 0) {
             return list.get(0);
         } else {
             return null;
@@ -62,49 +65,45 @@ public class ActTransactionLogServiceImpl implements IActTransactionLogService
 
     /**
      * 新增库存事务
-     * 
+     *
      * @param actTransactionLog 库存事务
      * @return 结果
      */
     @Override
-    public int insertActTransactionLog(ActTransactionLog actTransactionLog)
-    {
+    public int insertActTransactionLog(ActTransactionLog actTransactionLog) {
         return actTransactionLogMapper.insertActTransactionLog(actTransactionLog);
     }
 
     /**
      * 修改库存事务
-     * 
+     *
      * @param actTransactionLog 库存事务
      * @return 结果
      */
     @Override
-    public int updateActTransactionLog(ActTransactionLog actTransactionLog)
-    {
+    public int updateActTransactionLog(ActTransactionLog actTransactionLog) {
         return actTransactionLogMapper.updateActTransactionLog(actTransactionLog);
     }
 
     /**
      * 批量删除库存事务
-     * 
+     *
      * @param transactionIds 需要删除的库存事务主键
      * @return 结果
      */
     @Override
-    public int deleteActTransactionLogByTransactionIds(String[] transactionIds)
-    {
+    public int deleteActTransactionLogByTransactionIds(String[] transactionIds) {
         return actTransactionLogMapper.deleteActTransactionLogByTransactionIds(transactionIds);
     }
 
     /**
      * 删除库存事务信息
-     * 
+     *
      * @param transactionId 库存事务主键
      * @return 结果
      */
     @Override
-    public int deleteActTransactionLogByTransactionId(String transactionId)
-    {
+    public int deleteActTransactionLogByTransactionId(String transactionId) {
         return actTransactionLogMapper.deleteActTransactionLogByTransactionId(transactionId);
     }
 }

+ 14 - 24
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotAttServiceImpl.java

@@ -2,7 +2,6 @@ package com.ruoyi.ams.inv.service.impl;
 
 import java.util.List;
 
-import com.ruoyi.base.service.SysIdsequenceService;
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -12,39 +11,34 @@ import com.ruoyi.ams.inv.service.IInvLotAttService;
 
 /**
  * 批次属性Service业务层处理
- * 
+ *
  * @author andy
  * @date 2022-03-09
  */
 @Service
-public class InvLotAttServiceImpl implements IInvLotAttService 
-{
+public class InvLotAttServiceImpl implements IInvLotAttService {
     @Autowired
     private InvLotAttMapper invLotAttMapper;
-    @Autowired
-    private SysIdsequenceService sysIdsequenceService;
 
     /**
      * 查询批次属性
-     * 
+     *
      * @param lotnum 批次属性主键
      * @return 批次属性
      */
     @Override
-    public InvLotAtt selectInvLotAttByLotnum(String lotnum)
-    {
+    public InvLotAtt selectInvLotAttByLotnum(String lotnum) {
         return invLotAttMapper.selectInvLotAttByLotnum(lotnum);
     }
 
     /**
      * 查询批次属性列表
-     * 
+     *
      * @param invLotAtt 批次属性
      * @return 批次属性
      */
     @Override
-    public List<InvLotAtt> selectInvLotAttList(InvLotAtt invLotAtt)
-    {
+    public List<InvLotAtt> selectInvLotAttList(InvLotAtt invLotAtt) {
         return invLotAttMapper.selectInvLotAttList(invLotAtt);
     }
 
@@ -55,10 +49,9 @@ public class InvLotAttServiceImpl implements IInvLotAttService
      * @return 批次属性
      */
     @Override
-    public InvLotAtt selectInvLotAttByModel(InvLotAtt invLotAtt)
-    {
+    public InvLotAtt selectInvLotAttByModel(InvLotAtt invLotAtt) {
         List<InvLotAtt> list = invLotAttMapper.selectInvLotAttList(invLotAtt);
-        if (list!=null && list.size()>0) {
+        if (list != null && list.size() > 0) {
             return list.get(0);
         } else {
             return null;
@@ -67,38 +60,35 @@ public class InvLotAttServiceImpl implements IInvLotAttService
 
     /**
      * 修改批次属性
-     * 
+     *
      * @param invLotAtt 批次属性
      * @return 结果
      */
     @Override
-    public int updateInvLotAtt(InvLotAtt invLotAtt)
-    {
+    public int updateInvLotAtt(InvLotAtt invLotAtt) {
         invLotAtt.setUpdateTime(DateUtils.getNowDate());
         return invLotAttMapper.updateInvLotAtt(invLotAtt);
     }
 
     /**
      * 批量删除批次属性
-     * 
+     *
      * @param lotnums 需要删除的批次属性主键
      * @return 结果
      */
     @Override
-    public int deleteInvLotAttByLotnums(String[] lotnums)
-    {
+    public int deleteInvLotAttByLotnums(String[] lotnums) {
         return invLotAttMapper.deleteInvLotAttByLotnums(lotnums);
     }
 
     /**
      * 删除批次属性信息
-     * 
+     *
      * @param lotnum 批次属性主键
      * @return 结果
      */
     @Override
-    public int deleteInvLotAttByLotnum(String lotnum)
-    {
+    public int deleteInvLotAttByLotnum(String lotnum) {
         return invLotAttMapper.deleteInvLotAttByLotnum(lotnum);
     }
 }

+ 31 - 9
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -13,7 +13,7 @@ import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
-import com.ruoyi.base.service.SysIdsequenceService;
+import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -41,9 +41,9 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     @Autowired
     private InvLotAttMapper invLotAttMapper;
     @Autowired
-    private SysIdsequenceService sysIdsequenceService;
-    @Autowired
     private IBaseLocationInfoService baseLocationInfoService;
+    @Autowired
+    private IdSequenceUtils idSequenceUtils;
 
     /**
      * 查询库位库存信息
@@ -154,6 +154,7 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
      */
     @Override
     public AjaxResult move(InvLotLocIdMoveForm invLotLocIdMoveForm) {
+        //TODO 根据托盘号查询托盘绑定的库存位置移动到目标库位
         String locationFrom = invLotLocIdMoveForm.getLocationFrom();
         String locationTo = invLotLocIdMoveForm.getLocationTo();
         String isCallCar = invLotLocIdMoveForm.getIsCallCar(); // 是否叫车 不叫车直接移动库存
@@ -317,12 +318,20 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     public void initInv(String locationFrom, String sku, String customerId, Double qty, LotattDTO lotattDTO) {
         InvLotAtt invLotAtt = new InvLotAtt();
         BeanUtils.copyProperties(lotattDTO, invLotAtt);
-        String lotnum = sysIdsequenceService.generateId("LOTNUMBER");
-        invLotAtt.setLotnum(lotnum);
-        invLotAtt.setSku(sku);
-        invLotAtt.setCustomerId(customerId);
-        invLotAtt.setCreateTime(DateUtils.getNowDate());
-        invLotAttMapper.insertInvLotAtt(invLotAtt);
+        //查询lotatt是否存在
+        String lotnum;
+        List<InvLotAtt> queryList = invLotAttMapper.selectInvLotAttList(invLotAtt);
+        if (queryList != null && queryList.size() > 0) {
+            invLotAtt = queryList.get(0);
+            lotnum = invLotAtt.getLotnum();
+        } else {
+            lotnum = idSequenceUtils.generateId("LOTNUMBER");
+            invLotAtt.setLotnum(lotnum);
+            invLotAtt.setSku(sku);
+            invLotAtt.setCustomerId(customerId);
+            invLotAtt.setCreateTime(DateUtils.getNowDate());
+            invLotAttMapper.insertInvLotAtt(invLotAtt);
+        }
 
         InvLotLocId invLotLocId = new InvLotLocId();
         invLotLocId.setLotnum(lotnum);
@@ -374,4 +383,17 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     public List<InvLotLocId> queryInvByFull(String orderNo, String sku) {
         return invLotLocIdMapper.queryInvByFull(orderNo, sku);
     }
+
+    @Override
+    public AjaxResult unLockInvByPalletNo(String palletNo, String sn) {
+        InvLotAtt invLotAtt = new InvLotAtt();
+        invLotAtt.setLotatt02(sn);
+        List<InvLotLocId> lotLocIdList = invLotLocIdMapper.queryInvByInvLotatt(invLotAtt, palletNo);
+        if (lotLocIdList != null && lotLocIdList.size() > 0) {
+            for (InvLotLocId inv : lotLocIdList) {
+                invLotLocIdMapper.unlockInv(Long.parseLong(inv.getLocationId()), inv.getSku(), inv.getCustomerId());
+            }
+        }
+        return AjaxResult.success("解绑成功");
+    }
 }

+ 10 - 0
warewms-ams/src/main/java/com/ruoyi/ams/lineCall/domain/form/LineCallListFrom.java

@@ -17,6 +17,8 @@ public class LineCallListFrom {
     private String locationFrom;
     //目标(库位或者区域)
     private String locationTo;
+    //托盘号
+    private String palletNo;
     //批次属性
     private List<LineCallDetailsForm> lineCallDetailsFormList;
 
@@ -76,6 +78,14 @@ public class LineCallListFrom {
         this.id = id;
     }
 
+    public String getPalletNo() {
+        return palletNo;
+    }
+
+    public void setPalletNo(String palletNo) {
+        this.palletNo = palletNo;
+    }
+
     public List<LineCallDetailsForm> getLineCallDetailsFormList() {
         return lineCallDetailsFormList;
     }

+ 24 - 18
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -410,24 +410,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left join inv_lot_att att on li.lotnum = att.lotnum
         left join wms_box_info b on li.location_id = b.location_id
         <where>
-            <if test="lotattDTO.lotatt01 != null  and lotattDTO.lotatt01 != ''"> and att.lotatt01 = #{lotattDTO.lotatt01}</if>
-            <if test="lotattDTO.lotatt02 != null  and lotattDTO.lotatt02 != ''"> and att.lotatt02 = #{lotattDTO.lotatt02}</if>
-            <if test="lotattDTO.lotatt03 != null  and lotattDTO.lotatt03 != ''"> and att.lotatt03 = #{lotattDTO.lotatt03}</if>
-            <if test="lotattDTO.lotatt04 != null  and lotattDTO.lotatt04 != ''"> and att.lotatt04 = #{lotattDTO.lotatt04}</if>
-            <if test="lotattDTO.lotatt05 != null  and lotattDTO.lotatt05 != ''"> and att.lotatt05 = #{lotattDTO.lotatt05}</if>
-            <if test="lotattDTO.lotatt06 != null  and lotattDTO.lotatt06 != ''"> and att.lotatt06 = #{lotattDTO.lotatt06}</if>
-            <if test="lotattDTO.lotatt07 != null  and lotattDTO.lotatt07 != ''"> and att.lotatt07 = #{lotattDTO.lotatt07}</if>
-            <if test="lotattDTO.lotatt08 != null  and lotattDTO.lotatt08 != ''"> and att.lotatt08 = #{lotattDTO.lotatt08}</if>
-            <if test="lotattDTO.lotatt09 != null  and lotattDTO.lotatt09 != ''"> and att.lotatt09 = #{lotattDTO.lotatt09}</if>
-            <if test="lotattDTO.lotatt10 != null  and lotattDTO.lotatt10 != ''"> and att.lotatt10 = #{lotattDTO.lotatt10}</if>
-            <if test="lotattDTO.lotatt11 != null  and lotattDTO.lotatt11 != ''"> and att.lotatt11 = #{lotattDTO.lotatt11}</if>
-            <if test="lotattDTO.lotatt12 != null  and lotattDTO.lotatt12 != ''"> and att.lotatt12 = #{lotattDTO.lotatt12}</if>
-            <if test="lotattDTO.lotatt13 != null  and lotattDTO.lotatt13 != ''"> and att.lotatt13 = #{lotattDTO.lotatt13}</if>
-            <if test="lotattDTO.lotatt14 != null  and lotattDTO.lotatt14 != ''"> and att.lotatt14 = #{lotattDTO.lotatt14}</if>
-            <if test="lotattDTO.lotatt15 != null  and lotattDTO.lotatt15 != ''"> and att.lotatt15 = #{lotattDTO.lotatt15}</if>
-            <if test="lotattDTO.lotatt16 != null  and lotattDTO.lotatt16 != ''"> and att.lotatt16 = #{lotattDTO.lotatt16}</if>
-            <if test="lotattDTO.lotatt17 != null  and lotattDTO.lotatt17 != ''"> and att.lotatt17 = #{lotattDTO.lotatt17}</if>
-            <if test="lotattDTO.lotatt18 != null  and lotattDTO.lotatt18 != ''"> and att.lotatt18 = #{lotattDTO.lotatt18}</if>
+            <if test="lotattDTO != null">
+                <if test="lotattDTO.lotatt01 != null  and lotattDTO.lotatt01 != ''"> and att.lotatt01 = #{lotattDTO.lotatt01}</if>
+                <if test="lotattDTO.lotatt02 != null  and lotattDTO.lotatt02 != ''"> and att.lotatt02 = #{lotattDTO.lotatt02}</if>
+                <if test="lotattDTO.lotatt03 != null  and lotattDTO.lotatt03 != ''"> and att.lotatt03 = #{lotattDTO.lotatt03}</if>
+                <if test="lotattDTO.lotatt04 != null  and lotattDTO.lotatt04 != ''"> and att.lotatt04 = #{lotattDTO.lotatt04}</if>
+                <if test="lotattDTO.lotatt05 != null  and lotattDTO.lotatt05 != ''"> and att.lotatt05 = #{lotattDTO.lotatt05}</if>
+                <if test="lotattDTO.lotatt06 != null  and lotattDTO.lotatt06 != ''"> and att.lotatt06 = #{lotattDTO.lotatt06}</if>
+                <if test="lotattDTO.lotatt07 != null  and lotattDTO.lotatt07 != ''"> and att.lotatt07 = #{lotattDTO.lotatt07}</if>
+                <if test="lotattDTO.lotatt08 != null  and lotattDTO.lotatt08 != ''"> and att.lotatt08 = #{lotattDTO.lotatt08}</if>
+                <if test="lotattDTO.lotatt09 != null  and lotattDTO.lotatt09 != ''"> and att.lotatt09 = #{lotattDTO.lotatt09}</if>
+                <if test="lotattDTO.lotatt10 != null  and lotattDTO.lotatt10 != ''"> and att.lotatt10 = #{lotattDTO.lotatt10}</if>
+                <if test="lotattDTO.lotatt11 != null  and lotattDTO.lotatt11 != ''"> and att.lotatt11 = #{lotattDTO.lotatt11}</if>
+                <if test="lotattDTO.lotatt12 != null  and lotattDTO.lotatt12 != ''"> and att.lotatt12 = #{lotattDTO.lotatt12}</if>
+                <if test="lotattDTO.lotatt13 != null  and lotattDTO.lotatt13 != ''"> and att.lotatt13 = #{lotattDTO.lotatt13}</if>
+                <if test="lotattDTO.lotatt14 != null  and lotattDTO.lotatt14 != ''"> and att.lotatt14 = #{lotattDTO.lotatt14}</if>
+                <if test="lotattDTO.lotatt15 != null  and lotattDTO.lotatt15 != ''"> and att.lotatt15 = #{lotattDTO.lotatt15}</if>
+                <if test="lotattDTO.lotatt16 != null  and lotattDTO.lotatt16 != ''"> and att.lotatt16 = #{lotattDTO.lotatt16}</if>
+                <if test="lotattDTO.lotatt17 != null  and lotattDTO.lotatt17 != ''"> and att.lotatt17 = #{lotattDTO.lotatt17}</if>
+                <if test="lotattDTO.lotatt18 != null  and lotattDTO.lotatt18 != ''"> and att.lotatt18 = #{lotattDTO.lotatt18}</if>
+            </if>
              and b.box_no = #{boxNo}
         </where>
     </select>
@@ -438,4 +440,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left join inv_lot_att att on inv.lotnum = att.lotnum
         where att.lotatt14 = #{orderNo} and inv.sku = #{sku}
     </select>
+
+    <delete id="unlockInv">
+        delete from inv_lot_loc_id where location_id = #{locationId} and sku = #{sku} and customer_id = #{customerId}
+    </delete>
 </mapper>

+ 1 - 1
warewms-ams/src/main/resources/mapper/ams/WmsDocAsnDetailsMapper.xml

@@ -256,6 +256,6 @@
     </delete>
 
     <update id="updateWmsReceivedQty">
-        update wms_doc_asn_details set received_qty += #{qty},asn_status = #{asnStatus} where asn_no = #{asnNo} and asn_line_no = #{asnLineNo}
+        update wms_doc_asn_details set received_qty = received_qty + #{qty},received_qty_each = received_qty_each + #{qty},line_status = #{asnStatus} where asn_no = #{asnNo} and asn_line_no = #{asnLineNo}
     </update>
 </mapper>

+ 1 - 1
warewms-ams/src/main/resources/mapper/docOrder/WmsDocOrderDetailsMapper.xml

@@ -361,7 +361,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <update id="updateOrderDetailsStock">
-        update wms_doc_order_details set qty_soft_allocated += #{qty},qty_soft_allocated_each += #{qty}
+        update wms_doc_order_details set qty_soft_allocated = qty_soft_allocated + #{qty},qty_softallocated_each = qty_softallocated_each + #{qty}
         where order_no = #{orderNo} and order_line_no = #{orderLoneNo} and sku = #{sku}
     </update>
 

+ 40 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -127,4 +127,44 @@ public class Constant {
             return value;
         }
     }
+
+    /**
+     * 事务类型
+     */
+    public enum Transaction_TYPE {
+        /**
+         * 收货
+         */
+        RC("RC"),
+        /**
+         * 上架
+         */
+        PA("PA"),
+        /**
+         * 拣货
+         */
+        PK("PK"),
+        /**
+         * 调整
+         */
+        OB("OB"),
+        /**
+         * 盘点
+         */
+        CO("CO"),
+        /**
+         * 验收
+         */
+        QC("QC");
+
+        private String value;
+
+        Transaction_TYPE(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
 }

+ 0 - 16
warewms-base/src/main/java/com/ruoyi/base/mapper/SysIdsequenceMapper.java

@@ -1,16 +0,0 @@
-package com.ruoyi.base.mapper;
-
-import com.ruoyi.base.domain.SysIdsequence;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * Created by IntelliJ IDEA.
- * User: andy.qu
- * Date: 2022/3/4
- */
-public interface SysIdsequenceMapper {
-
-    boolean updateByVersion(@Param("idName") String idName,@Param("dateMax") String dateMax,@Param("oldIdsequenc") int oldIdsequenc,@Param("nextIdsequenc") int nextIdsequenc);
-
-    SysIdsequence selectByIdname(@Param("idName")String idName);
-}

+ 7 - 0
warewms-base/src/main/java/com/ruoyi/base/service/IBaseIdsequenceService.java

@@ -76,4 +76,11 @@ public interface IBaseIdsequenceService
      * @return
      */
      int updateByVersion(String idName, String dateStr, Long idSequence,int nextId);
+
+    /**
+     * 查询当前主键值
+     * @param idName
+     * @return
+     */
+     String getCurrent(String idName);
 }

+ 0 - 22
warewms-base/src/main/java/com/ruoyi/base/service/SysIdsequenceService.java

@@ -1,22 +0,0 @@
-package com.ruoyi.base.service;
-
-/**
- * Created by IntelliJ IDEA.
- * User: andy.qu
- * Date: 2022/3/4
- */
-public interface SysIdsequenceService {
-    /**
-     * 生成id
-     * @param idName
-     * @return
-     */
-    String generateId(String idName);
-
-    /**
-     * 获取当前id
-     * @param idName
-     * @return
-     */
-    String getCurrent(String idName);
-}

+ 28 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseIdsequenceServiceImpl.java

@@ -1,7 +1,11 @@
 package com.ruoyi.base.service.impl;
 
+import java.util.Date;
 import java.util.List;
 
+import cn.hutool.core.date.DateUtil;
+import com.ruoyi.base.utils.CommonUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.base.mapper.BaseIdsequenceMapper;
@@ -105,4 +109,28 @@ public class BaseIdsequenceServiceImpl implements IBaseIdsequenceService {
     public int updateByVersion(String idName, String dateStr, Long idSequence, int nextId) {
         return baseIdsequenceMapper.updateByVersion(idName, dateStr, idSequence, nextId);
     }
+
+    @Override
+    public String getCurrent(String idName) {
+        BaseIdsequence sysIdsequence = baseIdsequenceMapper.selectBaseIdsequenceByIdName(idName);
+        String prefix;
+        String dateStr = "";
+        if (!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))) {
+            prefix = sysIdsequence.getPrefix() + DateUtil.format(new Date(), "yMMdd");
+            dateStr = DateUtil.format(new Date(), "yMMdd");
+        } else {
+            prefix = sysIdsequence.getPrefix();
+        }
+        int index = 0;
+        if (sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())) {
+            index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue();
+        }
+        String resultNo = "";
+        if (!StringUtils.isEmpty(prefix)) {
+            resultNo = prefix + CommonUtils.lpad((index + 1) + "", sysIdsequence.getLength().intValue(), "0");
+        } else {
+            resultNo = (index + 1) + "";
+        }
+        return resultNo;
+    }
 }

+ 0 - 83
warewms-base/src/main/java/com/ruoyi/base/service/impl/SysIdsequenceServiceImpl.java

@@ -1,83 +0,0 @@
-package com.ruoyi.base.service.impl;
-
-import cn.hutool.core.date.DateUtil;
-import com.ruoyi.base.domain.SysIdsequence;
-import com.ruoyi.base.mapper.SysIdsequenceMapper;
-import com.ruoyi.base.service.SysIdsequenceService;
-import com.ruoyi.base.utils.CommonUtils;
-import com.ruoyi.common.utils.DateUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-
-/**
- * Created by IntelliJ IDEA.
- * User: andy.qu
- * Date: 2022/3/4
- */
-@Service
-public class SysIdsequenceServiceImpl implements SysIdsequenceService {
-
-    @Autowired
-    private SysIdsequenceMapper sysIdsequenceMapper;
-
-    @Override
-    public String generateId(String idName) {
-        while (true) {
-            SysIdsequence sysIdsequence = sysIdsequenceMapper.selectByIdname(idName);
-            if (sysIdsequence == null) {
-                return null;
-            }
-
-            String prefix;
-            String dateStr = "";
-            if(!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))){
-                prefix = sysIdsequence.getPrefix() + DateUtils.parseDateToStr("yMMdd",new Date());
-                dateStr = DateUtils.parseDateToStr("yMMdd",new Date());
-            }else {
-                prefix = sysIdsequence.getPrefix();
-            }
-            int index = 0;
-            if(sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())){
-                index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue();
-            }
-            String resultNo = "";
-            if(!StringUtils.isEmpty(prefix)){
-                resultNo = prefix + CommonUtils.lpad((index+1)+"",sysIdsequence.getLength().intValue(),"0");
-            }else {
-                resultNo =  (index+1)+"";
-            }
-
-            boolean isOk = sysIdsequenceMapper.updateByVersion(idName,dateStr,sysIdsequence.getIdSequence().intValue(),index+1);
-            if(isOk){
-                return resultNo;
-            }
-        }
-    }
-
-    @Override
-    public String getCurrent(String idName) {
-        SysIdsequence sysIdsequence = sysIdsequenceMapper.selectByIdname(idName);
-        String prefix;
-        String dateStr = "";
-        if(!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))){
-            prefix = sysIdsequence.getPrefix() + DateUtil.format(new Date(),"yMMdd");
-            dateStr = DateUtil.format(new Date(),"yMMdd");
-        }else {
-            prefix = sysIdsequence.getPrefix();
-        }
-        int index = 0;
-        if(sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())){
-            index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue();
-        }
-        String resultNo = "";
-        if(!StringUtils.isEmpty(prefix)){
-            resultNo = prefix + CommonUtils.lpad((index+1)+"",sysIdsequence.getLength().intValue(),"0");
-        }else {
-            resultNo =  (index+1)+"";
-        }
-        return resultNo;
-    }
-}

+ 0 - 30
warewms-base/src/main/resources/mapper/base/SysIdsequenceMapper.xml

@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.base.mapper.SysIdsequenceMapper">
-
-    <resultMap type="SysIdsequence" id="SysIdsequenceResult">
-        <result property="idName"    column="id_name"    />
-        <result property="idSequence"    column="id_sequence"    />
-        <result property="createDate"    column="create_date"    />
-        <result property="createUserId"    column="create_user_id"    />
-        <result property="descr"    column="descr"    />
-        <result property="idType"    column="id_type"    />
-        <result property="maxidSequence"    column="max_id_sequence"    />
-        <result property="editTime"    column="edit_time"    />
-        <result property="editUserId"    column="edit_user_id"    />
-        <result property="prefix"    column="prefix"    />
-        <result property="length"    column="length"    />
-        <result property="dateFormat"    column="date_format"    />
-        <result property="dateMax"    column="date_max"    />
-    </resultMap>
-
-    <select id="selectByIdname" parameterType="sysIdsequence" resultMap="SysIdsequenceResult">
-        select * from sys_idsequence where id_name = #{idName}
-    </select>
-
-    <update id="updateByVersion">
-        update sys_idsequence set id_sequence =#{nextIdsequenc},date_max=#{dateMax} where id_name= #{idName} and id_sequence=#{oldIdsequenc}
-    </update>
-</mapper>