陈战涛
2023-05-30 69f11b34307678ae29e35646eb57883bfe5ce984
扦样化验优化1-新增扦样信息
已修改6个文件
已添加6个文件
1361 ■■■■■ 文件已修改
igds-core/src/main/java/com/ld/igds/models/InoutRecord.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/dto/InoutCheckData.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/dto/InoutCheckParam.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutCheckMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/resources/mapper/InoutCheckMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/resources/mapper/InoutRecordMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/admin/inout/in-sample.js 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/admin/inout/in-sample.html 449 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/models/InoutRecord.java
@@ -143,7 +143,7 @@
    @PropertyDef(label = "质检时间")
    private Date checkTime;
    @Column(name = "SAMPLE_USER_")
    @Column(name = "SAMPLE_USER_", length = 50)
    @PropertyDef(label = "扦样人")
    private String sampleUser;
@@ -151,11 +151,11 @@
    @PropertyDef(label = "扦样时间")
    private Date sampleTime;
    @Column(name = "SAMPLE_TYPE_")
    @Column(name = "SAMPLE_TYPE_", length = 1)
    @PropertyDef(label = "扦样方式", description = "0-人工,1=自动,2=智能随机")
    private Date sampleType;
    private String sampleType;
    @Column(name = "CHECK_ID_")
    @Column(name = "CHECK_ID_", length = 12)
    @PropertyDef(label = "质检单号")
    private String checkId;
@@ -193,7 +193,7 @@
    @PropertyDef(label = "空车称重时间")
    private Date emptyWeightTime;
    @Column(name = "EMPTY_WEIGHT_USER_")
    @Column(name = "EMPTY_WEIGHT_USER_", length = 50)
    @PropertyDef(label = "空车称重人")
    private String emptyWeightUser;
@@ -237,7 +237,7 @@
    @PropertyDef(label = "结算金额", description = "单位:元")
    private Double settleMoney = 0.00;
    @Column(name = "SETTLE_ID_")
    @Column(name = "SETTLE_ID_", length = 50)
    @PropertyDef(label = "结算单号", description = "如果是单车结算必填")
    private String settleId;
@@ -270,11 +270,11 @@
    @PropertyDef(label = "包装物", description = "1:麻袋2:编织袋3:散装9:其他")
    private String bzw;
    @Column(name = "dbz", length = 2)
    @Column(name = "dbz")
    @PropertyDef(label = "单包重", description = "单位:公斤")
    private Double dbz;
    @Column(name = "bzbjs", length = 2)
    @Column(name = "bzbjs")
    @PropertyDef(label = "包件数", description = "单位:件")
    private int bzbjs;
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutController.java
@@ -10,9 +10,7 @@
import com.ld.igds.data.Page;
import com.ld.igds.data.PageResponse;
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.inout.dto.InoutGateDto;
import com.ld.igds.inout.dto.InoutParam;
import com.ld.igds.inout.dto.*;
import com.ld.igds.inout.manager.InoutCommonManager;
import com.ld.igds.inout.manager.InoutManager;
import com.ld.igds.io.dto.WeightDto;
@@ -716,4 +714,90 @@
                    "后台异常:" + e.getMessage());
        }
    }
    /**
     * æ‰¦æ ·é¡µé¢
     *
     * @param sort è¡¨ç¤ºä½¿ç”¨çš„出入库设备配套号,不传递默认为1
     * @return
     */
    @RequestMapping("/in-sample")
    public ModelAndView inSample(HttpServletRequest httpRequest, @RequestParam(value = "sort", required = false) String sort) {
        if (StringUtils.isEmpty(sort)) {
            sort = commonManager.getInoutWeightByClient(httpRequest);
        }
        ModelAndView view = new ModelAndView();
        // ä»“库列表做下拉框使用
        List<Depot> listDepot = commonManager.listDepot(true);
        view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
        IUser user = ContextUtil.getLoginUser();
        view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
        String deptId = ContextUtil.subDeptId(user);
        view.addObject("bizType", BizType.INOUT_IN.getCode());
        view.addObject("type", InoutConstant.TYPE_IN);
        view.addObject("deptId", deptId);
        //入库流程
        String inoutProgress = inoutCommonManager.getInoutProgressConf(user.getCompanyId(), deptId, InoutConstant.TYPE_IN);
        view.addObject("inoutProgress", inoutProgress);
        // å½“前流程节点
        view.addObject("progress", InoutConstant.PROGRESS_CHECK);
        // ç²®é£Ÿå“ç§ä¸‹æ‹‰æ¡†
        List<DicTrigger> listFoodVariety = inoutCommonManager.getDicTrigger(
                Constant.TRIGGER_PARENT_FOOD_VARIETY, user.getCompanyId());
        view.addObject("listFoodVariety", listFoodVariety);
        // ç²®é£Ÿç­‰çº§ä¸‹æ‹‰æ¡†
        List<DicTrigger> listFoodLevel = inoutCommonManager.getDicTrigger(
                Constant.TRIGGER_PARENT_FOOD_LEVEL, user.getCompanyId());
        view.addObject("listFoodLevel", listFoodLevel);
        view.addObject("endTime",
                DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        view.addObject("startTime", DateFormatUtils.format(
                DateUtil.getNewByDay(null, -10), "yyyy-MM-dd"));
        // èŽ·å–å‡ºå…¥åº“é…ç½®ä¿¡æ¯
        List<InoutConf> listInoutConf = inoutCommonManager.getListInoutConf(user.getCompanyId(), deptId);
        // èŽ·å–æ‰¦æ ·æœºä¿¡æ¯
        InoutConf conf = inoutCommonManager.getInoutConf(listInoutConf, sort, InoutConstant.CONF_TYPE_20, InoutConstant.PROGRESS_CHECK, 1);
        view.addObject("checkDto", conf);
        view.setViewName("admin/inout/in-sample");
        return view;
    }
    /**
     * åˆ†é¡µèŽ·å–æ‰¦æ ·è®°å½•ä¿¡æ¯
     *
     * @param param
     * @return
     */
    @RequestMapping("/page-sample-data")
    public PageResponse<Page<InoutCheckData>> pageSampleData(@RequestBody InoutCheckParam param) {
        return inoutManager.pageSampleData(param);
    }
    /**
     * æ‰¦æ ·é¡µé¢æäº¤
     *
     * @param data
     * @return
     */
    @RequestMapping("/update-sample")
    public PageResponse<InoutCheckData> updateSample(@RequestBody InoutCheckData data) {
        try {
            return inoutManager.updateSampleData(data);
        } catch (Exception e) {
            log.error("后台异常:{}", e);
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
                    "后台异常:" + e.getMessage(), null);
        }
    }
}
igds-inout/src/main/java/com/ld/igds/inout/dto/InoutCheckData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.ld.igds.inout.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * å‡ºå…¥åº“扦样数据封装
 *
 * @author czt
 * @date 2023-05-30 16:25
 */
