自动化立体仓库 - WMS系统
zyx
2024-02-01 57ae0c8f7a909327ed6058c0e78e8f808f91be4a
1.导入自动解析主体、车间以及产线
2.增加搜索字段
8个文件已修改
149 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/PlaController.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Pla.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MatService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/PlaExcelListener.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/pla/plaDetl.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pla/plaDetl.html 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -1,6 +1,5 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -501,12 +500,15 @@
    }
    public static void main(String[] args) {
        String aa = "[{\"batch\":\"2023090304\",\"packageNo\":\"8\"},{\"batch\":\"2023090304\",\"packageNo\":\"8\"}]";
        JSONArray jsonArray = JSON.parseArray(aa);
        Object o = jsonArray.get(0);
        System.out.println(o.toString());
        JSONObject jsonObject = (JSONObject)o;
        System.out.println(jsonObject);
//        String aa = "[{\"batch\":\"2023090304\",\"packageNo\":\"8\"},{\"batch\":\"2023090304\",\"packageNo\":\"8\"}]";
//        JSONArray jsonArray = JSON.parseArray(aa);
//        Object o = jsonArray.get(0);
//        System.out.println(o.toString());
//        JSONObject jsonObject = (JSONObject)o;
//        System.out.println(jsonObject);
        String s = "2024010502";
        System.out.println(s.substring(8,10));
    }
}
src/main/java/com/zy/asrs/controller/PlaController.java
@@ -27,10 +27,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
@RestController
public class PlaController extends BaseController {
@@ -47,6 +44,8 @@
    private OrderDetlService orderDetlService;
    @Autowired
    private PlaLogService plaLogService;
    @Autowired
    private MatService matService;
    @RequestMapping(value = "/pla/list/auth")
    @ManagerAuth
@@ -248,6 +247,22 @@
        return R.ok("解除冻结成功");
    }
    @RequestMapping(value = "/matMaktxQuery/auth")
    @ManagerAuth
    public R queryMat(String condition) {
        EntityWrapper<Mat> wrapper = new EntityWrapper<>();
        wrapper.like("maktx", condition);
        Page<Mat> page = matService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Mat mat : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", mat.getMaktx());
            map.put("value", mat.getMaktx());
            result.add(map);
        }
        return R.ok(result);
    }
    /**
     * excel导入模板下载
     */
