ws183
2025-04-28 b306d1106b915bb13fd7a02217ae9c65de2fd03d
新增质检页面附件上传
已修改11个文件
已添加3个文件
828 ■■■■■ 文件已修改
igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-basic/src/main/java/com/ld/igds/basic/manager/FileManager.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/check/dto/CheckItemData.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/check/mapper/CheckStandardMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/file/MyUploadProcessor.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/ReportBill.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/ReportManage.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/service/HQualityManageService.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/view/QualityManager.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/m/view/QualityManagerPR.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/models/MQuality.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/view/service/HDepotStoreService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/resources/mapper/CheckStandardMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-basic/src/main/java/com/ld/igds/basic/controller/FileController.java
@@ -5,6 +5,8 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,11 +15,13 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;
/**
 * æ–‡ä»¶ä¸Šä¼ æŽ¥å£
@@ -170,4 +174,46 @@
        }
    }
    /**
     * PDF文件预览
     * @param response
     */
    @RequestMapping("/show-pdf")
    public void showFile(String fileTime, String fileName, String filePathType, HttpServletResponse response) throws Exception {
        if (!fileName.endsWith(".pdf")) {
            return;
        }
        Date time = DateUtils.parseDate(fileTime, new String[]{"yy-MM-dd HH:mm:ss"});
        String filePath = fileManager.getPathByType(filePathType, time);
        if(StringUtils.isEmpty(filePath)){
            return;
        }
        File file = new File(filePath, fileName);
        try {
            response.setHeader("Content-Disposition", "inline; filename*=UTF-8''" + URLEncoder.encode(file.getName(), "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        ServletOutputStream os = null;
        try {
            os = response.getOutputStream();
            os.write(FileUtils.readFileToByteArray(file));
            os.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
igds-basic/src/main/java/com/ld/igds/basic/manager/FileManager.java
@@ -177,4 +177,17 @@
        
        return readFile.getFile().getAbsolutePath();
    }
    /**
     * æ ¹æ®ä¸åŒçš„类型获取文件路径
     * @param filePathType
     * @param time
     * @return
     */
    public String getPathByType(String filePathType, Date time) {
        if("common".equals(filePathType)){
            return fileService.getCommonFilePath(time);
        }
        return null;
    }
}
igds-core/src/main/java/com/ld/igds/check/dto/CheckItemData.java
@@ -25,4 +25,9 @@
    //运算符号值,只做页面显示用
    private String operaSymbolValue;
    private double perWet;
    private double perImpurity;
}
igds-core/src/main/java/com/ld/igds/check/mapper/CheckStandardMapper.java
@@ -62,4 +62,12 @@
     */
    int delCheckItemByParam(@Param("data") CheckItemData item);
    /**
     * èŽ·å–æŒ‡å®šçš„åŒ–éªŒé¡¹
     *
     * @param item æŸ¥è¯¢æ¡ä»¶
     * @return
     */
    List<CheckItemData> getCheckItemByParam(@Param("data") CheckItemData item);
}
igds-core/src/main/java/com/ld/igds/file/MyUploadProcessor.java
@@ -56,4 +56,44 @@
        return newFileName;
    }
    /**
     * ä¸Šä¼ å…¬å…±æ–‡ä»¶ï¼Œå¦‚合同、计划等
     * myUploadProcessor#uploadCommonFile
     * @param file
     * @param parameter
     * @return
     */
    @FileResolver
    public String uploadCommonFile(UploadFile file, Map<String, Object> parameter) {
        String fileId = null;
        try {
            String oldFileName = (String)parameter.get("name");
            if(oldFileName == null){
                //上传失败:附件名称为空。
                return "10";
            }
            //判断oldFileName后缀名是否为pdf
            if(!oldFileName.endsWith(".pdf")) {
                //上传失败:附件不是pdf文件。
                return "20";
            }
            String basePath = fileService.getCommonFilePath(null);
            fileId = ContextUtil.getTimeId(1000)
                    + file.getFileName().substring(
                    file.getFileName().lastIndexOf("."));
            file.transferTo(new File(basePath + fileId));
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileId;
    }
}
igds-core/src/main/java/com/ld/igds/m/ReportBill.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ld.igds.m;
/**
 * @Description è´¨æ£€æŠ¥å‘Šå•据模板-包含整仓和单车
 * @Author CZT
 * @Date 2024/4/29 9:06
 */