@Data
public class InoutCheckData implements Serializable {
    private static final long serialVersionUID = 1L;
    //流水号
    private String id;
    //组织编码
    private String companyId;
    //库区编码
    private String deptId;
    //出入库类型,IN=入库,OUT=出库
    private String type;
    //流程进度
    private String progress;
    //数据状态
    private String recordStatus;
    //智慧卡号
    private String intelCard;
    //登记时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date registerTime;
    //登记人
    private String registerUser;
    //车船号
    private String plateNum;
    //扦样人
    private String sampleUser;
    //扦样时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date sampleTime;
    //扦样方式:0-人工,1=自动,2=智能随机
    private String sampleType;
    //质检单号
    private String checkId;
    //扦样状态
    private String sampleStatus;
}
igds-inout/src/main/java/com/ld/igds/inout/dto/InoutCheckParam.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ld.igds.inout.dto;
import com.bstek.dorado.annotation.PropertyDef;
import com.ld.igds.data.BaseParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
 * å‡ºå…¥åº“-扦样参数
 *
 * @author czt
 * @date 2023-05-30 18:10
 *
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class InoutCheckParam extends BaseParam {
    public String plateNum;// è½¦ç‰Œå·
    private String id;// æµæ°´å·
    private String progress;// å½“前所在流程
    private String type;// ä¸šåŠ¡æ•°æ®ç±»åž‹ï¼Œå‡ºåº“æˆ–è€…å…¥åº“
    private String checkId;// åŒ–验单号
    private String sampleStatus; //扦样状态
}
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutManager.java
@@ -11,9 +11,7 @@
import com.ld.igds.file.CoreFileService;
import com.ld.igds.file.dto.FileData;
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.inout.dto.InoutGateDto;
import com.ld.igds.inout.dto.InoutParam;
import com.ld.igds.inout.dto.*;
import com.ld.igds.inout.service.InoutService;
import com.ld.igds.m.service.InoutCommonService;
import com.ld.igds.models.Depot;
@@ -25,6 +23,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -1104,4 +1103,66 @@
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功", data);
    }
}
    /**
     * æ ¹æ®æ¡ä»¶èŽ·å–æ‰¦æ ·æ•°æ®
     * @param param
     * @return
     */
    public PageResponse<Page<InoutCheckData>> pageSampleData(InoutCheckParam param) {
        if (StringUtils.isEmpty(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        //若查询条件为已扦样,则流程置空;若未扦样,则流程不处理,仍为扦样化验流程(CHECK)
        if ("SAMPLE".equals(param.getSampleStatus())) {
            param.setProgress(null);
        }
        //获取扦样数据
        Page<InoutCheckData> sampleList = inoutService.pageSampleData(param);
        if (null == sampleList.getRecords() || sampleList.getRecords().isEmpty()) {
            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(),
                    "获取到数据信息为空");
        }
        return new PageResponse<>(RespCodeEnum.CODE_0000, sampleList);
    }
    @Transactional(rollbackFor = Exception.class)
    public PageResponse<InoutCheckData> updateSampleData(InoutCheckData data) throws Exception {
        // èŽ·å–ä¸šåŠ¡æ•°æ®ä¿¡æ¯
        InoutParam param = new InoutParam();
        param.setCompanyId(data.getCompanyId());
        param.setId(data.getId());
        InoutData curData = inoutService.inoutProgressQuery(param);
        if (null == curData) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
                    "没有获取到入库业务数据信息,更新失败", data);
        }
        if (InoutConstant.PROGRESS_RECORD.equals(curData.getProgress())) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(),
                    "当前流程已经结束,不支持修改");
        }
        //扦样信息
        curData.setSampleTime(data.getSampleTime());
        curData.setSampleType(data.getSampleType());
        curData.setSampleUser(data.getSampleUser());
        String msg = inoutService.updateSampleData(curData);
        if (null != msg) {
            return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), msg);
        }
        return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "执行成功");
    }
}
igds-inout/src/main/java/com/ld/igds/inout/mapper/InoutCheckMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ld.igds.inout.mapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.ld.igds.inout.dto.InoutCheckData;
import com.ld.igds.inout.dto.InoutCheckParam;
import com.ld.igds.inout.dto.InoutData;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * å‡ºå…¥åº“-扦样化验查询
 * @author czt
 * @date 2023-05-30 17:45
 */
