自动化立体仓库 - WMS系统
#
Junjie
昨天 fa5d671a53597db853ac1ab2e99f12f0acda8315
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -13,18 +13,23 @@
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MathUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.common.model.WrkDto;
import com.zy.common.model.enumUtils.OrderEnumVo;
import com.zy.common.utils.Synchro;
import com.zy.common.web.BaseController;
import com.zy.nc.entity.NccJcQilibcBarcodeflowWms;
import com.zy.nc.entity.NccQilibcTmprintWms;
import com.zy.nc.entity.NccSaleXclGgsybWms;
import com.zy.nc.service.NccJcQilibcBarcodeflowWmsService;
import com.zy.nc.service.NccQilibcTmprintWmsService;
import com.zy.nc.service.NccSaleXclGgsybWmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -59,16 +64,27 @@
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private StoreTypeService storeTypeService;
    @Autowired
    private MatService matService;
    @Autowired
    private NccJcQilibcBarcodeflowWmsService nccJcQilibcBarcodeflowWmsService;
    @Autowired
    private NccQilibcTmprintWmsService nccQilibcTmprintWmsService;
    @Autowired
    private NccSaleXclGgsybWmsService nccSaleXclGgsybWmsService;
    @Autowired
    private OrderPakinService orderPakinService;
    @Resource
    private StaDescService staDescService;
    @Autowired
    private OrderDetlPakinService orderDetlPakinService;
    @RequestMapping("/pda/WarehouseOut/v1")
    @ManagerAuth(memo = "并板途中拣料-参考念初")
@@ -207,16 +223,18 @@
                    LinkedList<CombParam.CombMat> combMats = new LinkedList<>();
                    for (OrderDetl orderDetl : orderDetls) {
                        CombParam.CombMat combMat = new CombParam.CombMat();
                        Synchro.Copy(orderDetl, combMat);
                        combMat.setMatnr(orderDetl.getMatnr());
                        combMat.setBatch(orderDetl.getBatch());
                        combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
                        combMat.setAnfme(MathUtils.subtract(orderDetl.getAnfme(), orderDetl.getWorkQty()));
                        combMat.setMaktx(orderDetl.getMaktx());
                        combMat.setSpecs(orderDetl.getSpecs());
                        combMat.setEnableQty(MathUtils.subtract(orderDetl.getAnfme(), orderDetl.getWorkQty()));
                        combMats.add(combMat);
                    }
                    combParam.setCombMats(combMats);
                }
                combParam.setOrderNo(order.getOrderNo());
                //combParam.setOrderNo(order.getOrderNo());
                combParams.add(combParam);
            }
        }