public class ReportBill {
    /*----------整仓质检----------*/
    //整仓质检报告单-小麦
    public static String QUALITY_111 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(小麦)</title><style>body{text-align:center;padding:10px}.tit{margin:10px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>质检报告(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'rowspan=\"5\"`width`=\"22%\">样品信息</td><td width='14%'>单位名称</td><td colspan='2'`width`='27%'>dwmc</td><td width='13%'>库区名称</td><td colspan='2'`width`='26%'>deptName</td></tr><tr><td width='14%'>仓房名称</td><td width='13%'>buildingName</td><td width='14%'>货位名称</td><td width='13%'>depotName</td><td width='13%'>保管员</td><td width='13%'>storeKeeperName</td></tr><tr><td>品种</td><td>foodVariety</td><td>性质</td><td>foodType</td><td>仓内粮食数量</td><td>storageReal吨</td></tr><tr><td>产地</td><td>foodLocation</td><td>等级</td><td>foodLevel</td><td>生产年限</td><td>foodYear</td></tr><tr><td>样品数量</td><td>checkNum KG</td><td>样品代表数量</td><td>foodNumber吨</td><td colspan=\"2\"></td></tr><tr><td colspan='2'>检验单位</td><td colspan=\"6\">unit</td></tr><tr><td colspan='2'rowspan=\"2\">质检人员</td><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td colspan=\"2\"></td></tr><tr><td>扦样时间</td><td>sampleTime</td><td>检验时间</td><td>checkTime</td><td>报告出具时间</td><td>bgcjsj</td></tr><tr><td rowspan=\"6\">质检结果</td><td rowspan=\"3\">质量指标检验</td><td>品种</td><td>foodVariety</td><td>容重(g/L)</td><td>C03_VAL</td><td>等级</td><td>foodLevel</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生芽粒(%)</td><td>C35_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td></tr><tr><td>储存品质检验</td><td>面筋吸水量(%)</td><td>C08_VAL</td><td>品尝分值</td><td>C07_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td rowspan=\"2\">食品安全检验</td><td>呕吐毒(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td colspan=\"2\">备注</td><td colspan=\"6\">remark</td></tr></table><div class='div-tit'></div></body></html>";
    //整仓质检报告单-玉米
    public static String QUALITY_112 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(玉米)</title><style>body{text-align:center;padding:10px}.tit{margin:10px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>质检报告(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'rowspan=\"5\"`width`=\"22%\">样品信息</td><td width='14%'>单位名称</td><td colspan='2'`width`='27%'>dwmc</td><td width='13%'>库区名称</td><td colspan='2'`width`='26%'>deptName</td></tr><tr><td width='14%'>仓房名称</td><td width='13%'>buildingName</td><td width='14%'>货位名称</td><td width='13%'>depotName</td><td width='13%'>保管员</td><td width='13%'>storeKeeperName</td></tr><tr><td>品种</td><td>foodVariety</td><td>性质</td><td>foodType</td><td>仓内粮食数量</td><td>storageReal吨</td></tr><tr><td>产地</td><td>foodLocation</td><td>等级</td><td>foodLevel</td><td>生产年限</td><td>foodYear</td></tr><tr><td>样品数量</td><td>checkNum KG</td><td>样品代表数量</td><td>foodNumber吨</td><td colspan=\"2\"></td></tr><tr><td colspan='2'>检验单位</td><td colspan=\"6\">unit</td></tr><tr><td colspan='2'rowspan=\"2\">质检人员</td><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td colspan=\"2\"></td></tr><tr><td>扦样时间</td><td>sampleTime</td><td>检验时间</td><td>checkTime</td><td>报告出具时间</td><td>bgcjsj</td></tr><tr><td rowspan=\"6\">质检结果</td><td rowspan=\"3\">质量指标检验</td><td>品种</td><td>foodVariety</td><td>容重(g/L)</td><td>C03_VAL</td><td>等级</td><td>foodLevel</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td><td>霉变粒(%)</td><td>C15_VAL</td></tr><tr><td>储存品质检验</td><td>脂肪酸值(mgKOH/100g)</td><td>C14_VAL</td><td>品尝分值</td><td>C15_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td rowspan=\"2\">食品安全检验</td><td>呕吐毒(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td colspan=\"2\">备注</td><td colspan=\"6\">remark</td></tr></table><div class='div-tit'></div></body></html>";
    //整仓质检报告单-适用于稻谷、大米
    public static String QUALITY_113 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(稻谷)</title><style>body{text-align:center;padding:10px}.tit{margin:10px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>质检报告(foodVariety)</h1><div class='div-tit'>编码:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'rowspan=\"5\"`width`=\"22%\">样品信息</td><td width='14%'>单位名称</td><td colspan='2'`width`='27%'>dwmc</td><td width='13%'>库区名称</td><td colspan='2'`width`='26%'>deptName</td></tr><tr><td width='14%'>仓房名称</td><td width='13%'>buildingName</td><td width='14%'>货位名称</td><td width='13%'>depotName</td><td width='13%'>保管员</td><td width='13%'>storeKeeperName</td></tr><tr><td>品种</td><td>foodVariety</td><td>性质</td><td>foodType</td><td>仓内粮食数量</td><td>storageReal吨</td></tr><tr><td>产地</td><td>foodLocation</td><td>等级</td><td>foodLevel</td><td>生产年限</td><td>foodYear</td></tr><tr><td>样品数量</td><td>checkNum KG</td><td>样品代表数量</td><td>foodNumber吨</td><td colspan=\"2\"></td></tr><tr><td colspan='2'>检验单位</td><td colspan=\"6\">unit</td></tr><tr><td colspan='2'rowspan=\"2\">质检人员</td><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td colspan=\"2\"></td></tr><tr><td>扦样时间</td><td>sampleTime</td><td>检验时间</td><td>checkTime</td><td>报告出具时间</td><td>bgcjsj</td></tr><tr><td rowspan=\"7\">质检结果</td><td rowspan=\"4\">质量指标检验</td><td>品种</td><td>foodVariety</td><td>出糙率(%)</td><td>C09_VAL</td><td>等级</td><td>foodLevel</td></tr><tr><td>整精米率(%)</td><td>C10_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>黄粒米(%)</td><td>C11_VAL</td><td>谷外糙米(%)</td><td>C12_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td>互混率(%)</td><td>C13_VAL</td><td colspan=\"4\"></td></tr><tr><td>储存品质检验</td><td>脂肪酸值(mgKOH/100g)</td><td>C14_VAL</td><td>品尝分值</td><td>C07_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td rowspan=\"2\">食品安全检验</td><td>黄曲霉毒素B1(μg/kg)</td><td>C28_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td></tr><tr><td>汞(μg/kg)</td><td>C34_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td><td colspan=\"2\"></td></tr><tr><td colspan=\"2\">备注</td><td colspan=\"6\">remark</td></tr></table><div class='div-tit'></div></body></html>";
    //整仓质检报告单-大豆
    public static String QUALITY_141 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(大豆)</title><style>body{text-align:center;padding:10px}.tit{margin:10px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>质检报告(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'rowspan=\"5\"`width`=\"22%\">样品信息</td><td width='14%'>单位名称</td><td colspan='2'`width`='27%'>dwmc</td><td width='13%'>库区名称</td><td colspan='2'`width`='26%'>deptName</td></tr><tr><td width='14%'>仓房名称</td><td width='13%'>buildingName</td><td width='14%'>货位名称</td><td width='13%'>depotName</td><td width='13%'>保管员</td><td width='13%'>storeKeeperName</td></tr><tr><td>品种</td><td>foodVariety</td><td>性质</td><td>foodType</td><td>仓内粮食数量</td><td>storageReal吨</td></tr><tr><td>产地</td><td>foodLocation</td><td>等级</td><td>foodLevel</td><td>生产年限</td><td>foodYear</td></tr><tr><td>样品数量</td><td>checkNum KG</td><td>样品代表数量</td><td>foodNumber吨</td><td colspan=\"2\"></td></tr><tr><td colspan='2'>检验单位</td><td colspan=\"6\">unit</td></tr><tr><td colspan='2'rowspan=\"2\">质检人员</td><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td colspan=\"2\"></td></tr><tr><td>扦样时间</td><td>sampleTime</td><td>检验时间</td><td>checkTime</td><td>报告出具时间</td><td>bgcjsj</td></tr><tr><td rowspan=\"5\">质检结果</td><td rowspan=\"3\">质量指标检验</td><td>品种</td><td>foodVariety</td><td>完整粒率(%)</td><td>C16_VAL</td><td>等级</td><td>foodLevel</td></tr><tr><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td>损伤粒率(%)</td><td>C17_VAL</td><td>热损伤粒(%)</td><td>C34_VAL</td><td colspan=\"2\"></td></tr><tr><td>储存品质检验</td><td>粗脂肪酸值(mgKOH/100g)</td><td>C18_VAL</td><td>品尝分值</td><td>C07_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td>食品安全检验</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td><td colspan=\"2\"></td></tr><tr><td colspan=\"2\">备注</td><td colspan=\"6\">remark</td></tr></table><div class='div-tit'></div></body></html>";
    //整仓质检报告单-菜籽油、大豆油、棉籽油质检单
    public static String QUALITY_212 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(菜籽油、大豆油、棉籽油)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>质检报告(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'rowspan='5'`width`='22%'>样品信息</td><td width='14%'>单位名称</td><td colspan='2'`width`='27%'>dwmc</td><td width='13%'>库区名称</td><td colspan='2'`width`='26%'>deptName</td></tr><tr><td width='14%'>仓房名称</td><td width='13%'>buildingName</td><td width='14%'>货位名称</td><td width='13%'>depotName</td><td width='13%'>保管员</td><td width='13%'>storeKeeperName</td></tr><tr><td>品种</td><td>foodVariety</td><td>性质</td><td>foodType</td><td>仓内粮食数量</td><td>storageReal吨</td></tr><tr><td>产地</td><td>foodLocation</td><td>等级</td><td>foodLevel</td><td>生产年限</td><td>foodYear</td></tr><tr><td>样品数量</td><td>checkNum KG</td><td>样品代表数量</td><td>foodNumber吨</td><td colspan='2'></td></tr><tr><td colspan='2'>检验单位</td><td colspan='6'>unit</td></tr><tr><td colspan='2'rowspan='2'>质检人员</td><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td colspan='2'></td></tr><tr><td>扦样时间</td><td>sampleTime</td><td>检验时间</td><td>checkTime</td><td>报告出具时间</td><td>bgcjsj</td></tr><tr><td colspan='2'rowspan='7'>质检结果</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td colspan='2'></td></tr><tr><td>色泽</td><td>_01020302_VAL</td><td>气味滋味</td><td colspan='3'>_01020323_VAL</td></tr><tr><td>透明度</td><td>_01020301_VAL</td><td>水分及挥发物(%)</td><td>_01020324_VAL</td><td>不溶性杂质(%)</td><td>_01020325_VAL</td></tr><tr><td>酸价(KOH)(mg/g)</td><td>_0201033_VAL</td><td>过氧化值(g/100g)</td><td>02010332_VAL</td><td>含皂量(%)</td><td>_02010307_VAL</td></tr><tr><td>加热试验(280℃)</td><td>_01020326_VAL</td><td>烟点(℃)</td><td>_01020313_VAL</td><td>冷冻试验</td><td>_01022327_VAL</td></tr><tr><td>溶剂残留量(mg/kg)</td><td>_02030922_VAL</td><td>脂肪酸值</td><td>_02010306_VAL</td><td>棉籽油检出</td><td>_02010302_VAL</td></tr><tr><td>游离棉酚(mg/kg)</td><td>_02030921_VAL</td><td>黄曲霉毒素B1</td><td>_02030201_VAL</td><td colspan='2'></td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    /*----------入库质检单----------*/
    //入库质检单-小麦质检单
    public static String INOUT_CHECK_111 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>入库质检单(小麦)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>入库质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='6'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>容重(g/L)</td><td>C03_VAL</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生芽粒(%)</td><td>C35_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td></tr><tr><td rowspan='2'>食品安全检验</td><td>呕吐毒素(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库质检单-玉米质检单
    public static String INOUT_CHECK_112 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>入库质检单(玉米)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='6'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>容重(g/L)</td><td>C03_VAL</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td><td>霉变粒(%)</td><td>C15_VAL</td></tr><tr><td rowspan='2'>食品安全检验</td><td>呕吐毒(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库质检单-稻谷质检单
    public static String INOUT_CHECK_113 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>入库质检单(稻谷)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库质检单(foodVariety)</h1><div class='div-tit'>编码:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='7'>检验</td><td rowspan='4'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>出糙率(%)</td><td>C09_VAL</td></tr><tr><td>整精米率(%)</td><td>C10_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>黄粒米(%)</td><td>C11_VAL</td><td>谷外糙米(%)</td><td>C12_VAL</td><td>色泽、气味</td><td>C06_VAL</td></tr><tr><td>互混率(%)</td><td>C13_VAL</td><td colspan='4'></td></tr><tr><td rowspan='2'>食品安全检验</td><td>黄曲霉毒素B1(μg/kg)</td><td>C28_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td></tr><tr><td>汞(μg/kg)</td><td>C34_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td><td colspan='2'></td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库质检单-大豆质检单
    public static String INOUT_CHECK_141 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>入库质检单(大豆)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='5'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>完整粒率(%)</td><td>C16_VAL</td></tr><tr><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td>损伤粒率(%)</td><td>C17_VAL</td><td>热损伤粒(%)</td><td>C34_VAL</td><td colspan='2'></td></tr><tr><td>食品安全检验</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td><td colspan='2'></td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库质检单-菜籽油、大豆油、棉籽油质检单
    public static String INOUT_CHECK_212 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>入库质检单(菜籽油、大豆油、棉籽油)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>入库质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='25%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td width='15%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='5'>检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td colspan='2'></td></tr><tr><td>水分及挥发物(%)</td><td>_01020324_VAL</td><td>不溶性杂质(%)</td><td>_01020325_VAL</td><td>酸价(KOH)(mg/g)</td><td>_0201033_VAL</td></tr><tr><td>过氧化值(g/100g)</td><td>02010332_VAL</td><td>含皂量(%)</td><td>_02010307_VAL</td><td>加热试验(280℃)</td><td>_01020326_VAL</td></tr><tr><td>溶剂残留量(mg/kg)</td><td>_02030922_VAL</td><td>游离棉酚(mg/kg)</td><td>_02030921_VAL</td><td>黄曲霉毒素B1</td><td>_02030201_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td>checkTime</td></tr><tr><td>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    /*----------入库检斤质检单----------*/
    //入库检斤质检单-小麦质检单
    public static String INOUT_WEIGHT_CHECK_111 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(小麦)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>入库检斤质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='2'colspan='2'>登记</td><td>入门时间</td><td colspan='2'>registerTime</td><td>登记员</td><td colspan='2'>registerUser</td></tr><tr><td>出门时间</td><td colspan='2'>completeTime</td><td>登记员</td><td colspan='2'>completeUser</td></tr><tr><td rowspan='3'colspan='2'>检斤</td><td>毛重检斤时间</td><td>fullWeightTime</td><td>监磅员</td><td>fullWeightUser</td><td>毛重(KG)</td><td>fullWeight</td></tr><tr><td>皮重检斤时间</td><td>emptyWeightTime</td><td>监磅员</td><td>emptyWeightUser</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td>水杂扣(增)量(KG)</td><td>deWet</td><td>其他扣重(KG)</td><td>deOther</td><td>实际数量(KG)</td><td>netWeight</td></tr><tr><td rowspan='6'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>容重(g/L)</td><td>C03_VAL</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生芽粒(%)</td><td>C35_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td></tr><tr><td rowspan='2'>食品安全检验</td><td>呕吐毒素(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库检斤质检单-玉米质检单
    public static String INOUT_WEIGHT_CHECK_112 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(玉米)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库检斤质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='2'colspan='2'>登记</td><td>入门时间</td><td colspan='2'>registerTime</td><td>登记员</td><td colspan='2'>registerUser</td></tr><tr><td>出门时间</td><td colspan='2'>completeTime</td><td>登记员</td><td colspan='2'>completeUser</td></tr><tr><td rowspan='3'colspan='2'>检斤</td><td>毛重检斤时间</td><td>fullWeightTime</td><td>监磅员</td><td>fullWeightUser</td><td>毛重(KG)</td><td>fullWeight</td></tr><tr><td>皮重检斤时间</td><td>emptyWeightTime</td><td>监磅员</td><td>emptyWeightUser</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td>水杂扣(增)量(KG)</td><td>deWet</td><td>其他扣重(KG)</td><td>deOther</td><td>实际数量(KG)</td><td>netWeight</td></tr><tr><td rowspan='6'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>容重(g/L)</td><td>C03_VAL</td></tr><tr><td>色泽气味</td><td>C06_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>不完善粒(%)</td><td>C04_VAL</td><td>生霉粒(%)</td><td>C29_VAL</td><td>霉变粒(%)</td><td>C15_VAL</td></tr><tr><td rowspan='2'>食品安全检验</td><td>呕吐毒(mg/kg)</td><td>C27_VAL</td><td>玉米赤霉烯酮(μg/kg)</td><td>C31_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td></tr><tr><td>镉(mg/kg)</td><td>C25_VAL</td><td>汞(μg/kg)</td><td>C33_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库检斤质检单-稻谷质检单
    public static String INOUT_WEIGHT_CHECK_113 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(稻谷)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库检斤质检单(foodVariety)</h1><div class='div-tit'>编码:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='2'colspan='2'>登记</td><td>入门时间</td><td colspan='2'>registerTime</td><td>登记员</td><td colspan='2'>registerUser</td></tr><tr><td>出门时间</td><td colspan='2'>completeTime</td><td>登记员</td><td colspan='2'>completeUser</td></tr><tr><td rowspan='3'colspan='2'>检斤</td><td>毛重检斤时间</td><td>fullWeightTime</td><td>监磅员</td><td>fullWeightUser</td><td>毛重(KG)</td><td>fullWeight</td></tr><tr><td>皮重检斤时间</td><td>emptyWeightTime</td><td>监磅员</td><td>emptyWeightUser</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td>水杂扣(增)量(KG)</td><td>deWet</td><td>其他扣重(KG)</td><td>deOther</td><td>实际数量(KG)</td><td>netWeight</td></tr><tr><td rowspan='7'>检验</td><td rowspan='4'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>出糙率(%)</td><td>C09_VAL</td></tr><tr><td>整精米率(%)</td><td>C10_VAL</td><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td></tr><tr><td>黄粒米(%)</td><td>C11_VAL</td><td>谷外糙米(%)</td><td>C12_VAL</td><td>色泽、气味</td><td>C06_VAL</td></tr><tr><td>互混率(%)</td><td>C13_VAL</td><td colspan='4'></td></tr><tr><td rowspan='2'>食品安全检验</td><td>黄曲霉毒素B1(μg/kg)</td><td>C28_VAL</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td></tr><tr><td>汞(μg/kg)</td><td>C34_VAL</td><td>无机砷(mg/kg)</td><td>C30_VAL</td><td colspan='2'></td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库检斤质检单-大豆质检单
    public static String INOUT_WEIGHT_CHECK_141 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(大豆)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}</style></head><body><h1 class='tit'>入库检斤质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='10%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td colspan='2'width='30%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'colspan='2'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td colspan='2'>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'colspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='2'colspan='2'>登记</td><td>入门时间</td><td colspan='2'>registerTime</td><td>登记员</td><td colspan='2'>registerUser</td></tr><tr><td>出门时间</td><td colspan='2'>completeTime</td><td>登记员</td><td colspan='2'>completeUser</td></tr><tr><td rowspan='3'colspan='2'>检斤</td><td>毛重检斤时间</td><td>fullWeightTime</td><td>监磅员</td><td>fullWeightUser</td><td>毛重(KG)</td><td>fullWeight</td></tr><tr><td>皮重检斤时间</td><td>emptyWeightTime</td><td>监磅员</td><td>emptyWeightUser</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td>水杂扣(增)量(KG)</td><td>deWet</td><td>其他扣重(KG)</td><td>deOther</td><td>实际数量(KG)</td><td>netWeight</td></tr><tr><td rowspan='5'>检验</td><td rowspan='3'>质量指标检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td>完整粒率(%)</td><td>C16_VAL</td></tr><tr><td>杂质(%)</td><td>C02_VAL</td><td>水分(%)</td><td>C01_VAL</td><td>色泽气味</td><td>C06_VAL</td></tr><tr><td>损伤粒率(%)</td><td>C17_VAL</td><td>热损伤粒(%)</td><td>C34_VAL</td><td colspan='2'></td></tr><tr><td>食品安全检验</td><td>铅(mg/kg)</td><td>C32_VAL</td><td>镉(mg/kg)</td><td>C25_VAL</td><td colspan='2'></td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td colspan='2'>checkTime</td></tr><tr><td colspan='2'>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
    //入库检斤质检单-菜籽油、大豆油、棉籽油质检单
    public static String INOUT_WEIGHT_CHECK_212 = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>质检报告(菜籽油、大豆油、棉籽油)</title><style>body{text-align:center;padding:10px}.tit{margin:0px;font-size:24px;font-family:'宋体';padding-top:5px}.div-tit{text-align:right;padding-right:20px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:33%;float:left;padding-bottom:10px}</style></head><body><h1 class='tit'>入库检斤质检单(foodVariety)</h1><div class='div-tit'>单号:serId</div><table cellspacing='0'cellpadding='0'><tr><td colspan='2'width='25%'>单位名称</td><td colspan='2'width='30%'>dwmc</td><td width='15%'>库区名称</td><td colspan='2'width='30%'>deptName</td></tr><tr><td width='10%'>入仓</td><td width='15%'>仓房名称</td><td width='15%'>buildingName</td><td width='15%'>货位名称</td><td width='15%'>depotName</td><td width='15%'>保管员</td><td width='15%'>storeKeeperName</td></tr><tr><td>客户</td><td>客户名称</td><td colspan='2'>customerName</td><td>信用代码(身份证号)</td><td colspan='2'>customerId</td></tr><tr><td rowspan='2'>承运</td><td>承运人</td><td colspan='2'>userName</td><td>身份证号</td><td colspan='2'>userId</td></tr><tr><td>运输工具</td><td>transType</td><td>车船号</td><td>plateNum</td><td>联系电话</td><td>userContact</td></tr><tr><td rowspan='2'>登记</td><td>入门时间</td><td colspan='2'>registerTime</td><td>登记员</td><td colspan='2'>registerUser</td></tr><tr><td>出门时间</td><td colspan='2'>completeTime</td><td>登记员</td><td colspan='2'>completeUser</td></tr><tr><td rowspan='3'>检斤</td><td>毛重检斤时间</td><td>fullWeightTime</td><td>监磅员</td><td>fullWeightUser</td><td>毛重(KG)</td><td>fullWeight</td></tr><tr><td>皮重检斤时间</td><td>emptyWeightTime</td><td>监磅员</td><td>emptyWeightUser</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td>水杂扣(增)量(KG)</td><td>deWet</td><td>其他扣重(KG)</td><td>deOther</td><td>实际数量(KG)</td><td>netWeight</td></tr><tr><td rowspan='5'>检验</td><td>品种</td><td>foodVariety</td><td>等级</td><td>foodLevel</td><td colspan='2'></td></tr><tr><td>水分及挥发物(%)</td><td>_01020324_VAL</td><td>不溶性杂质(%)</td><td>_01020325_VAL</td><td>酸价(KOH)(mg/g)</td><td>_0201033_VAL</td></tr><tr><td>过氧化值(g/100g)</td><td>02010332_VAL</td><td>含皂量(%)</td><td>_02010307_VAL</td><td>加热试验(280℃)</td><td>_01020326_VAL</td></tr><tr><td>溶剂残留量(mg/kg)</td><td>_02030922_VAL</td><td>游离棉酚(mg/kg)</td><td>_02030921_VAL</td><td>黄曲霉毒素B1</td><td>_02030201_VAL</td></tr><tr><td>扦样员</td><td>sampleUser</td><td>检验员</td><td>checkUser</td><td>检验时间</td><td>checkTime</td></tr><tr><td>备注</td><td colspan='6'>remark</td></tr></table><div class='div-tit' style='float: left;margin-top: 5px;font-size: 12px'>说明:使用《粮食购销领域监管信息化规范》国粮规(2022)78号-附录G模版</div></body></html>";
}
igds-core/src/main/java/com/ld/igds/m/ReportManage.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
package com.ld.igds.m;
import com.bstek.bdf2.core.model.DefaultDept;
import com.ld.igds.check.dto.CheckItemData;
import com.ld.igds.common.CoreCommonService;
import com.ld.igds.constant.FoodLevel;
import com.ld.igds.constant.FoodType;
import com.ld.igds.constant.FoodVariety;
import com.ld.igds.models.Building;
import com.ld.igds.models.Depot;
import com.ld.igds.models.DepotStore;
import com.ld.igds.models.MQuality;
import com.ld.igds.sys.service.SysDeptService;
import com.ld.igds.view.service.BuildingService;
import com.ld.igds.view.service.HDepotStoreService;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
 * æ‰“印各种报告单据管理类
 */
@Component
public class ReportManage {
    @Autowired
    private CoreCommonService commonService;
    @Autowired
    private SysDeptService sysDeptService;
    @Autowired
    private BuildingService buildingService;
    @Resource
    private HDepotStoreService depotStoreService;
    /**
     * æ•´è½¦è´¨æ£€æŠ¥å‘Šå•据
     *
     * @param data
     * @return
     */
    public String printQualityBill(MQuality data) {
        //获取默认模版
        String htmlStr = "模板暂未确定!!";
        if (data.getFoodVariety().startsWith("111")) {
            //调用小麦质检报告模版
            htmlStr = ReportBill.QUALITY_111;
        }
        if (data.getFoodVariety().startsWith("112")) {
            //调用玉米质检报告模版
            htmlStr = ReportBill.QUALITY_112;
        }
        if (data.getFoodVariety().startsWith("113")) {
            //调用稻谷质检报告模版
            htmlStr = ReportBill.QUALITY_113;
        }
        if (data.getFoodVariety().startsWith("141")) {
            //调用大豆质检报告模版
            htmlStr = ReportBill.QUALITY_141;
        }
        if (data.getFoodVariety().startsWith("236")) {
            //调用稻谷质检报告模版
            htmlStr = ReportBill.QUALITY_113;
        }
        if (data.getFoodVariety().startsWith("212")) {
            //调用油脂质检报告模版
            htmlStr = ReportBill.QUALITY_212;
        }
        //获取单位名称
        DefaultDept dept = sysDeptService.getDeptById(data.getCompanyId());
        if (null != dept && StringUtils.isNotEmpty(dept.getName())) {
            htmlStr = htmlStr.replace("dwmc", dept.getName());
        } else {
            htmlStr = htmlStr.replace("dwmc", "-");
        }
        //获取库区名称
        dept = sysDeptService.getDeptById(data.getDeptId());
        if (null != dept && StringUtils.isNotEmpty(dept.getName())) {
            htmlStr = htmlStr.replace("deptName", dept.getName());
        } else {
            htmlStr = htmlStr.replace("deptName", "-");
        }
        //获取仓库信息
        Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId());
        String buildingName = "-";
        if (depot != null) {
            htmlStr = htmlStr.replace("depotName", depot.getName() == null ? "-" : depot.getName());
            htmlStr = htmlStr.replace("foodLocation", StringUtils.isEmpty(depot.getFoodLocation()) ? "-" : depot.getFoodLocation());
            htmlStr = htmlStr.replace("storeKeeperName", StringUtils.isEmpty(depot.getStoreKeeperName()) ? "-" : depot.getStoreKeeperName());
            //获取仓房信息
            if (StringUtils.isNotEmpty(depot.getBuildingId())) {
                Building building = buildingService.getCacheBuilding(depot.getCompanyId(), depot.getDeptId(), depot.getBuildingId());
                if (null != building) {
                    buildingName = building.getName();
                }
            }
        } else {
            htmlStr = htmlStr.replace("depotName", "-");
            htmlStr = htmlStr.replace("foodLocation", "-");
            htmlStr = htmlStr.replace("storeKeeperName", "-");
        }
        htmlStr = htmlStr.replace("buildingName", buildingName);
        htmlStr = htmlStr.replace("foodVariety", FoodVariety.getMsg(data.getFoodVariety()));
        htmlStr = htmlStr.replace("serId", data.getId());
        //获取质检时间之前的库存信息
        DepotStore lastDepotStore = depotStoreService.getLastData(data.getDepotId(), data.getTime());
        String storageReal = "-";
        String foodYear = "-";
        String foodType = "-";
        if(null != lastDepotStore){
            if(StringUtils.isNotEmpty(lastDepotStore.getFoodYear())){
                foodYear = lastDepotStore.getFoodYear();
            }
            if(null != lastDepotStore.getStorageReal()){
                storageReal = lastDepotStore.getStorageReal()/1000 + "";
            }
            if(StringUtils.isNotEmpty(lastDepotStore.getFoodType())){
                foodType = FoodType.getMsg(lastDepotStore.getFoodType());
            }
        }
        htmlStr = htmlStr.replace("storageReal", storageReal);
        htmlStr = htmlStr.replace("foodYear", foodYear);
        htmlStr = htmlStr.replace("foodType", foodType);
        htmlStr = htmlStr.replace("foodNumber", data.getDbsl() == null? "-":data.getDbsl()/1000 + "");
        htmlStr = htmlStr.replace("foodLevel", StringUtils.isEmpty(data.getFoodLevel()) ? "-" : FoodLevel.getMsg(data.getFoodLevel()));
        htmlStr = htmlStr.replace("checkNum", data.getYpsl() == null? "-":data.getYpsl() + "");
        htmlStr = htmlStr.replace("unit", StringUtils.isEmpty(data.getUnit()) ? "-" : data.getUnit());
        htmlStr = htmlStr.replace("sampleUser", StringUtils.isEmpty(data.getCheckUser()) ? "-" : data.getCheckUser());
        htmlStr = htmlStr.replace("checkUser", StringUtils.isEmpty(data.getUser()) ? "-" : data.getUser());
        htmlStr = htmlStr.replace("sampleTime", data.getCheckTime() == null ? "-" : DateFormatUtils.format(data.getCheckTime(), "yyyy/MM/dd HH:mm:ss"));
        htmlStr = htmlStr.replace("checkTime", data.getTime() == null ? "-" : DateFormatUtils.format(data.getTime(), "yyyy/MM/dd HH:mm:ss"));
        htmlStr = htmlStr.replace("bgcjsj", data.getBgcjsj() == null ? "-" : DateFormatUtils.format(data.getBgcjsj(), "yyyy/MM/dd HH:mm:ss"));
        htmlStr = htmlStr.replace("remark", StringUtils.isEmpty(data.getRemark()) ? "-" : data.getRemark());
        Map<String, String> checkBillItems = getCheckBillItems();
        // éåŽ†åŒ–éªŒç»“æžœï¼Œå­˜å…¥map集合中
        String key;
        for (CheckItemData item : data.getCheckItems()) {
            key = item.getStandardId() + "_VAL";
            checkBillItems.put(key, item.getValue());
        }
        // éåކmap集合,替换化验单中化验值
        String value;
        for (String str : checkBillItems.keySet()) {
            value = checkBillItems.get(str);
            if (StringUtils.isNotEmpty(value)) {
                htmlStr = htmlStr.replace(str, value);
            } else {
                htmlStr = htmlStr.replace(str, "-");
            }
        }
        return htmlStr;
    }
    /**
     * å°è£…化验项数值,key-化验项编码,value-放置化验值
     *
     * @return
     */
    private Map<String, String> getCheckBillItems() {
        Map<String, String> map = new HashMap<>();
        map.put("C01_VAL", "");
        map.put("C02_VAL", "");
        map.put("C03_VAL", "");
        map.put("C04_VAL", "");
        map.put("C05_VAL", "");
        map.put("C06_VAL", "");
        map.put("C07_VAL", "");
        map.put("C08_VAL", "");
        map.put("C09_VAL", "");
        map.put("C10_VAL", "");
        map.put("C11_VAL", "");
        map.put("C12_VAL", "");
        map.put("C13_VAL", "");
        map.put("C14_VAL", "");
        map.put("C15_VAL", "");
        map.put("C16_VAL", "");
        map.put("C17_VAL", "");
        map.put("C18_VAL", "");
        map.put("C19_VAL", "");
        map.put("C20_VAL", "");
        map.put("C21_VAL", "");
        map.put("C22_VAL", "");
        map.put("C23_VAL", "");
        map.put("C24_VAL", "");
        map.put("C25_VAL", "");
        map.put("C26_VAL", "");
        map.put("C27_VAL", "");
        map.put("C28_VAL", "");
        map.put("C29_VAL", "");
        map.put("C30_VAL", "");
        map.put("C31_VAL", "");
        map.put("C32_VAL", "");
        map.put("C33_VAL", "");
        map.put("C34_VAL", "");
        map.put("C35_VAL", "");
        return map;
    }
}
igds-core/src/main/java/com/ld/igds/m/service/HQualityManageService.java
@@ -11,6 +11,7 @@
import com.ld.igds.util.DateUtil;
import com.ld.igds.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.hibernate.Session;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -126,7 +127,7 @@
        if (null == data.getDeptId()) {
            data.setDeptId(ContextUtil.subDeptId(null));
        }
        if (null != data.getZblb() || "" != data.getZblb()) {
        if (null != data.getZblb() && "" != data.getZblb() && "null" != data.getZblb()) {
            String[] str = data.getZblb().split("#");
            //防止在更新操作时再次存入相同的数据
            Set<String> metrics = new HashSet<>();
@@ -144,11 +145,9 @@
        try {
            if (null == data.getId()) {
                data.setId(id);
                session.save(data);
            } else {
                session.update(data);
            }
            redisUtil.del(RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId()));
            session.saveOrUpdate(data);
            redisUtil.del(RedisConst.buildKey(ContextUtil.getDefaultCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId()));
            MQuality newData;
            if (EntityUtils.isEntity(data)) {
                newData = new MQuality();
@@ -157,7 +156,7 @@
                newData = data;
            }
            redisUtil.set(RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId()), newData, 60 * 60 * 24);
            redisUtil.set(RedisConst.buildKey(ContextUtil.getDefaultCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId()), newData, 60 * 60 * 24);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
@@ -186,4 +185,81 @@
        return null;
    }
    /**
     * èŽ·å–å½“å‰æ£€éªŒæ—¶é—´æœ€åŽä¸€ä¸ªID
     *
     * @param time
     * @return
     * @throws Exception
     */
    public String getIdByTime(Date time) {
        int num = 10001;
        String hql = " from " + MQuality.class.getName()
                + " where companyId =:companyId ";
        Map<String, Object> args = new HashMap<String, Object>();
        args.put("companyId", ContextUtil.getCompanyId());
        hql += " and time >=:start";
        args.put("start", DateUtil.getCurZero(time));
        hql += " and time <:end";
        args.put("end", DateUtil.getNextZero(time));
        hql += " order by id DESC";
        List<MQuality> list = this.query(hql, args);
        if (list != null && list.size() > 0) {
//            String lastId = list.get(0).getId();
//            num += Integer.parseInt(lastId.subst
//            ring(lastId.length() - 5));
            num += Integer.valueOf(list.get(0).getId().substring(11));
        }
//        String strNum = String.valueOf(num);
//        if (strNum.length() == 1) {
//            strNum = "1000" + strNum;
//        }
//        if (strNum.length() == 2) {
//            strNum = "100" + strNum;
//        }
//        if (strNum.length() == 3) {
//            strNum = "10" + strNum;
//        }
//        if (strNum.length() == 4) {
//            strNum = "1" + strNum;
//        }
        return DateFormatUtils.format(time, "yyyyMMdd") + String.valueOf(num).substring(1);
    }
    public CheckItemData getCheckItem(String checkId) {
        CheckItemData itemData = new CheckItemData();
        if ("".equals(checkId)) {
            itemData.setPerWet(0.0);
            itemData.setPerImpurity(0.0);
            return itemData;
        }
        itemData.setCompanyId(ContextUtil.getCompanyId());
        itemData.setCheckId(checkId);
        itemData.setStandardId("C01");
        List<CheckItemData> itemData1 = checkStandardMapper.getCheckItemByParam(itemData);
        if (!itemData1.isEmpty()) {
            String perWet = itemData1.get(0).getValue();
            if (StringUtils.isNotEmpty(perWet)) {
                itemData.setPerWet(Double.parseDouble(perWet));
            } else {
                itemData.setPerWet(0.0);
            }
        }
        itemData.setStandardId("C02");
        List<CheckItemData> itemData2 = checkStandardMapper.getCheckItemByParam(itemData);
        if (!itemData2.isEmpty()) {
            String perImpurity = itemData2.get(0).getValue();
            if (StringUtils.isNotEmpty(perImpurity)) {
                itemData.setPerImpurity(Double.parseDouble(perImpurity));
            } else {
                itemData.setPerImpurity(0.0);
            }
        }
        return itemData;
    }
}
igds-core/src/main/java/com/ld/igds/m/view/QualityManager.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
printBill = function(){
    var data = view.get("#dsMain.data:#");
    if(!data) return;
    view.get("#ajaxQualityPrint").set("parameter",data).execute(function(result){
        printQualityBill(result);
    });
};
/**
 * æ‰“印质检单
 */
printQualityBill = function(htmlStr) {
    var LODOP = CLODOP;
    LODOP.PRINT_INIT("质检报告");
    LODOP.SET_PRINT_PAGESIZE(1,2100,1400, "A4");
    //LODOP.SET_PRINT_PAGESIZE(1, 0, '90mm', "A4");
    LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", htmlStr);
    LODOP.PREVIEW();
};
igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml
@@ -69,7 +69,7 @@
      </PropertyDef>
      <PropertyDef name="time">
        <Property name="label">检验时间</Property>
        <Property name="dataType">Date</Property>
        <Property name="dataType">DateTime</Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="result">
@@ -168,6 +168,7 @@
      <PropertyDef name="ypbh">
        <Property></Property>
        <Property name="label">样品编号</Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="updateTime">
        <Property name="dataType">Date</Property>
@@ -176,6 +177,46 @@
      <PropertyDef name="spaqzbsfhg">
        <Property></Property>
        <Property name="label">食品是否合格</Property>
        <Property name="mapping">
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">0-不合格</Property>
                <Property name="code">0</Property>
              </Entity>
              <Entity>
                <Property name="name">1-合格</Property>
                <Property name="code">1</Property>
              </Entity>
            </Collection>
          </Property>
        </Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="reportType">
        <Property name="label">报告类型</Property>
        <Property name="mapping">
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">1-单位检验</Property>
                <Property name="code">1</Property>
              </Entity>
              <Entity>
                <Property name="name">2-整体检验(加权平均)</Property>
                <Property name="code">2</Property>
              </Entity>
              <Entity>
                <Property name="name">3-其他</Property>
                <Property name="code">3</Property>
              </Entity>
            </Collection>
          </Property>
        </Property>
      </PropertyDef>
      <Reference name="checkItems">
        <Property name="dataProvider">checkStandardPR#listCheckItemsByParam</Property>
@@ -188,6 +229,20 @@
          </Entity>
        </Property>
      </Reference>
      <PropertyDef name="fileId">
        <Property></Property>
        <Property name="label">附件id</Property>
      </PropertyDef>
      <PropertyDef name="fileName">
        <Property></Property>
        <Property name="label">附件名称</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="fileTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">附件上传时间</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtQualityParam">
      <PropertyDef name="depotId">
@@ -250,7 +305,7 @@
        <Property name="label">检测值</Property>
      </PropertyDef>
      <PropertyDef name="remarks">
        <Property name="label">化验结果</Property>
        <Property name="label">备注</Property>
      </PropertyDef>
      <PropertyDef name="operaSymbolValue">
        <Property></Property>
@@ -454,10 +509,9 @@
   view.get(&quot;#ajaxGetDepot&quot;).set(&quot;parameter&quot;,depotId).execute(function(result){&#xD;
     if(result){&#xD;
     var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
     data.set(&quot;foodLocation&quot;,result.foodLocation);&#xD;
     data.set(&quot;foodLevel&quot;,result.foodLevel);&#xD;
     data.set(&quot;foodVariety&quot;,result.foodVariety);&#xD;
     data.set(&quot;foodType&quot;,result.foodType);&#xD;
     data.set(&quot;storeDate&quot;,result.storeDate);&#xD;
    }&#xD;
});&#xD;
};&#xD;
@@ -469,8 +523,29 @@
 data.set(&quot;checkItems&quot;,result);&#xD;
    }&#xD;
  }); &#xD;
};&#xD;
/**&#xD;
 * é¢„览PDF文件&#xD;
 */&#xD;
showFilePdf = function(){&#xD;
    var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
    var fileName = cur.get(&quot;fileId&quot;);&#xD;
    var fileTime = new Date(cur.get(&quot;fileTime&quot;)).formatDate(&quot;y-m-d H:i:s&quot;);&#xD;
    if(!fileName){&#xD;
        $alert(&quot;没有获取到文件名称,无法预览。&quot;);&#xD;
        return;&#xD;
    }&#xD;
    if(!cur.get(&quot;fileTime&quot;)){&#xD;
        $alert(&quot;没有获取到附件上传时间,无法访问。&quot;);&#xD;
        return;&#xD;
    }&#xD;
    &#xD;
    var url = &quot;./basic/file/show-pdf?fileName=&quot;+fileName+&quot;&amp;fileTime=&quot;+fileTime+&quot;&amp;filePathType=common&quot;;&#xD;
    &#xD;
    window.open(url, &quot;_blank&quot;);&#xD;
};      </ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <Property name="javaScriptFile">./static/plugins/lodop/LodopFuncs.js</Property>
    <DataSet id="dsMain">
      <Property name="loadMode">lazy</Property>
      <Property name="dataProvider">qualityManagerPR#listQuality</Property>
@@ -564,8 +639,25 @@
        <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
                </ClientEvent>
        <Property name="caption">刷新</Property>
        <Property name="exClassName">btn-default</Property>
        <Property name="iconClass">fa fa-refresh</Property>
        <Property name="exClassName">btn-warm</Property>
        <Property name="iconClass">fa fa-print</Property>
      </Button>
      <Button layoutConstraint="left">
        <ClientEvent name="onClick">showFilePdf();</ClientEvent>
        <Property name="exClassName">btn-normal</Property>
        <Property name="caption">查看质检附件</Property>
        <Property name="iconClass">fa fa-picture-o</Property>
      </Button>
      <Button layoutConstraint="left">
        <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
if (!data) {&#xD;
    $alert(&quot;请先选择数据!&quot;);&#xD;
    return;&#xD;
}&#xD;
printBill();</ClientEvent>
        <Property name="caption">打印质检报告</Property>
        <Property name="exClassName">btn-warm</Property>
        <Property name="iconClass">fa fa-print</Property>
      </Button>
    </Container>
    <Container layout="regionPadding:10" layoutConstraint="center">
@@ -599,8 +691,7 @@
        <Container layout="hbox regionPadding:15">
          <Button layoutConstraint="left">
            <ClientEvent name="onClick">var param = view.get(&quot;#dsParam.data&quot;);&#xD;
                            view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param.toJSON()).flushAsync();
                        </ClientEvent>
view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param.toJSON()).flushAsync();                   </ClientEvent>
            <Property name="caption">查询</Property>
            <Property name="exClassName">btn-default</Property>
            <Property name="iconClass">fa fa-refresh</Property>
@@ -702,8 +793,7 @@
                        }&#xD;
                        view.get(&quot;#uaAction&quot;).set(&quot;parameter&quot;,data).execute(function(){&#xD;
                        self.get(&quot;parent&quot;).hide();&#xD;
                        });
                    </ClientEvent>
});                 </ClientEvent>
          <Property name="caption">保存</Property>
          <Property name="iconClass">fa fa-check</Property>
          <Property name="exClassName">btn-normal</Property>