src/main/java/com/zy/asrs/entity/Pla.java
@@ -270,11 +270,18 @@
    @TableField("stock_freeze_date")
    private Date stockFreezeDate;
    public String getCreateTime$() {
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd").format(this.createTime);
    }
    public String getPakinTime$() {
        if (Cools.isEmpty(this.pakinTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.pakinTime);
        return new SimpleDateFormat("yyyy-MM-dd HH").format(this.pakinTime);
    }
    public String getStockFreezeDate$() {
src/main/java/com/zy/asrs/service/MatService.java
@@ -10,5 +10,7 @@
    Mat selectByMatnr(String matnr);
    Mat selectByMaktx(String maktx);
    Page<Mat> selectAllPage(Page<Mat> matPage);
}
src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.entity.ManLocDetl;
@@ -26,6 +27,11 @@
    }
    @Override
    public Mat selectByMaktx(String maktx) {
        return this.selectOne(new EntityWrapper<Mat>().eq("maktx",maktx));
    }
    @Override
    public Page<Mat> selectAllPage(Page<Mat> matPage) {
        Map<String, Object> condition = matPage.getCondition();
        List<Mat> manLocDetls = baseMapper.selectAllPage(condition);
src/main/java/com/zy/asrs/utils/PlaExcelListener.java
@@ -5,9 +5,11 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.Node;
import com.zy.asrs.entity.Pla;
import com.zy.asrs.entity.param.GlobleParameter;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.NodeService;
import com.zy.asrs.service.PlaService;
import com.zy.common.entity.MatExcel;
@@ -25,6 +27,9 @@
 */
@Slf4j
public class PlaExcelListener extends AnalysisEventListener<PlaExcel> {
    private static final String OWNER_HZ = "海正生物";
    private static final String OWNER_HNE = "海诺尔";
    private int total = 0;
    private Long userId;
@@ -57,6 +62,7 @@
    public void invoke(PlaExcel excel, AnalysisContext ctx) {
        PlaService plaService = SpringUtils.getBean(PlaService.class);
        NodeService nodeService = SpringUtils.getBean(NodeService.class);
        MatService matService = SpringUtils.getBean(MatService.class);
        Date now = new Date();
        // 商品
@@ -71,10 +77,20 @@
            pla.setModifyTime(new Date());
            pla.setStatus(GlobleParameter.PLA_STATUS_00);
            pla.setStockFreeze(1);
            pla.setWeightAnfme(pla.getWeight());
            Mat mat = matService.selectByMaktx(pla.getBrand());
            if(Cools.isEmpty(mat)){
                throw new CoolException("无法找到对应的牌号信息,牌号=" + pla.getBrand());
            }
            pla.setMatnr(mat.getMatnr());
            pla.setType(getType(mat.getMatnr()));
            //车间、产线、主体
            setPla(pla);
            if(!Cools.isEmpty(pla.getLocNo())){
                Node node = nodeService.selectByUuid(pla.getLocNo());
                if(Cools.isEmpty(node)){
                    throw new CoolException("未能找到相应的库位信息");
                    throw new CoolException("未能找到相应的库位信息,库位编号=" +pla.getLocNo());
                    //log.info("未能找到相应的库位信息,库位编号={}",pla.getLocNo());
                }
                pla.setStash(node.getParentName());
                pla.setLocNo(node.getUuid());
@@ -97,6 +113,48 @@
        }
    }
    private String getType(String matnr){
        String type = matnr.substring(0,3);
        if(Cools.eq(type,"301")){
            return "纯树脂";
        }
        if (Cools.eq(type,"302")){
            return "改性树脂";
        }
        if (Cools.eq(type,"303")){
            return "副产物";
        }
        if (Cools.eq(type,"304")){
            return "委托加工产品";
        }
        if (Cools.eq(type,"305")){
            return "丙交酯";
        }
        return "";
    }
    private void setPla(Pla pla){
        String batch = pla.getBatch();
        String line = batch.substring(8,10);
        pla.setLine(line);
        if("纯树脂".equals(pla.getType())){
            if("01".equals(line) || "02".equals(line)){
                pla.setOwner(OWNER_HZ);
                pla.setWorkshop("一车间");
            }else {
                pla.setOwner(OWNER_HNE);
                pla.setWorkshop("三车间");
            }
        }else if ("改性树脂".equals(pla.getType())){
            if ("01".equals(line) || "02".equals(line) || "03".equals(line) || "04".equals(line)){
                pla.setOwner(OWNER_HNE);
                pla.setWorkshop("二车间");
            }
        }
    }
    /**
     * 所有数据解析完成了调用
     * 适合事务
src/main/webapp/static/js/pla/plaDetl.js
@@ -57,6 +57,7 @@
        ,{field: 'stockFreezeBy', align: 'center',title: '操作人员',hide:true}
        ,{field: 'stockFreezeDate$', align: 'center',title: '操作日期',hide:true}
        ,{align: 'center', title: '流转明细', toolbar: '#tbLook'}
        ,{field: 'createTime$', title: '创建时间', align: 'center' , sort:true}
        // ,{field: 'orderNo', align: 'center',title: '单号', hide:true}
        // ,{field: 'pakoutTime', align: 'center',title: '出库时间', hide:true}
        // ,{field: 'orderWeight', align: 'center',title: '重量', hide:true}
@@ -89,7 +90,7 @@
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
    dropdown: 'dropdown/dropdown',
}).use(['table','laydate', 'form', 'admin', 'dropdown'], function() {
}).use(['table','laydate', 'form', 'admin', 'dropdown', 'laydate'], function() {
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
@@ -162,6 +163,12 @@
        $('.layui-table-header .layui-table').css('transform', left); //设置表格header的内容反向(-)移动
    });
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
    });
    table.on('tool(plaDetl)', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;
src/main/webapp/views/pla/plaDetl.html
@@ -147,8 +147,19 @@
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline cool-auto-complete">
                <input id="maktx" class="layui-input" type="text" style="display: none">
                <input id="maktxV" name="brand" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" placeholder="牌号" type="text" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="matMaktxQueryByMaktx" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="matMaktxQueryByMaktxSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <input class="layui-input" type="text" name="brand" placeholder="牌号" autocomplete="off">
                <input class="layui-input" type="text" name="type" placeholder="物资类别" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline">
@@ -164,12 +175,11 @@
                </select>
            </div>
        </div>
        <!--    <div class="layui-inline">-->
        <!--        <div class="layui-input-inline">-->
        <!--            <input class="layui-input" type="text" name="row" placeholder="排数" autocomplete="off">-->
        <!--        </div>-->
        <!--    </div>-->
        <div class="layui-inline" style="width: 300px">
            <div class="layui-input-inline">
                <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">