自动化立体仓库 - WMS系统
dubin
2025-10-13 edb03c5169709da2e6d39a999328ce9bf92affff
联调
16个文件已修改
109 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BarcodeMatnrController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MatController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Mat.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/MatMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MatService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/MatExcelListener.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/controller/UserController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/erp/task/ERPItemService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/MatMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/pakStore/emptyOut.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/emptyOut.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BarcodeMatnrController.java
@@ -7,11 +7,14 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.MatBarcode;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.service.MatBarcodeService;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.MobileService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +23,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -30,6 +34,8 @@
    private MatBarcodeService matBarcodeService;
    @Autowired
    private MobileService mobileService;
    @Autowired
    private MatService matService;
    /*
    * 物料托盘绑定分页查询
    * */
@@ -92,6 +98,15 @@
    @RequestMapping(value = "/barcodeMatnr/add1/auth")
    @ManagerAuth
    public R comb(WaitPakin waitPakin) {
        Mat mat = matService.selectById(waitPakin.getModiUser());
        MatBarcode matBarcode = matBarcodeService.selectbyMatnr(mat.getMatnr());
        if (matBarcode == null){
            throw new CoolException("该物料未与托盘绑定");
        }else {
            if (!matBarcode.getZpallet().equals(waitPakin.getBarcode())){
                throw new CoolException("该物料与其他托盘绑定,不能与当前托盘"+waitPakin.getBarcode()+"绑定,与该物料绑定的托盘是"+matBarcode.getZpallet());
            }
        }
        if (Cools.isEmpty(waitPakin.getBarcode())||Cools.isEmpty(waitPakin.getModiUser())||Cools.isEmpty(waitPakin.getAnfme())){
            return R.error(BaseRes.PARAM);
        }
@@ -108,8 +123,24 @@
        if (Cools.isEmpty(waitPakin.getBarcode())||Cools.isEmpty(waitPakin.getModiUser())||Cools.isEmpty(waitPakin.getAnfme())){
            return R.error(BaseRes.PARAM);
        }
        Mat mat = matService.selectById(waitPakin.getModiUser());
        MatBarcode matBarcode = matBarcodeService.selectbyMatnr(mat.getMatnr());
        if (matBarcode == null){
            throw new CoolException("该物料未与托盘绑定");
        }else {
            if (!matBarcode.getZpallet().equals(waitPakin.getBarcode())){
            throw new CoolException("该物料与其他托盘绑定,不能与当前托盘"+waitPakin.getBarcode()+"绑定,与该物料绑定的托盘是"+matBarcode.getZpallet());
            }
        }
        MobileAdjustParam combParam=new MobileAdjustParam();
        ArrayList<CombParam.CombMat> combMats=new ArrayList<>();
        CombParam.CombMat combMat=new CombParam.CombMat();
        combMat.setMatnr(mat.getMatnr());
        combMat.setMaktx(mat.getMaktx());
        combMat.setAnfme(waitPakin.getAnfme());
        combMats.add(combMat);
        combParam.setBarcode(waitPakin.getBarcode());
        combParam.setCombMats(combMats);
        mobileService.adjustNew(combParam, Boolean.TRUE, getUserId());
        return R.ok("并板成功");
    }
src/main/java/com/zy/asrs/controller/MatController.java
@@ -97,7 +97,7 @@
        return R.ok(matService.getPage2(new Page<>(curr, limit)
                , String.valueOf(tagId)
                , param.get("matnr")
                , param.get("maktx")
                , param.get("name")
                , param.get("specs"))
        );
src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -85,6 +85,9 @@
        }
        wrkMast.setModiUser(getUserId());
        wrkMast.setModiTime(new Date());
        if (wrkMast.getWrkSts() == 2){
            wrkMast.setPltType(0);
        }
        wrkMastService.updateById(wrkMast);
        return R.ok();
    }