@@ -727,7 +817,7 @@
              <Property name="readOnly">false</Property>
              <Property name="labelSeparator">:</Property>
              <Property name="labelAlign">right</Property>
              <Property name="cols">*,*,*</Property>
              <Property name="cols">*,*,*,*</Property>
              <Property name="labelWidth">120</Property>
              <AutoFormElement>
                <Property name="name">depotId</Property>
@@ -807,6 +897,11 @@
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:1">
                <Property name="name">storeDate</Property>
                <Property name="property">storeDate</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:1">
                <Property name="name">result</Property>
                <Property name="property">result</Property>
                <Editor>
@@ -817,7 +912,7 @@
                  </TagEditor>
                </Editor>
              </AutoFormElement>
              <Label layoutConstraint="colSpan:2">
              <Label layoutConstraint="colSpan:3">
                <Property name="text">说明:多项指标时按照1:质量指标检验(达标,不达标)、2:储存品质检验(宜存,不宜存)、3:食品安全检验(合格,不合格)这个顺序填写检验结论</Property>
                <Property name="style">
                  <Property name="color">blue</Property>
@@ -865,11 +960,43 @@
                <Property name="property">spaqzbsfhg</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:3">
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">remark</Property>
                <Property name="property">remark</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">reportType</Property>
                <Property name="property">reportType</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">fileName</Property>
                <Property name="property">fileName</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">fileTime</Property>
                <Property name="property">fileTime</Property>
                <Editor/>
              </AutoFormElement>
              <Container>
                <Button layoutConstraint="left">
                  <Property name="action">uploadFile</Property>
                  <Property name="caption">附件上传...</Property>
                  <Property name="exClassName">btn-default</Property>
                  <Property name="iconClass">fa fa-cloud-upload</Property>
                </Button>
                <Label layoutConstraint="left">
                  <Property name="width">10px</Property>
                </Label>
                <Button layoutConstraint="left">
                  <ClientEvent name="onClick">showFilePdf();</ClientEvent>
                  <Property name="exClassName">btn-normal</Property>
                  <Property name="caption">预览</Property>
                  <Property name="iconClass">fa fa-picture-o</Property>
                </Button>
              </Container>
            </AutoForm>
          </Children>
        </FieldSet>