public interface InoutCheckMapper {
    /**
     * åˆ†é¡µèŽ·å–æ‰¦æ ·æ•°æ®
     *
     * @param page
     * @param param
     * @return
     */
    List<InoutCheckData> pageSampleData(@Param("page") Page<InoutCheckData> page,
                                        @Param("param") InoutCheckParam param);
    /**
     * æ›´æ–°æ‰¦æ ·æ•°æ®
     *
     * @param data
     * @return
     */
    int updateSampleData(@Param("data") InoutData data);
}
igds-inout/src/main/java/com/ld/igds/inout/service/InoutService.java
@@ -244,4 +244,20 @@
     * @return
     */
    int checkExist(InoutParam param);
    /**
     * åˆ†é¡µèŽ·å–æ‰¦æ ·æ•°æ®
     *
     * @param param
     * @return
     */
    Page<InoutCheckData> pageSampleData(InoutCheckParam param);
    /**
     * æ›´æ–°æ‰¦æ ·ä¿¡æ¯
     * @param data
     * @return
     * @throws Exception
     */
    String updateSampleData(InoutData data);
}
igds-inout/src/main/java/com/ld/igds/inout/service/impl/InoutServiceImpl.java
@@ -11,6 +11,9 @@
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.inout.dto.InoutParam;
import com.ld.igds.inout.dto.InoutCheckData;
import com.ld.igds.inout.dto.InoutCheckParam;
import com.ld.igds.inout.mapper.InoutCheckMapper;
import com.ld.igds.inout.mapper.InoutRecordMapper;
import com.ld.igds.inout.service.InoutService;
import com.ld.igds.io.constant.OrderRespEnum;
@@ -38,6 +41,8 @@
    @Resource
    private InoutRecordMapper inoutMapper;
    @Resource
    private InoutCheckMapper inoutCheckMapper;
    @Resource
    private RedisUtil redisUtil;
    @Resource