@@ -239,14 +257,140 @@
        Mat mat = matService.selectByMatnr(nccJcQilibcBarcodeflowWms.getWlbm());
        MatParam matParam = new MatParam();
        Synchro.Copy(mat, matParam);
        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>().eq("order_no", nccJcQilibcBarcodeflowWms.getZkdh()).eq("matnr", mat.getMatnr()).eq("batch", nccJcQilibcBarcodeflowWms.getVbatchcode()));
        if (orderDetlPakin == null) {
            throw new CoolException("未找到此单号");
        }
        matParam.setStandby1(orderDetlPakin.getStandby1());
        matParam.setOrderNo(nccJcQilibcBarcodeflowWms.getZkdh());
        matParam.setBatch(nccJcQilibcBarcodeflowWms.getVbatchcode());
        matParam.setAnfme(12D);
        matParam.setAnfme(nccJcQilibcBarcodeflowWms.getAsnnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getAsnnum().doubleValue());
        matParam.setWeight(nccJcQilibcBarcodeflowWms.getNastnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getNastnum().doubleValue());
        matParam.setAnfme2(nccJcQilibcBarcodeflowWms.getNastnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getNastnum().doubleValue());
        matParam.setTiaoma(nccJcQilibcBarcodeflowWms.getVbarcode());
        return R.ok().add(matParam);
    }
    @RequestMapping(value = "/mat/auth")
    @ManagerAuth
    public R pdaSearchV3(@RequestParam String matnr) {
        EntityWrapper<NccQilibcTmprintWms> wrapper = new EntityWrapper<>();
        wrapper.eq("BARCODE", matnr).orderBy("PRINTTIME", false);
        NccQilibcTmprintWms nccQilibcTmprintWms = nccQilibcTmprintWmsService.selectOne(wrapper);
        if (null == nccQilibcTmprintWms) {
            return R.error("未找到此条码");
        }
        Mat mat = matService.selectByMatnr(nccQilibcTmprintWms.getWlbm());
        MatParam matParam = new MatParam();
        Synchro.Copy(mat, matParam);
        matParam.setBatch(nccQilibcTmprintWms.getVbatchcode());
//        matParam.setAnfme(nccQilibcTmprintWms.getAsnnum() == null ? 0.0D : nccQilibcTmprintWms.getAsnnum().doubleValue());
//        matParam.setAnfme2(nccQilibcTmprintWms.getNastnum() == null ? 0.0D : nccQilibcTmprintWms.getNastnum().doubleValue());
        matParam.setAnfme(0.0D);
        matParam.setAnfme2(0.0D);
        matParam.setTiaoma(nccQilibcTmprintWms.getBarcode());
        return R.ok().add(matParam);
    }
    @RequestMapping(value = "/mat/back")
    @ManagerAuth
    public R pdaSearchBack(@RequestParam String barcode) {
        WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>()
                .eq("barcode", barcode)
                .in("io_type", 101, 103, 107)
                .orderBy("appe_time", false)
        );
        if(null == wrkMastLog) {
            return R.error("未找到此托盘码出库记录");
        }
        List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                .eq("wrk_no", wrkMastLog.getWrkNo())
                .eq("zpallet", barcode)
                .orderBy("io_time", false)
        );
        if (wrkDetlLogs.isEmpty()) {
            return R.error("未找到此托盘码出库记录明细");
        }
        WrkDetlLog wrkDetlLog = wrkDetlLogs.get(0);
        String batch = wrkDetlLog.getBatch();
        HashMap<String, Object> map = new HashMap<>();
        Mat mat = matService.selectByMatnr(wrkDetlLog.getMatnr());
        if (mat == null) {
            return R.error("未找到物料明细");
        }
        MatParam matParam = new MatParam();
        Synchro.Copy(mat, matParam);
        matParam.setBatch(batch);
        matParam.setAnfme(0.0D);
        matParam.setAnfme2(0.0D);
        matParam.setTiaoma(batch);
        String[] split = wrkDetlLog.getOrderNo().split("-");
        map.put("orderNo", split[0]);
        map.put("matData", matParam);
        return R.ok().add(map);
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam) {
        mobileService.comb(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/comb2/auth")
    @ManagerAuth(memo = "采购组托")
    public R comb2(@RequestBody CombParam combParam) {
        CombParam.CombMat combMat = combParam.getCombMats().get(0);
        ArrayList<String> ckbmList = new ArrayList<>();
        List<StoreType> storeTypes = storeTypeService.selectList(new EntityWrapper<StoreType>()
                .like("store_name", "立体库"));
        for (StoreType storeType : storeTypes) {
            ckbmList.add(storeType.getStoreId());
        }
        NccSaleXclGgsybWms nccSaleXclGgsybWms = nccSaleXclGgsybWmsService.selectOne(new EntityWrapper<NccSaleXclGgsybWms>()
                .eq("WLBM", combMat.getMatnr())
                .eq("VBATCHCODE", combMat.getBatch())
                .in("CKBM", ckbmList)
        );
        if(null == nccSaleXclGgsybWms) {
            return R.error("未查到ERP库存");
        }
        //ERP库存数量
        BigDecimal zsl = nccSaleXclGgsybWms.getZsl();
        //获取立库数量
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                .eq("matnr", combMat.getMatnr())
                .eq("batch", combMat.getBatch())
        );
        BigDecimal stockNum = new BigDecimal(0);
        for (LocDetl locDetl : locDetls) {
            stockNum = stockNum.add(BigDecimal.valueOf(locDetl.getAnfme()));
        }
        //加上组托数量
        for (CombParam.CombMat mat : combParam.getCombMats()) {
            stockNum = stockNum.add(BigDecimal.valueOf(mat.getAnfme()));
        }
        if(stockNum.doubleValue() > zsl.doubleValue()) {
            return R.error("组托数量超过ERP库存");
        }
        List<CombParam.CombMat> combMats = combParam.getCombMats();
        for (CombParam.CombMat mat : combMats) {
            mat.setStandby1(nccSaleXclGgsybWms.getCkbm());
        }
        mobileService.comb(combParam, getUserId());
        return R.ok("组托成功");
    }
@@ -501,6 +645,27 @@
        return R.ok();
    }
    @RequestMapping("/checkDetl/auth/v2")
    @ManagerAuth
    public R getCheckDetlV2(@RequestParam(required = false) String barcode) {
        if (Cools.isEmpty(barcode)) {
            return R.ok();
        }
        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
        if (wrkMast != null && (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 57)) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            if (!Cools.isEmpty(wrkDetls)) {
                MobileAdjustResult result = new MobileAdjustResult();
                result.setBarcode(barcode);
                result.setWrkNo(wrkMast.getWrkNo());
                result.setWrkDetls(wrkDetls);
                return R.ok().add(result);
            }
        }
        return R.ok();
    }
    @RequestMapping("/adjust/auth")
    @ManagerAuth(memo = "盘点")
    public R adjust(@RequestBody MobileAdjustParam combParam) {