@@ -932,33 +1059,6 @@
              </DataColumn>
              <DataColumn name="unit">
                <Property name="property">unit</Property>
                <Property name="align">center</Property>
                <Property name="readOnly">true</Property>
              </DataColumn>
              <DataColumn name="operaSymbolValue">
                <Property name="property">operaSymbolValue</Property>
                <Property name="align">center</Property>
                <Property name="caption">标准值</Property>
                <Property name="readOnly">true</Property>
              </DataColumn>
              <DataColumn name="deNum">
                <Property name="property">deNum</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="addNum">
                <Property name="property">addNum</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="dePrice">
                <Property name="property">dePrice</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="addPrice">
                <Property name="property">addPrice</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="result">
                <Property name="property">result</Property>
                <Property name="align">center</Property>
                <Property name="readOnly">true</Property>
              </DataColumn>
@@ -1064,5 +1164,26 @@
      <Property name="property">cname</Property>
      <Property name="assignmentMap">user=cname</Property>
    </DataSetDropDown>
    <AjaxAction id="ajaxQualityPrint">
      <Property name="service">qualityManagerPR#printQualityBill</Property>
      <Property name="executingMessage">正在执行打印……</Property>
    </AjaxAction>
    <UploadAction id="uploadFile">
      <ClientEvent name="onFileUploaded">var fileId = arg.returnValue;&#xD;
        if(fileId==(&quot;10&quot;)){&#xD;
        $alert(&quot;上传失败:附件名称为空。&quot;);&#xD;
        return;&#xD;
        }&#xD;
        if(fileId==(&quot;20&quot;)){&#xD;
        $alert(&quot;上传失败:附件不是pdf文件。&quot;);&#xD;
        return;&#xD;
        }&#xD;