@@ -750,4 +755,46 @@
    public String buildInoutKey(String deptId, String key, String type, String bizId) {
        return Constant.APP_NAME + ":" + deptId + ":" + key + ":" + type + ":" + bizId;
    }
    @Override
    public Page<InoutCheckData> pageSampleData(InoutCheckParam param) {
        //设置起始和截止时间
        if (null != param.getStart()) {
            param.setStart(DateUtil.getCurZero(param.getStart()));
        }
        if (null != param.getEnd()) {
            param.setEnd(DateUtil.getNextZero(param.getEnd()));
        }
        // è®¾ç½®è½¦ç‰Œå’Œæ£€éªŒå•据的模糊查询
        if (StringUtils.isNotEmpty(param.getPlateNum())) {
            param.setPlateNum("%" + param.getPlateNum() + "%");
        }
        if (StringUtils.isNotEmpty(param.getCheckId())) {
            param.setCheckId("%" + param.getCheckId() + "%");
        }
        Page<InoutCheckData> page = new Page<>(param.getPage(), param.getLimit());
        page.setSearchCount(true);
        List<InoutCheckData> records = inoutCheckMapper.pageSampleData(page, param);
        page.setRecords(records);
        return page;
    }
    @Override
    public String updateSampleData(InoutData data) {
        if (StringUtils.isEmpty(data.getCompanyId())) {
            data.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(data.getDeptId())) {
            data.setCompanyId(ContextUtil.subDeptId(null));
        }
        int num = inoutCheckMapper.updateSampleData(data);
        return null;
    }
}
igds-inout/src/main/resources/mapper/InoutCheckMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
<?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.ld.igds.inout.mapper.InoutCheckMapper">
    <select id="pageSampleData" resultType="com.ld.igds.inout.dto.InoutCheckData"
            parameterType="com.ld.igds.inout.dto.InoutCheckParam">
        select
        ID_ as id,
        COMPANY_ID_ as companyId,
        DEPT_ID_ as deptId,
        TYPE_ as type,
        PROGRESS_ as progress,
        RECORD_STATUS_ as recordStatus,
        INTEL_CARD_ as intelCard,
        REGISTER_TIME_ as registerTime,
        REGISTER_USER_ as registerUser,
        PLATE_NUM_ as plateNum,
        SAMPLE_USER_ as sampleUser,
        SAMPLE_TIME_ as sampleTime,
        SAMPLE_TYPE_ as sampleType,
        CHECK_ID_ as checkId,
        IF(ISNULL(SAMPLE_TIME_),'NONE','SAMPLE') AS sampleStatus
        from
        D_INOUT_RECORD
        <where>
            <if test="param.companyId != null and param.companyId != '' ">AND COMPANY_ID_ = #{param.companyId}</if>
            <if test="param.deptId != null and  param.deptId != '' ">AND DEPT_ID_ = #{param.deptId}</if>
            <if test="param.checkId != null and param.checkId != '' ">AND CHECK_ID_ like #{param.checkId}</if>
            <if test="param.plateNum != null and param.plateNum != '' ">AND PLATE_NUM_ like #{param.plateNum}</if>
            <if test="param.progress != null and param.progress != '' ">AND PROGRESS_ = #{param.progress}</if>
            <if test="param.start != null">AND REGISTER_TIME_ <![CDATA[ >= ]]>#{param.start,jdbcType=TIMESTAMP}</if>
            <if test="param.end != null">AND REGISTER_TIME_  <![CDATA[ <= ]]>#{param.end,jdbcType=TIMESTAMP}</if>
            <if test="param.sampleStatus != null and param.sampleStatus == 'NONE' ">AND SAMPLE_TIME_ IS NULL</if>
            <if test="param.sampleStatus != null and param.sampleStatus != 'NONE' ">AND SAMPLE_TIME_ IS NOT NULL</if>
        </where>
        AND RECORD_STATUS_ != 'DEL'
        AND RECORD_STATUS_ != 'ERROR'
        ORDER BY REGISTER_TIME_
    </select>
    <update id="updateSampleData" parameterType="com.ld.igds.inout.dto.InoutData">
        update D_INOUT_RECORD set
        <if test="data.sampleUser != null">SAMPLE_USER_ = #{data.sampleUser},</if>
        <if test="data.sampleTime != null">SAMPLE_TIME_ = #{data.sampleTime},</if>
        <if test="data.sampleType != null">SAMPLE_TYPE_ = #{data.sampleType},</if>
        TYPE_ = #{data.type}
        where
        COMPANY_ID_ =#{data.companyId}
        and ID_ =#{data.id}
    </update>
</mapper>
igds-inout/src/main/resources/mapper/InoutRecordMapper.xml
@@ -255,7 +255,6 @@
        <if test="data.completeTime != null">COMPLETE_TIME_ = #{data.completeTime},</if>
        <if test="data.completeUser != null">COMPLETE_USER_ = #{data.completeUser},</if>
        <if test="data.remarks != null">REMARKS_ = #{data.remarks},</if>
        <if test="data.curStorage != null">CUR_STORAGE_ = #{data.curStorage},</if>
        <if test="data.foodType != null">FOOD_TYPE_ = #{data.foodType},</if>
        <if test="data.price != null">PRICE_ = #{data.price},</if>
        <if test="data.settleMoney != null">SETTLE_MONEY_ = #{data.settleMoney},</if>
igds-web/src/main/resources/static/admin/inout/in-sample.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,486 @@
//当前节点 å…¥åº“质检
var layer;
var form;
var table;
var page = 1;
var limit = 10;
var curSampleData = null;// å½“前编辑数据
var curCheckItems = null;// å½“前数据的检查项信息
$(function () {
    layui.use(['layer', 'laydate', 'form', 'table'], function () {
        layer = layui.layer;
        form = layui.form;
        table = layui.table;
        var laydate = layui.laydate;
        laydate.render({
            elem: '#start',
            theme: '#7b8e9f',
            value: startTime
        });
        laydate.render({
            elem: '#end',
            theme: '#7b8e9f',
            value: endTime
        });
        laydate.render({
            elem: '#foodYear',
            theme: '#7b8e9f',
            type: 'year',
        });
        // åˆå§‹åŒ–表单数据
        renderTable();
        // ç›‘听行工具事件
        table.on('tool(tableData)', function (obj) {
            if (obj.event === 'edit') {
                //展示数据
                showDetail(obj);
            }
        });
        //监听粮食品种
        layui.form.on('select(select_foodVariety)', function (data) {
            updateFoodVariety(data.value);
        });
        //监听化验结果单填写数据,并给出提示结果
        table.on('edit(tableCheckItem)', function (obj) {
            getResult(obj);
        });
    });
    //显示入库流程
    showProgress();
    // åˆå§‹åŒ–WebSocket
    initInoutWS(deptId, bizType, progress, userId);
});
// socket信息返回處理
function socketOnMessage(packet) {
    layer.alert(packet.data);
    window.parent.sysNotify(packet.data);
}
/**
 * æ¡ä»¶æŸ¥è¯¢
 */