src/main/java/com/zy/asrs/entity/Mat.java
@@ -191,14 +191,14 @@
     */
    @ApiModelProperty(value= "长度")
    @ExcelProperty(value = "长度")
    private Double length;
    private String length;
    /**
     * 体积
     */
    @ApiModelProperty(value= "体积")
    @ExcelProperty(value = "体积")
    private Double volume;
    private String volume;
    /**
     * 三方编码
@@ -361,7 +361,7 @@
    public Mat() {}
    public Mat(String uuid,Long tagId,String matnr,String maktx,String name,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double length,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public Mat(String uuid,Long tagId,String matnr,String maktx,String name,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,String length,String volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.uuid = uuid;
        this.tagId = tagId;
        this.matnr = matnr;
src/main/java/com/zy/asrs/mapper/MatMapper.java
@@ -15,7 +15,7 @@
public interface MatMapper extends BaseMapper<Mat> {
    List<Mat> listByPage(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr,  @Param("maktx") Object maktx);
    List<Mat> listByPage2(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr,  @Param("maktx") Object maktx,  @Param("specs") Object specs);
    List<Mat> listByPage2(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr,  @Param("name") Object name,  @Param("specs") Object specs);
    Mat selectByMatnr(@Param("matnr")String matnr);
src/main/java/com/zy/asrs/service/MatService.java
@@ -9,7 +9,7 @@
public interface MatService extends IService<Mat> {
    Page<Mat> getPage(Page page, String tagId, Object matnr, Object maktx);
    Page<Mat> getPage2(Page page, String tagId, Object matnr, Object maktx, Object specs);
    Page<Mat> getPage2(Page page, String tagId, Object matnr, Object name, Object specs);
    Mat selectByMatnr(String matnr);
    List<Mat> selectByMatnrLink(String matnr);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -11,6 +11,7 @@
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.PickInParam;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.common.model.DetlDto;
@@ -702,7 +703,7 @@
            adjDetl.setMatnr(wrkDetl.getMatnr());
            adjDetl.setBatch(wrkDetl.getBatch());
//            adjDetl.setBatch(wrkDetl.getBatch());
            adjDetl.setAdjQty(wrkDetl.getAnfme());
            if (Cools.isEmpty(wrkDetlOld)) {
@@ -716,7 +717,7 @@
                adjDetlService.insert(adjDetl);
            } else if (wrkDetlOld.getAnfme() != wrkDetl.getAnfme()) {
                wrkDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                wrkDetlService.updateAnfme(wrkDetl.getAnfme() + wrkDetlOld.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                recordRecordLog = recordRecordLog + "\n" + "更新一条明细:" + "\t商品编号:" + wrkDetl.getMatnr() + "\t批号:" + wrkDetl.getBatch() + "\t原数量:" + wrkDetlOld.getAnfme() + "\t新数量:" + wrkDetl.getAnfme();
                adjDetl.setOriQty(wrkDetlOld.getAnfme());
                adjDetlService.insert(adjDetl);
@@ -744,8 +745,9 @@
        }
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", waitPakin.getBarcode()));
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", waitPakin.getBarcode()));
        WrkMast wrkMast = wrkMastService.selectByBarcode(waitPakin.getBarcode());
        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", waitPakin.getBarcode()));
        if (countLoc > 0 || countWrk > 0) {
        if (countLoc > 0 || (countWrk > 0 && wrkMast.getWrkSts() != 15)) {
            throw new CoolException("组托档/工作档/库存条码数据已存在===>>" + waitPakin.getBarcode());
        }
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
@@ -62,8 +63,18 @@
                case 10:
                    // 修改库位状态=D
                    if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) {
                        if (!Cools.isEmpty(wrkMast.getBarcode())) {
                        if (Cools.isEmpty(wrkMast.getBarcode())) {
                            throw new CoolException("空板入库条码不能为空");
                        }
                            locMast.setBarcode(wrkMast.getBarcode());
                        if (Integer.parseInt(wrkMast.getBarcode().substring(0,1))==5){
                            locMast.setLocType2((short)5);
                        }else if (Integer.parseInt(wrkMast.getBarcode().substring(0,1))==6){
                            locMast.setLocType2((short)6);
                        }else if(Integer.parseInt(wrkMast.getBarcode().substring(0,1))==7){
                            locMast.setLocType2((short)7);
                        }else if(Integer.parseInt(wrkMast.getBarcode().substring(0,1))==8){
                            locMast.setLocType2((short)8);
                        }
                        locMast.setLocSts("D");
                        locMast.setIoTime(now);
@@ -370,7 +381,7 @@
                    // 修改源库位状态 R ===>> O
                    if (locMast.getLocSts().equals("R")) {
                        locMast.setLocSts("O");
//                        locMast.setBarcode("");//托盘与库位绑定
                        locMast.setBarcode("");//托盘与库位绑定
                        locMast.setModiTime(now);
                        locMast.setIoTime(now);
                        if (!locMastService.updateById(locMast)) {
@@ -385,7 +396,8 @@
                    // 修改库位状态 R ===>> O
                    if (locMast.getLocSts().equals("R")) {
                        locMast.setLocSts("O");
//                        locMast.setBarcode("");//托盘与库位绑定
                        locMast.setBarcode("");//托盘与库位绑定
                        locMast.setLocType2((short)0);
                        locMast.setModiTime(now);
                        locMast.setIoTime(now);
                        if (!locMastService.updateById(locMast)) {
src/main/java/com/zy/asrs/utils/MatExcelListener.java
@@ -131,6 +131,7 @@
        if (mat == null) {
            mat = excel;
            mat.setTagId(tagId);
            mat.setMatnr(excel.getMatnr()+"__"+excel.getName());
            if (!matService.insert(mat)) {
                throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr());
            }
src/main/java/com/zy/system/controller/UserController.java
@@ -150,7 +150,7 @@
    public R query(String condition) {
        EntityWrapper<Mat> wrapper = new EntityWrapper<>();
        wrapper.like("matnr", condition);
        Page<Mat> page = matService.selectPage(new Page<>(0, 100000), wrapper);
        Page<Mat> page = matService.selectPage(new Page<>(0, 50), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Mat mat : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
src/main/java/com/zy/third/erp/task/ERPItemService.java
@@ -87,7 +87,7 @@
            }
            mat.setStatus(1);
            if(itemTB.getTemp2() != null){
                mat.setLength(Double.parseDouble(itemTB.getTemp2()));
                mat.setLength(itemTB.getTemp2());//修改过
            }
//            mat.setLength(Double.parseDouble(itemTB.getTemp2()));
            mat.setCreateTime(now);
src/main/resources/mapper/MatMapper.xml
@@ -90,8 +90,8 @@
        <if test="matnr != null and matnr != ''">
            and mm.matnr like concat('%',#{matnr},'%')
        </if>
        <if test="maktx != null and maktx != ''">
            and mm.maktx like concat('%',#{maktx},'%')
        <if test="name != null and name != ''">
            and mm.name like concat('%',#{name},'%')
        </if>
        <if test="specs != null and specs != ''">
            and mm.specs like concat('%',#{specs},'%')
src/main/webapp/static/js/common.js
@@ -189,8 +189,8 @@
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', width: 200}
    // ,{field: 'name', align: 'center',title: '别名'}
    ,{field: 'specs', align: 'center',title: '规格'}
    ,{field: 'model', align: 'center',title: '代码'}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'name', align: 'center',title: '套号'}
    ,{field: 'color', align: 'center',title: '状态', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位'}
    ,{field: 'price', align: 'center',title: '单价', hide: true}
@@ -203,8 +203,8 @@
    ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: '总重量', hide: true}
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: false}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
    ,{field: 'length', align: 'center',title: '模孔数', hide: false}
    ,{field: 'volume', align: 'center',title: '开模壁厚', hide: true}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
src/main/webapp/static/js/pakStore/emptyOut.js
@@ -51,7 +51,7 @@
            ,{field: 'locNo', align: 'center',title: '库位号',sort:true}
            ,{field: 'locSts$', align: 'center',title: '库位状态',width:200}
            // ,{field: 'whsType$', align: 'center',title: '库位类型'}
            ,{field: 'crnNo', align: 'center',title: '堆垛机号'}
            ,{field: 'locType3$', align: 'center',title: '堆垛机号'}
            ,{field: 'row1', align: 'center',title: '排'}
            ,{field: 'bay1', align: 'center',title: '列'}
            ,{field: 'lev1', align: 'center',title: '层'}
src/main/webapp/views/mat/mat.html
@@ -92,9 +92,9 @@
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">商品名称:</label>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">套号:</label>
                            <div class="layui-input-inline">
                                <input name="maktx" class="layui-input" placeholder="输入商品名称"/>
                                <input name="name" class="layui-input" placeholder="输入套号"/>
                            </div>
                        </div>
                        <div class="layui-inline">
@@ -213,9 +213,9 @@
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单箱体积</label>
                    <label class="layui-form-label">开模壁厚</label>
                    <div class="layui-input-block">
                        <input name="volume" placeholder="请输入单箱体积" class="layui-input">
                        <input name="volume" placeholder="请输入开模壁厚" class="layui-input">
                    </div>
                </div>
@@ -244,16 +244,16 @@
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单箱毛重</label>
                    <label class="layui-form-label">模孔数</label>
                    <div class="layui-input-block">
                        <input name="length" placeholder="请输入单箱毛重" class="layui-input">
                        <input name="length" placeholder="请输入模孔数" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单箱体积</label>
                    <label class="layui-form-label">开模壁厚</label>
                    <div class="layui-input-block">
                        <input name="threeCode" placeholder="请输入箱子尺寸" class="layui-input">
                        <input name="threeCode" placeholder="请输入开模壁厚" class="layui-input">
                    </div>
                </div>
src/main/webapp/views/pakStore/emptyOut.html
@@ -96,7 +96,7 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" lay-verify="number" autocomplete="off">
            <input class="layui-input" type="text" name="loc_type2" placeholder="库位类型" lay-verify="number" autocomplete="off">
        </div>
    </div>