var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
data.set(&quot;fileId&quot;,fileId);&#xD;
data.set(&quot;fileName&quot;,arg.file.name);&#xD;
data.set(&quot;fileTime&quot;,new Date);</ClientEvent>
      <Property name="fileResolver">myUploadProcessor#uploadCommonFile</Property>
      <Filters/>
    </UploadAction>
  </View>
</ViewConfig>
igds-core/src/main/java/com/ld/igds/m/view/QualityManagerPR.java
@@ -5,10 +5,13 @@
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.ld.igds.check.CheckStandardManager;
import com.ld.igds.m.ManageUtil;
import com.ld.igds.check.dto.CheckItemData;
import com.ld.igds.m.ReportManage;
import com.ld.igds.m.service.HQualityManageService;
import com.ld.igds.models.Depot;
import com.ld.igds.models.DicTrigger;
import com.ld.igds.models.MQuality;
import com.ld.igds.view.service.HDepotService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -29,6 +32,10 @@
    private HQualityManageService qualityManageService;
    @Autowired
    private CheckStandardManager checkStandardManager;
    @Autowired
    private ReportManage reportManage;
    @Autowired
    private HDepotService depotService;
    /**
     * æ£€éªŒç±»åˆ«
@@ -37,14 +44,6 @@
     *
     * @return
     */