function flushData() {
    var index = layer.load();
    var param = form.val("form-param");
    table.reload('tableData', {
        url: "../../basic/inout/page-sample-data",
        where: param
    });
    $("thead tr").css({
        "border-bottom": "2px solid #53adce",
        "background": "#eff4f6"
    });
    layer.close(index);
}
/**
 * æ¸²æŸ“表单数据
 */
function renderTable() {
    var param = form.val("form-param");
    // æ¸…空数据
    $("#tableData").empty();
    table.render({
        elem: '#tableData',
        url: '../../basic/inout/page-sample-data',
        page: true,
        limit: limit,
        even: true,
        method: 'POST',
        contentType: "application/json;charset=UTF-8",
        cols: [[{
            field: 'checkId',
            title: '质检单号',
            style: 'color: #f67d06;font-weight: bold'
        }, {
            field: 'plateNum',
            title: '车船号',
            width: '15%',
            style: 'font-weight: bold'
        }, {
            field: 'registerTime',
            title: '登记时间',
            width: '15%'
        }, {
            field: 'sampleUser',
            title: '扦样人',
            width: '15%'
        }, {
            field: 'sampleTime',
            title: '扦样时间',
            width: '15%'
        }, {
            field: 'sampleType',
            title: '扦样类型',
            width: '10%',
            templet: function (item) {
                if (item.sampleType == null) {
                    return "其他";
                }
                if (item.sampleType == '0') {
                    return "人工";
                }
                if (item.sampleType == '1') {
                    return "自动";
                }
                if (item.sampleType == '2') {
                    return "智能随机";
                }
            }
        }, {
            field: 'sampleStatus',
            title: '是否扦样',
            width: '10%',
            templet: function (item) {
                if (item.sampleStatus == null) {
                    return "未扦样";
                }
                if (item.sampleStatus == 'NONE') {
                    return "未扦样";
                }
                if (item.sampleStatus == 'SAMPLE') {
                    return "已扦样";
                }
            }
        }, {
            field: '',
            title: '操作',
            width: '10%',
            toolbar: "#barControl"
        }]],
        where: param,
        parseData: function (res) {
            if ("0000" == res.code) {
                return {
                    "code": "0",
                    "msg": res.msg,
                    "count": res.data.total,
                    "data": res.data.records
                }
            } else {
                return {
                    "code": "1",
                    "msg": res.msg
                }
            }
        }
    });
    $("thead tr").css({
        "border-bottom": "2px solid #53adce",
        "background": "#eff4f6"
    });
}
// è¡¨å•清空
function resetForm() {
    $("#form-param")[0].reset();
    form.render();
};
//根据填写化验数据,给出提醒是否合格
function getResult(obj) {
    var data = obj.data;
    //填写的数据值
    var newValue = data.value;
    //标准值
    var limit = data.upperLimit;
    //运算符
    var symbol = data.operaSymbol;
    if (symbol && limit) {
        if (">=" == symbol) {
            if (newValue < limit) {
                data.remarks = "不合格";
            } else {
                data.remarks = "合格";
            }
        }
        if ("<=" == symbol) {
            if (newValue > limit) {
                data.remarks = "不合格";
            } else {
                data.remarks = "合格";
            }
        }
        if ("==" == symbol) {
            if (newValue != limit) {
                data.remarks = "不合格";
            } else {
                data.remarks = "合格";
            }
        }
    }
    obj.update(data);
    //根据化验结果提醒是否合格
    updateCheckResultTip();
}
//根据选择仓库显示粮食品种
function updateFoodVariety(foodVariety) {
    if (null == foodVariety || "" == foodVariety) return;
    form.val("form-detail", {
        foodVariety: foodVariety
    });
    form.render();
    flushCheckItem(foodVariety);
}
// æ ¹æ®æ¨¡å¼å¯åŠ¨å¼€å§‹æ‰¦æ ·
function checkExe(type) {
    checkDto.type = type;
    var param = JSON.stringify(checkDto);
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../api/check/check-exe",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.alert(result.msg);
            } else {
                layer.msg("操作命令发送成功!");
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("后台异常,操作命令发送失败!");
        }
    });
};
// å…³é—­æ‰¦æ ·æœºå™¨
function checkStop() {
    var param = JSON.stringify(checkDto);
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../api/check/stop",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.alert(result.msg);
            } else {
                layer.msg("操作命令发送成功!");
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("后台异常,操作命令发送失败!");
        }
    });
};
// æ‰¦æ ·æœºå¤ä½
function checkReset() {
    var param = JSON.stringify(checkDto);
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../api/check/reset",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.alert(result.msg);
            } else {
                layer.msg("操作命令发送成功!");
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("后台异常,操作命令发送失败!");
        }
    });
}
// æ‰¦æ ·æœºè§£é™¤æ€¥åœ
function checkResetStop() {
    var param = JSON.stringify(checkDto);
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../api/check/reset-stop",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: param,
        success: function (result) {
            layer.close(index);
            if (result.code != "0000") {
                layer.alert(result.msg);
            } else {
                layer.msg("操作命令发送成功!");
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("后台异常,操作命令发送失败!");
        }
    });
}
//隐藏信息--替换为*
function replaceStr(str) {
    if (!str) {
        return "";
    }
    var split = str.split("");
    if (split.length == 1) {
        return "*";
    }
    if (split.length == 2 || split.length == 3) {
        return str.slice(0, 1) + "**"
    }
    return str.slice(0, 1) + "***" + str.slice(split.length - 1);
}
function showDetail(obj) {
    curSampleData = obj.data;
    // èµ‹å€¼
    form.val("form-detail", curSampleData);
    form.render();
    layer.open({
        type: 1,
        title: "扦样信息",
        area: ['900px', '400px'],
        shade: 0,
        content: $('#checkDetail'),
        btnAlign: 'c',
        btn: ['保存提交', '关闭取消'],
        yes: function () {
            // æ›´æ–°åˆ°é¡µé¢
            var data = form.val("form-detail");
            obj.update(data);
            // åˆå¹¶æ›´æ–°ç•¶å‰ç¼–辑数据
            Object.assign(curSampleData, data);
            submit();
        }, btn2: function () {
            layer.closeAll();
        },
        closeBtn: 0
    });
}
// å½“前完成
function submit() {
    if (!curSampleData.sampleUser) {
        layer.alert("请输入扦样人!!");
        return;
    }
    if (!curSampleData.sampleTime) {
        layer.alert("请输入扦样时间!!");
        return;
    }
    var index = layer.load();
    $.ajax({
        type: "POST",
        url: "../../basic/inout/update-sample",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(curSampleData),
        success: function (result) {
            if (result.code != "0000") {
                layer.close(index);
                notify(result.msg, result.data);
            } else {
                layer.closeAll();
                curSampleData = null;
                notify("数据提交成功", result.data);
                flushData();
            }
        },
        error: function () {
            layer.close(index);
            layer.alert("提交失败,请重新尝试!");
        }
    });
}
//控制流程环节显示
function showProgress() {
    if (!inoutProgress) {
        return;
    }
    if (inoutProgress.indexOf("REGISTER") == -1) {
        $("#progress-register").css("display", "none");
    }
    if (inoutProgress.indexOf("CHECK") == -1) {
        $("#progress-check").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_FULL") == -1) {
        $("#progress-fullWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("HANDLE") == -1) {
        $("#progress-hand").css("display", "none");
    }
    if (inoutProgress.indexOf("WEIGHT_EMPTY") == -1) {
        $("#progress-emptyWeight").css("display", "none");
    }
    if (inoutProgress.indexOf("CARD_BACK") == -1) {
        $("#progress-cardBack").css("display", "none");
    }
}
/**
 * å¼¹å‡ºæé†’框
 * @param msg æé†’信息
 * @param data æ•°æ®ä¿¡æ¯ï¼Œå¯èƒ½ä¸ºç©º
 */
function notify(msg, data) {
    if (data) {
        //赋值
        $("#resultMsg").text(msg);
        $("#resultUserName").text(data.userName);
        $("#resultPlateNum").text(data.plateNum);
        if ("IN" == data.type) {
            $("#resultType").text("入库-" + INOUT_PROGRESS_MSG(data.progress));
        } else {
            $("#resultType").text("出库-" + INOUT_PROGRESS_MSG(data.progress));
        }
        $("#resultIntelCard").text(data.intelCard);
        layer.open({
            type: 1,
            offset: ['150px', '200px'],
            area: '450px;',
            shade: 0.8,
            id: 'dialog_notify_info',
            btn: ['确定'],
            content: $('#dialog-from-notify'),
            yes: function (index) {
                layer.closeAll();
            }
        });
    } else {
        layer.alert(msg, {offset: ['300px', '300px']});
    }
}
igds-web/src/main/resources/templates/admin/inout/in-sample.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,449 @@
<!DOCTYPE html>
<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>出入库管理-扦样</title>
    <link rel="stylesheet" type="text/css"
          th:href="@{../../static/plugins/layui/css/layui.css?v=2.5.5}">
    <link rel="stylesheet" type="text/css"
          th:href="@{../../static/admin/inout/style.css}">
    <style type="text/css">
        .qyzj-tabBox {
            margin-top: 0px !important;
            overflow: hidden;
            width: 100%;
        }
        #layui-table-page1 {
            text-align: right !important;
        }
        .display-none {
            display: none;
        }
        .control-btn {
            height: 35px;
            line-height: 30px;
            background-color: #f67d06;
        }
        .tip-red {
            text-align: right;
            padding-left: 40px;
            font-size: 16px;
            color: red;
            font-weight: bold;
        }
        thead span {
            font-weight: bold
        }
        #label1, #label4, #label5 {
            color: red;
        }
        .layui-select-disabled .layui-disabled {
            color: #000 !important;
        }
        .layui-table td {
            font-weight: bold;
        }
        .rk-step-wrap {
            padding: 0px;
            border-bottom: 0px;
            text-align: center;
        }
        .qyzj-btnbox {
            margin-top: 10px;
        }
        .qyzj-btnbox .rkbk-quick {
            margin-top: 13px;
        }
        .qyzj-con {
            margin-top: 10px;
            background: #dee6ec;
        }
        .rkbk-search-input {
            background: #FFF !important;
        }
        .rkbk-search-input.bg-date {
            background: #FFF !important;
        }
        thead span {
            font-weight: bold
        }
        .red {
            color: red;
            font-weight: bold;
        }
        .layui-select-disabled .layui-disabled {
            color: #000 !important;
        }
        .layui-table td {
            font-weight: bold;
        }
        .layui-elem-quote {
            padding: 10px;
            color: blue;
        }
    </style>
</head>
<body>
<div class="l-container layui-clear">
    <div class="rk-main">
        <div class="qyzj-btnbox layui-clear">
            <!--扦样操作-->
            <div class="rkbk-quick fl">
                <button type="button" class="rkbk-quick-btn layui-btn btn-violet"
                        onclick="checkExe('big')">
                    <i><img th:src="@{../../static/images/icon-hyd.png}"/></i>大车扦样
                </button>
                <button type="button" class="rkbk-quick-btn layui-btn btn-violet"
                        onclick="checkExe('small')">
                    <i><img th:src="@{../../static/images/icon-hyd.png}"/></i>小车扦样
                </button>
                <button class="rkbk-quick-btn layui-btn btn-blue"
                        onclick="checkReset()">
                    <i><img th:src="@{../../static/images/icon-fuwei.png}"/></i>扦样复位
                </button>
                <button class="rkbk-quick-btn layui-btn btn-red"
                        onclick="checkStop()">
                    <i><img th:src="@{../../static/images/icon-stop.png}"/></i>扦样急停
                </button>
                <button class="rkbk-quick-btn layui-btn btn-blue"
                        onclick="checkResetStop()">
                    <i><img th:src="@{../../static/images/icon-fuwei.png}"/></i>急停复位
                </button>
            </div>
            <!--流程引导-->
            <div class="rk-step-wrap fr">
                <ul class="rk-step">
                    <li id="progress-register" class="active rk-step-first">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-dengji.png}"/>
                        </span>
                        <p>入库登记</p>
                    </li>
                    <li id="progress-check" class="active">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-zhijian.png}"/>
                        </span>
                        <p>扦样质检</p>
                    </li>
                    <li id="progress-fullWeight">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-chengzhong.png}"/>
                        </span>
                        <p>满车称重</p>
                    </li>
                    <li id="progress-hand">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-xiehuo.png}"/>
                        </span>
                        <p>入库值仓</p>
                    </li>
                    <li id="progress-emptyWeight">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-chengzhong.png}"/>
                        </span>
                        <p>空车称重</p>
                    </li>
                    <li id="progress-cardBack">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-banli.png}"/>
                        </span>
                        <p>离库确认</p>
                    </li>
                </ul>
            </div>
        </div>
        <div class="qyzj-con radius-6">
            <div class="qyzj-con-top layui-row">
                <form class="layui-form" action="" id="form-param" lay-filter="form-param">
                    <div class="layui-form-item display-none">
                        <label class="layui-form-label">隐藏-类型</label>
                        <div class="layui-input-block">
                            <input type="text" name="type" th:value="${type}" autocomplete="off"
                                   class="layui-input rkbk-search-input">
                        </div>
                    </div>
                    <div class="layui-form-item display-none">
                        <label class="layui-form-label">隐藏-流程</label>
                        <div class="layui-input-block">
                            <input type="text" name="progress" th:value="${progress}" autocomplete="off"
                                   class="layui-input rkbk-search-input">
                        </div>
                    </div>
                    <div class="layui-col-xs3">
                        <div class="layui-form-item">
                            <label class="layui-form-label">质检单号</label>
                            <div class="layui-input-block">
                                <input type="text" name="checkId" placeholder="请输入" autocomplete="off"
                                       class="layui-input rkbk-search-input">
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs3">
                        <div class="layui-form-item">
                            <label class="layui-form-label">车船号</label>
                            <div class="layui-input-block rkbk-selBox">
                                <input type="text" name="plateNum" placeholder="请输入" autocomplete="off"
                                       class="layui-input rkbk-search-input">
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs3">
                        <div class="layui-form-item">
                            <label class="layui-form-label">起始时间</label>
                            <div class="layui-input-block">
                                <input type="text" name="start" placeholder="请输入"
                                       autocomplete="off"
                                       class="layui-input rkbk-search-input bg-date" id="start">
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs3">
                        <div class="layui-form-item">
                            <label class="layui-form-label">截止时间</label>
                            <div class="layui-input-block">
                                <input type="text" name="end" placeholder="请输入"
                                       autocomplete="off"
                                       class="layui-input rkbk-search-input bg-date" id="end">
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs3">
                        <div class="layui-form-item">
                            <label class="layui-form-label">是否扦样</label>
                            <div class="layui-input-block rkbk-selBox">
                                <select name="sampleStatus">
                                    <option value="NONE" selected>未扦样</option>
                                    <option value="SAMPLE">已扦样</option>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs3 layui-text-right">
                        <input type="button" value="查询/刷新"
                               class="qyzj-top-btn layui-btn btn-blue" onclick="flushData()"/>
                        <input type="button" value="清空条件"
                               class="qyzj-top-btn layui-btn btn-red" onclick="resetForm()"/>
                    </div>
                </form>
            </div>
            <div class="qyzj-tabBox">
                <table class="layui-table" lay-skin="nob" id="tableData"
                       lay-filter="tableData">
                    <colgroup>
                        <col width="10%">
                        <col width="10%">
                        <col width="15%">
                        <col width="10%">
                        <col width="10%">
                        <col width="15%">
                        <col width="10%">
                        <col width="">
                    </colgroup>
                    <thead>
                    <tr class="qyzj-table-tit">
                        <th>质检单号</th>
                        <th>车船号</th>
                        <th>登记时间</th>
                        <th>是否扦样</th>
                        <th>扦样人</th>
                        <th>扦样时间</th>
                        <th>扦样类型</th>
                        <th>操作</th>
                    </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