//    @DataProvider
//    public List<DicTrigger> triggerType() {
//        List<DicTrigger> list = new ArrayList<DicTrigger>();
//        list.add(new DicTrigger("01", "满仓初检"));
//        list.add(new DicTrigger("02", "出仓检验"));
//        list.add(new DicTrigger("03", "月度普检"));
//        return list;
//    }
    @DataProvider
    public List<DicTrigger> triggerType() {
        List<DicTrigger> list = new ArrayList<DicTrigger>();
@@ -116,15 +115,39 @@
     */
    @DataResolver
    public void saveQuality(MQuality data) {
        String id = "";
        if (StringUtils.isEmpty(data.getId())) {
            id = ManageUtil.createQualityId(data.getType(), data.getTime());
            data.setId( "ZJ_" + qualityManageService.getIdByTime(data.getTime()));
        }
        qualityManageService.saveQuality(id, data);
        try {
            qualityManageService.saveQuality(data.getId(), data);
            //保存货位质检数据
            Depot depot = depotService.getDepotById(data.getCompanyId(), data.getDepotId());
            depot.setCheckDate(data.getTime());
        //保存检测的化验项信息
        if (null != data.getCheckItems()) {
            checkStandardManager.updateCheckItems(id, null, data.getCheckItems());
                checkStandardManager.updateCheckItems(data.getId(), null, data.getCheckItems());
                List<CheckItemData> checkItems = data.getCheckItems();
                for (CheckItemData checkItem : checkItems) {
                    if("C01".equals(checkItem.getStandardId())){
                        String value = checkItem.getValue();
                        depot.setPerWet(Double.valueOf(value));
                    }
                    if("C02".equals(checkItem.getStandardId())){
                        String value = checkItem.getValue();
                        depot.setPerImpurity(Double.valueOf(value));
                    }
                    if("C03".equals(checkItem.getStandardId())){
                        String value = checkItem.getValue();
                        depot.setBulkWeight(Double.valueOf(value));
                    }
                }
            }
            depotService.updateDepot(depot);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
@@ -139,4 +162,29 @@
        return qualityManageService.delQuality(data);
    }
    /**
     * qualityManagerPR#getPer
     *
     * @param checkId
     * @return
     */
    @Expose
    public CheckItemData getPer(String checkId) {
        return qualityManageService.getCheckItem(checkId);
    }
    /**
     * qualityManagerPR#printQualityBill æ‰“印质检报告单
     *
     * @param data
     * @return
     */
    @Expose
    public String printQualityBill(MQuality data) {
        if (StringUtils.isEmpty(data.getFoodVariety())) {
            return "粮情品种为空,不支持打印!";
        }
        return reportManage.printQualityBill(data);
    }
}
igds-core/src/main/java/com/ld/igds/models/MQuality.java
@@ -152,4 +152,19 @@
    @Transient
    private List<CheckItemData> checkItems;
    /**
     * --------附件--------
     **/
    @Column(name = "FILE_ID_", length = 30)
    @PropertyDef(label = "附件id")
    private String fileId;
    @Column(name = "FILE_NAME_", length = 50)
    @PropertyDef(label = "附件名称")
    private String fileName;
    @Column(name = "FILE_TIME_")
    @PropertyDef(label = "附件上传时间")
    private Date fileTime;
}
igds-core/src/main/java/com/ld/igds/view/service/HDepotStoreService.java
@@ -11,6 +11,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@@ -93,4 +94,25 @@
        }
        return null;
    }
    public DepotStore getLastData(String depotId, Date time) {
        StringBuilder hql = new StringBuilder();
        hql.append(" from " + DepotStore.class.getName() + " where depotId = :depotId ");
        Map<String, Object> args = new HashMap<>();
        args.put("depotId", depotId);
        if (null != time) {
            hql.append(" and createDate <=:createDate");
            args.put("createDate", time);
        }
        hql.append(" order by createDate desc");
        List<DepotStore> list = this.query(hql.toString(), args);
        if (null == list || list.isEmpty()) {
            return null;
        }
        return list.get(0);
    }
}
igds-core/src/main/resources/mapper/CheckStandardMapper.xml
@@ -153,5 +153,16 @@
          AND FOOD_VARIETY_ = #{foodVariety}
        ORDER by STANDARD_ID_ + 0
    </select>
    <select id="getCheckItemByParam" resultType="com.ld.igds.check.dto.CheckItemData">
        select
        VALUE_ as value
        from
        D_CHECK_ITEM
        <where>
            <if test="data.companyId != null and data.companyId != '' ">COMPANY_ID_= #{data.companyId}</if>
            <if test="data.checkId != null and data.checkId != '' ">AND CHECK_ID_ = #{data.checkId}</if>
            <if test="data.standardId != null and data.standardId != '' ">AND STANDARD_ID_ = #{data.standardId}</if>
        </where>
    </select>
</mapper>