<script th:inline="javascript">
    var progress = [[${progress}]];
    var listDepot = [[${listDepot}]];
    //业务步骤
    var bizType = [[${bizType}]];
    //出入库类型
    var type = [[${type}]];
    //userId
    var userId = [[${loginUser.username}]];
    var checkUser = [[${loginUser.cname}]];
    var companyId = [[${loginUser.companyId}]];
    //品种
    var listFoodVariety = [[${listFoodVariety}]];
    var startTime = [[${startTime}]];
    var endTime = [[${endTime}]];
    //扦样机信息
    var checkDto = [[${checkDto}]];
    //所属分库
    var deptId = [[${deptId}]];
    var inoutProgress = [[${inoutProgress}]];
</script>
<script th:src="@{../../static/plugins/layui/layui.js}"></script>
<script th:src="@{../../static/js/jquery.min.js}"></script>
<script th:src="@{../../static/js/constant.js}"></script>
<script th:src="@{../../static/js/igds-common.js}"></script>
<script th:src="@{../../static/admin/inout/in-sample.js}"></script>
<script type="text/html" id="barControl">
    <a class="layui-btn control-btn" lay-event="edit">扦样确认</a>
</script>
</body>
<!-- åŒ–验信息,包括基本信息和化验结果 -->
<div class="layui-tab-content" id="checkDetail" style="display: none;">
    <!-- è¡¨å•基本信息 -->
    <form class="layui-form" id="form-detail" lay-filter="form-detail">
        <div class="layui-col-xs6" style="display: none;">
            <div class="layui-form-item">
                <label class="layui-form-label">隐藏字段-流水编号</label>
                <div class="layui-input-block">
                    <input type="text" name="id" autocomplete="off" class="layui-input rkbk-search-input">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label">质检单号</label>
                <div class="layui-input-block">
                    <input type="text" name="checkId" autocomplete="off"
                           class="layui-input rkbk-search-input" disabled="">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label">车  ç‰Œ  å·</label>
                <div class="layui-input-block">
                    <input type="text" name="plateNum" autocomplete="off"
                           class="layui-input rkbk-search-input" disabled="">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label">登记时间</label>
                <div class="layui-input-block">
                    <input type="text" name="registerTime" autocomplete="off"
                           class="layui-input rkbk-search-input" disabled="">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label red">扦样人员</label>
                <div class="layui-input-block">
                    <input type="text" name="sampleUser" autocomplete="off" class="layui-input rkbk-search-input">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label red">扦样时间</label>
                <div class="layui-input-block">
                    <input type="text" name="sampleTime" autocomplete="off" class="layui-input rkbk-search-input">
                </div>
            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="layui-form-item">
                <label class="layui-form-label red">扦样方式</label>
                <div class="layui-input-block">
                    <input type="radio" name="sampleType" value="0" title="人工" checked>
                    <input type="radio" name="sampleType" value="1" title="自动">
                    <input type="radio" name="sampleType" value="2" title="智能随机">
                </div>
            </div>
        </div>
        <div class="layui-col-xs12">
            <blockquote class="layui-elem-quote">
                <div>
                    <span style="font-weight: bold; margin-right: 10px;">备注:扦样时间需晚于登记时间</span>
                </div>
            </blockquote>
        </div>
    </form>
</div>
<!-- å¼¹å‡ºæ¡†çš„信息 -->
<div class="layui-tab-content" id="dialog-from-notify"
     style="display: none;">
    <table class="layui-table">
        <colgroup>
            <col width="100">
        </colgroup>
        <tbody>
        <tr>
            <td>返回信息</td>
            <td id="resultMsg" style="color: red; font-weight: bold;"></td>
        </tr>
        <tr>
            <td>承运人</td>
            <td id="resultUserName" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>车牌号</td>
            <td id="resultPlateNum" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>下一步</td>
            <td id="resultType" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>智慧卡号</td>
            <td id="resultIntelCard" style="font-weight: bold;"></td>
        </tr>
        </tbody>
    </table>
</div>
</html>