YYC
2023-06-30 29ec252deaf466bc2c8cbc110221547da8790e8d
出入库报表
已修改6个文件
已添加2个文件
2293 ■■■■■ 文件已修改
igds-inout/src/main/java/com/ld/igds/inout/service/JInoutReportService.java 1453 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/view/InoutReportPR.java 409 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/view/ReportInDay.view.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/view/ReportInoutDetail.view.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/view/ReportOutDay.view.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/test/qualityReport02.html 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/test/qualityReport03.html 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/test/qualityReport04.html 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/service/JInoutReportService.java
@@ -24,805 +24,798 @@
 */
@Slf4j
@Component(JInoutReportService.BEAN_ID)
public class JInoutReportService extends JdbcDao  {
    public static final String BEAN_ID = "jdbcInoutReportServiceImpl";
public class JInoutReportService extends JdbcDao {
    @Autowired
    private HDepotService depotService;
    public static final String BEAN_ID = "jdbcInoutReportServiceImpl";
    public List<ReportInoutDepotData> getInoutDepotData(
            Map<String, Object> parameter) {
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        String deptId = (String) parameter.get("deptId");
    @Autowired
    private HDepotService depotService;
        if (start == null || end == null || StringUtils.isEmpty(deptId))
            return null;
    public List<ReportInoutDepotData> getInoutDepotData(
            Map<String, Object> parameter) {
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        String deptId = (String) parameter.get("deptId");
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("d.ID_ AS depotId, ");
        sql.append("d.NAME_ AS depotName, ");
        sql.append("d.FOOD_TYPE_ AS foodType, ");
        sql.append("d.FOOD_VARIETY_ AS foodVariety, ");
        sql.append("0 as cqkc, ");
        sql.append("d.STORAGE_REAL_ as qmkc, ");
        sql.append("a.inNum, ");
        sql.append("a.outNum, ");
        sql.append("a.lossNum, ");
        sql.append("a.overNum, ");
        sql.append("( ");
        sql.append("IFNULL(a.inNum, 0) + IFNULL(a.overNum, 0) ");
        sql.append(") AS inSum, ");
        sql.append("( ");
        sql.append("IFNULL(a.outNum, 0) + IFNULL(a.lossNum, 0) ");
        sql.append(") AS outSum ");
        sql.append("FROM ");
        sql.append("d_depot d ");
        sql.append("LEFT JOIN ( ");
        sql.append("SELECT ");
        sql.append("a.DEPOT_ID_, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeIn, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS inNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeOut, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS outNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeLoss, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS lossNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeOver, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS overNum ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ = :companyId ");
        sql.append("AND PROGRESS_ = :progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel  ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND COMPLETE_TIME_ >= :start ");
        sql.append("AND COMPLETE_TIME_ <= :end ");
        sql.append("AND DEPT_ID_  = :deptId ");
        sql.append(") a ");
        sql.append("GROUP BY a.DEPOT_ID_ ");
        sql.append(") a ON d.ID_ = a.DEPOT_ID_ ");
        sql.append("WHERE d.COMPANY_ID_ = :companyId ");
        sql.append("AND d.DEPOT_TYPE_ <> :depotTypeOther ");
        sql.append("AND d.DEPT_ID_  = :deptId ");
        sql.append("ORDER BY d.ID_");
        if (start == null || end == null || StringUtils.isEmpty(deptId))
            return null;
        Map<String, Object> args = new HashMap<>();
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("typeIn", InoutConstant.TYPE_IN);
        args.put("typeOut", InoutConstant.TYPE_OUT);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("d.ID_ AS depotId, ");
        sql.append("d.NAME_ AS depotName, ");
        sql.append("d.FOOD_TYPE_ AS foodType, ");
        sql.append("d.FOOD_VARIETY_ AS foodVariety, ");
        sql.append("0 as cqkc, ");
        sql.append("d.STORAGE_REAL_ as qmkc, ");
        sql.append("a.inNum, ");
        sql.append("a.outNum, ");
        sql.append("a.lossNum, ");
        sql.append("a.overNum, ");
        sql.append("( ");
        sql.append("IFNULL(a.inNum, 0) + IFNULL(a.overNum, 0) ");
        sql.append(") AS inSum, ");
        sql.append("( ");
        sql.append("IFNULL(a.outNum, 0) + IFNULL(a.lossNum, 0) ");
        sql.append(") AS outSum ");
        sql.append("FROM ");
        sql.append("d_depot d ");
        sql.append("LEFT JOIN ( ");
        sql.append("SELECT ");
        sql.append("a.DEPOT_ID_, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeIn, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS inNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeOut, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS outNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeLoss, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS lossNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ = :typeOver, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS overNum ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ = :companyId ");
        sql.append("AND PROGRESS_ = :progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel  ");
        sql.append("AND COMPLETE_TIME_ >= :start ");
        sql.append("AND COMPLETE_TIME_ <= :end ");
        sql.append("AND DEPT_ID_  = :deptId ");
        sql.append(") a ");
        sql.append("GROUP BY a.DEPOT_ID_ ");
        sql.append(") a ON d.ID_ = a.DEPOT_ID_ ");
        sql.append("WHERE d.COMPANY_ID_ = :companyId ");
        sql.append("AND d.DEPOT_TYPE_ <> :depotTypeOther ");
        sql.append("AND d.DEPT_ID_  = :deptId ");
        sql.append("ORDER BY d.ID_");
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        args.put("depotTypeOther", DepotType.TYPE_99.getCode());
        Map<String, Object> args = new HashMap<>();
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("typeIn", InoutConstant.TYPE_IN);
        args.put("typeOut", InoutConstant.TYPE_OUT);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        log.debug("====执行SLQ1={}", sql.toString());
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        args.put("depotTypeOther", DepotType.TYPE_99.getCode());
        List<ReportInoutDepotData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportInoutDepotRowMapper());
        log.debug("====执行SLQ1={}", sql.toString());
        if (null == data || data.isEmpty())
            return data;
        List<ReportInoutDepotData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportInoutDepotRowMapper());
        // æ ¹æ®å¼€å§‹æ—¶é—´èŽ·å–è·ç¦»æœ€è¿‘çš„è½¦è¾†ä¿¡æ¯ï¼ŒèŽ·å–åˆæœŸåº“å­˜
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :start ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        if (null == data || data.isEmpty())
            return data;
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        // èŽ·å–è·ç¦»å¼€å§‹æ—¶é—´ä¹…æœ€è¿‘çš„æ•°æ®ï¼Œå½“å‰å¤©çš„ç¬¬äº”åˆ†é’Ÿ
        Date date = DateUtil.getCurZero(start);
        args.put("start", DateUtils.addMinutes(date, 5));
        // æ ¹æ®å¼€å§‹æ—¶é—´èŽ·å–è·ç¦»æœ€è¿‘çš„è½¦è¾†ä¿¡æ¯ï¼ŒèŽ·å–åˆæœŸåº“å­˜
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :start ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        log.debug("====执行SLQ2={}", sql.toString());
        List<ReportInoutStorageData> list1 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        // èŽ·å–è·ç¦»å¼€å§‹æ—¶é—´ä¹…æœ€è¿‘çš„æ•°æ®ï¼Œå½“å‰å¤©çš„ç¬¬äº”åˆ†é’Ÿ
        Date date = DateUtil.getCurZero(start);
        args.put("start", DateUtils.addMinutes(date, 5));
        // èŽ·å–æœŸæœ«åº“å­˜ï¼ŒèŽ·å–è·ç¦»ç»“æŸæ—¶é—´æœ€è¿‘çš„ä¸€æ¡æ•°æ®
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ <:end ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        log.debug("====执行SLQ2={}", sql.toString());
        List<ReportInoutStorageData> list1 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("end", DateUtil.getNextZero(end));
        // èŽ·å–æœŸæœ«åº“å­˜ï¼ŒèŽ·å–è·ç¦»ç»“æŸæ—¶é—´æœ€è¿‘çš„ä¸€æ¡æ•°æ®
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ <:end ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        log.debug("====执行SLQ3={}", sql.toString());
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("end", DateUtil.getNextZero(end));
        List<ReportInoutStorageData> list2 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        log.debug("====执行SLQ3={}", sql.toString());
        // è°ƒæ•´æœŸæœ«åº“存和初期库存以及合计信息
        updateDepotReport(data, list1, list2);
        List<ReportInoutStorageData> list2 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        return data;
    }
        // è°ƒæ•´æœŸæœ«åº“存和初期库存以及合计信息
        updateDepotReport(data, list1, list2);
    private void updateDepotReport(List<ReportInoutDepotData> data,
            List<ReportInoutStorageData> list1,
            List<ReportInoutStorageData> list2) {
        ReportInoutDepotData sum = new ReportInoutDepotData();
        int index = 1;
        for (ReportInoutDepotData d : data) {
            // è®¾ç½®åºå·
            d.setRemarks(String.valueOf(index));
            // å½“前数据添加初期库存
            d = this.updateDepotReportCqkc(d, list1);
        return data;
    }
    private void updateDepotReport(List<ReportInoutDepotData> data,
                                   List<ReportInoutStorageData> list1,
                                   List<ReportInoutStorageData> list2) {
        ReportInoutDepotData sum = new ReportInoutDepotData();
        int index = 1;
        for (ReportInoutDepotData d : data) {
            // è®¾ç½®åºå·
            d.setRemarks(String.valueOf(index));
            // å½“前数据添加初期库存
            d = this.updateDepotReportCqkc(d, list1);
//            d = this.updateDepotReportQmkc(d, list2);
            // åˆè®¡ä¿¡æ¯
            sum.setCqkc(sum.getCqkc() + d.getCqkc());
            sum.setInNum(sum.getInNum() + d.getInNum());
            sum.setOverNum(sum.getOverNum() + d.getOverNum());
            sum.setInSum(sum.getInSum() + d.getInSum());
            sum.setOutNum(sum.getOutNum() + d.getOutNum());
            sum.setLossNum(sum.getLossNum() + d.getLossNum());
            sum.setOutSum(sum.getOutSum() + d.getOutSum());
            sum.setQmkc(sum.getQmkc() + d.getQmkc());
            index++;
        }
        sum.setDepotName("合计");
        data.add(sum);
    }
            // åˆè®¡ä¿¡æ¯
            sum.setCqkc(sum.getCqkc() + d.getCqkc());
            sum.setInNum(sum.getInNum() + d.getInNum());
            sum.setOverNum(sum.getOverNum() + d.getOverNum());
            sum.setInSum(sum.getInSum() + d.getInSum());
            sum.setOutNum(sum.getOutNum() + d.getOutNum());
            sum.setLossNum(sum.getLossNum() + d.getLossNum());
            sum.setOutSum(sum.getOutSum() + d.getOutSum());
            sum.setQmkc(sum.getQmkc() + d.getQmkc());
            index++;
        }
        sum.setDepotName("合计");
        data.add(sum);
    }
    // æ³¨æ„ï¼šå¦‚果期末库存没有临近数据,则表示获取最新的库存
    private ReportInoutDepotData updateDepotReportQmkc(ReportInoutDepotData d,
            List<ReportInoutStorageData> list2) {
        ReportInoutStorageData inoutStorageData = null;
        for (ReportInoutStorageData storageData : list2) {
            if (storageData.getDepotId().equals(d.getDepotId())) {
                inoutStorageData = storageData;
                break;
            }
        }
        if (null == inoutStorageData) {
            Depot depot = depotService.getDepotById(ContextUtil.getCompanyId(),
                    d.getDepotId());
            d.setQmkc(null == depot.getStorageReal() ? 0.0 : depot
                    .getStorageReal());
            return d;
        }
    // æ³¨æ„ï¼šå¦‚果期末库存没有临近数据,则表示获取最新的库存
    private ReportInoutDepotData updateDepotReportQmkc(ReportInoutDepotData d,
                                                       List<ReportInoutStorageData> list2) {
        ReportInoutStorageData inoutStorageData = null;
        for (ReportInoutStorageData storageData : list2) {
            if (storageData.getDepotId().equals(d.getDepotId())) {
                inoutStorageData = storageData;
                break;
            }
        }
        if (null == inoutStorageData) {
            Depot depot = depotService.getDepotById(ContextUtil.getCompanyId(),
                    d.getDepotId());
            d.setQmkc(null == depot.getStorageReal() ? 0.0 : depot
                    .getStorageReal());
            return d;
        }
        double cmkc = inoutStorageData.getCurStorage();
        if (InoutConstant.TYPE_IN.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (InoutConstant.TYPE_OUT.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_OVER.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_LOSS.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        d.setQmkc(cmkc);
        double cmkc = inoutStorageData.getCurStorage();
        if (InoutConstant.TYPE_IN.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (InoutConstant.TYPE_OUT.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_OVER.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_LOSS.equals(inoutStorageData.getType())) {
            cmkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        d.setQmkc(cmkc);
        return d;
    }
        return d;
    }
    private ReportInoutDepotData updateDepotReportCqkc(ReportInoutDepotData d,
            List<ReportInoutStorageData> list1) {
        ReportInoutStorageData inoutStorageData = null;
        for (ReportInoutStorageData storageData : list1) {
            if (storageData.getDepotId().equals(d.getDepotId())) {
                inoutStorageData = storageData;
                break;
            }
        }
        if (null == inoutStorageData) {
            d.setCqkc(0.0);
            return d;
        }
    private ReportInoutDepotData updateDepotReportCqkc(ReportInoutDepotData d,
                                                       List<ReportInoutStorageData> list1) {
        ReportInoutStorageData inoutStorageData = null;
        for (ReportInoutStorageData storageData : list1) {
            if (storageData.getDepotId().equals(d.getDepotId())) {
                inoutStorageData = storageData;
                break;
            }
        }
        if (null == inoutStorageData) {
            d.setCqkc(0.0);
            return d;
        }
        double cqkc = inoutStorageData.getCurStorage();
        if (InoutConstant.TYPE_IN.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        double cqkc = inoutStorageData.getCurStorage();
        if (InoutConstant.TYPE_IN.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (InoutConstant.TYPE_OUT.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        if (InoutConstant.TYPE_OUT.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_OVER.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_OVER.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    + inoutStorageData.getSettleWeight();
        }
        if (Constant.LOSS_OVER_LOSS.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        d.setCqkc(cqkc);
        if (StringUtils.isEmpty(d.getFoodVarietyName()) && d.getCqkc() > 0) {
            d.setFoodVarietyName(FoodVariety.getMsg(inoutStorageData
                    .getFoodVariety()));
            d.setFoodVariety(inoutStorageData.getFoodVariety());
        }
        return d;
    }
        if (Constant.LOSS_OVER_LOSS.equals(inoutStorageData.getType())) {
            cqkc = inoutStorageData.getCurStorage()
                    - inoutStorageData.getSettleWeight();
        }
        d.setCqkc(cqkc);
        if (StringUtils.isEmpty(d.getFoodVarietyName()) && d.getCqkc() > 0) {
            d.setFoodVarietyName(FoodVariety.getMsg(inoutStorageData
                    .getFoodVariety()));
            d.setFoodVariety(inoutStorageData.getFoodVariety());
        }
        return d;
    }
    public List<ReportInoutDepotData> getFoodVarietyData(
            Map<String, Object> parameter) {
    public List<ReportInoutDepotData> getFoodVarietyData(
            Map<String, Object> parameter) {
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        String deptId = (String) parameter.get("deptId");
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        String deptId = (String) parameter.get("deptId");
        if (start == null || end == null)
            return null;
        if (start == null || end == null)
            return null;
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("'NONE' as foodType, ");
        sql.append("0 as cqkc, ");
        sql.append("0 as qmkc, ");
        sql.append("0 as inSum, ");
        sql.append("0 as outSum, ");
        sql.append("a.FOOD_VARIETY_ as foodVariety, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeIn, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS inNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeOut, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS outNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeLoss, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS lossNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeOver, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS overNum ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND COMPLETE_TIME_ >= :start ");
        sql.append("AND COMPLETE_TIME_ <= :end ");
        sql.append("AND DEPT_ID_  = :deptId ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append(") a ");
        sql.append("GROUP BY a.FOOD_VARIETY_ ");
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("'NONE' as foodType, ");
        sql.append("0 as cqkc, ");
        sql.append("0 as qmkc, ");
        sql.append("0 as inSum, ");
        sql.append("0 as outSum, ");
        sql.append("a.FOOD_VARIETY_ as foodVariety, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeIn, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS inNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeOut, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS outNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeLoss, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS lossNum, ");
        sql.append("SUM( ");
        sql.append("IF ( ");
        sql.append("a.TYPE_ =:typeOver, ");
        sql.append("a.SETTLE_WEIGHT_, ");
        sql.append("0 ");
        sql.append(") ");
        sql.append(") AS overNum ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND COMPLETE_TIME_ >= :start ");
        sql.append("AND COMPLETE_TIME_ <= :end ");
        sql.append("AND DEPT_ID_  = :deptId ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append(") a ");
        sql.append("GROUP BY a.FOOD_VARIETY_ ");
        Map<String, Object> args = new HashMap<>();
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("typeIn", InoutConstant.TYPE_IN);
        args.put("typeOut", InoutConstant.TYPE_OUT);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        Map<String, Object> args = new HashMap<>();
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("typeIn", InoutConstant.TYPE_IN);
        args.put("typeOut", InoutConstant.TYPE_OUT);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        log.debug("====执行SLQ1={},参数={}", sql.toString(),args);
        log.debug("====执行SLQ1={},参数={}", sql.toString(), args);
        List<ReportInoutDepotData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportFoodVarietyRowMapper());
        List<ReportInoutDepotData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportFoodVarietyRowMapper());
        // æ ¹æ®å¼€å§‹æ—¶é—´èŽ·å–è·ç¦»æœ€è¿‘çš„è½¦è¾†ä¿¡æ¯ï¼ŒèŽ·å–åˆæœŸåº“å­˜
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :start ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        // æ ¹æ®å¼€å§‹æ—¶é—´èŽ·å–è·ç¦»æœ€è¿‘çš„è½¦è¾†ä¿¡æ¯ï¼ŒèŽ·å–åˆæœŸåº“å­˜
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :start ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        // èŽ·å–è·ç¦»å¼€å§‹æ—¶é—´ä¹…æœ€è¿‘çš„æ•°æ®ï¼Œå½“å‰å¤©çš„ç¬¬äº”åˆ†é’Ÿ
        Date date = DateUtil.getCurZero(start);
        args.put("start", DateUtils.addMinutes(date, 5));
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        // èŽ·å–è·ç¦»å¼€å§‹æ—¶é—´ä¹…æœ€è¿‘çš„æ•°æ®ï¼Œå½“å‰å¤©çš„ç¬¬äº”åˆ†é’Ÿ
        Date date = DateUtil.getCurZero(start);
        args.put("start", DateUtils.addMinutes(date, 5));
        log.debug("====执行SLQ2={}", sql.toString());
        log.debug("====执行SLQ2={}", sql.toString());
        List<ReportInoutStorageData> list1 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        List<ReportInoutStorageData> list1 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        // èŽ·å–æœŸæœ«åº“å­˜ï¼ŒèŽ·å–è·ç¦»ç»“æŸæ—¶é—´æœ€è¿‘çš„ä¸€æ¡æ•°æ®
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :end ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        // èŽ·å–æœŸæœ«åº“å­˜ï¼ŒèŽ·å–è·ç¦»ç»“æŸæ—¶é—´æœ€è¿‘çš„ä¸€æ¡æ•°æ®
        sql = new StringBuffer();
        args = new HashMap<>();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("( ");
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("TYPE_, ");
        sql.append("CUR_STORAGE_, ");
        sql.append("COMPANY_ID_, ");
        sql.append("PROGRESS_, ");
        sql.append("RECORD_STATUS_, ");
        sql.append("DEPT_ID_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("COMPANY_ID_ =:companyId ");
        sql.append("AND PROGRESS_ =:progress ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND DEPT_ID_ = :deptId ");
        sql.append("AND COMPLETE_TIME_ < :end ");
        sql.append("ORDER BY COMPLETE_TIME_ DESC ");
        sql.append("LIMIT 9999 ");
        sql.append(") AS a ");
        sql.append("GROUP BY ");
        sql.append("a.DEPOT_ID_ ");
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("end", DateUtil.getNextZero(end));
        args.put("deptId", deptId);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("progress", InoutConstant.PROGRESS_RECORD);
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("end", DateUtil.getNextZero(end));
        log.debug("====执行SLQ3={}", sql.toString());
        log.debug("====执行SLQ3={}", sql.toString());
        List<ReportInoutStorageData> list2 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        List<ReportInoutStorageData> list2 = this
                .getNamedParameterJdbcTemplate().query(sql.toString(), args,
                        new ReportInoutStorageRowMapper());
        return updateFoodVarietySum(data, list1, list2);
        return updateFoodVarietySum(data, list1, list2);
    }
    }
    @SuppressWarnings("unused")
    private List<ReportInoutDepotData> updateFoodVarietySum(
            List<ReportInoutDepotData> datas,
            List<ReportInoutStorageData> list1,
            List<ReportInoutStorageData> list2) {
    @SuppressWarnings("unused")
    private List<ReportInoutDepotData> updateFoodVarietySum(
            List<ReportInoutDepotData> datas,
            List<ReportInoutStorageData> list1,
            List<ReportInoutStorageData> list2) {
        // è°ƒæ•´åˆæœŸåº“å­˜
        Map<String, Double> map1 = new HashMap<>();
        if (null != list1) {
            for (ReportInoutStorageData data : list1) {
                if (null == map1.get(data.getFoodVariety())) {
                    map1.put(data.getFoodVariety(), 0.0);
                }
                double cqkc = data.getCurStorage();
                if (InoutConstant.TYPE_IN.equals(data.getType())) {
                    cqkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (InoutConstant.TYPE_OUT.equals(data.getType())) {
                    cqkc = data.getCurStorage() - data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_OVER.equals(data.getType())) {
                    cqkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_LOSS.equals(data.getType())) {
                    cqkc = data.getCurStorage() - data.getSettleWeight();
                }
                map1.put(data.getFoodVariety(), map1.get(data.getFoodVariety())
                        + cqkc);
            }
        }
        // è°ƒæ•´åˆæœŸåº“å­˜
        Map<String, Double> map1 = new HashMap<>();
        if (null != list1) {
            for (ReportInoutStorageData data : list1) {
                if (null == map1.get(data.getFoodVariety())) {
                    map1.put(data.getFoodVariety(), 0.0);
                }
                double cqkc = data.getCurStorage();
                if (InoutConstant.TYPE_IN.equals(data.getType())) {
                    cqkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (InoutConstant.TYPE_OUT.equals(data.getType())) {
                    cqkc = data.getCurStorage() - data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_OVER.equals(data.getType())) {
                    cqkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_LOSS.equals(data.getType())) {
                    cqkc = data.getCurStorage() - data.getSettleWeight();
                }
                map1.put(data.getFoodVariety(), map1.get(data.getFoodVariety())
                        + cqkc);
            }
        }
        // è°ƒæ•´æœŸæœ«åº“å­˜
        Map<String, Double> map2 = new HashMap<String, Double>();
        if (null != list2) {
            Depot depot = null;
            for (ReportInoutStorageData data : list2) {
                if (null == map2.get(data.getFoodVariety())) {
                    map2.put(data.getFoodVariety(), 0.0);
                }
                double cmkc = data.getCurStorage();
                if (InoutConstant.TYPE_IN.equals(data.getType())) {
                    cmkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (InoutConstant.TYPE_OUT.equals(data.getType())) {
                    cmkc = data.getCurStorage() - data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_OVER.equals(data.getType())) {
                    cmkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_LOSS.equals(data.getType())) {
                    cmkc = data.getCurStorage() - data.getSettleWeight();
                }
                map2.put(data.getFoodVariety(), map2.get(data.getFoodVariety())
                        + cmkc);
            }
        }
        // è°ƒæ•´æœŸæœ«åº“å­˜
        Map<String, Double> map2 = new HashMap<String, Double>();
        if (null != list2) {
            Depot depot = null;
            for (ReportInoutStorageData data : list2) {
                if (null == map2.get(data.getFoodVariety())) {
                    map2.put(data.getFoodVariety(), 0.0);
                }
                double cmkc = data.getCurStorage();
                if (InoutConstant.TYPE_IN.equals(data.getType())) {
                    cmkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (InoutConstant.TYPE_OUT.equals(data.getType())) {
                    cmkc = data.getCurStorage() - data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_OVER.equals(data.getType())) {
                    cmkc = data.getCurStorage() + data.getSettleWeight();
                }
                if (Constant.LOSS_OVER_LOSS.equals(data.getType())) {
                    cmkc = data.getCurStorage() - data.getSettleWeight();
                }
                map2.put(data.getFoodVariety(), map2.get(data.getFoodVariety())
                        + cmkc);
            }
        }
        //判断初期库存粮食种类数是否跟出入库粮食种类数相等
        if(datas.size() != map1.size()){
            ReportInoutDepotData report;
            for (String s : map1.keySet()) {
                boolean flag = true;
                for (ReportInoutDepotData data : datas) {
                    if(StringUtils.isNotEmpty(data.getFoodVariety()) && data.getFoodVariety().equals(s)){
                        flag = false;
                        break;
                    }
                }
                if (flag){
                    report = new ReportInoutDepotData();
                    report.setFoodType("NONE");
                    report.setFoodVariety(s);
                    report.setFoodVarietyName(FoodVariety.getMsg(s));
                    datas.add(report);
                }
            }
        }
        //判断初期库存粮食种类数是否跟出入库粮食种类数相等
        if (datas.size() != map1.size()) {
            ReportInoutDepotData report;
            for (String s : map1.keySet()) {
                boolean flag = true;
                for (ReportInoutDepotData data : datas) {
                    if (StringUtils.isNotEmpty(data.getFoodVariety()) && data.getFoodVariety().equals(s)) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    report = new ReportInoutDepotData();
                    report.setFoodType("NONE");
                    report.setFoodVariety(s);
                    report.setFoodVarietyName(FoodVariety.getMsg(s));
                    datas.add(report);
                }
            }
        }
        if (null == datas || datas.isEmpty()){
            return datas;
        }
        if (null == datas || datas.isEmpty()) {
            return datas;
        }
        ReportInoutDepotData sum = new ReportInoutDepotData();
        sum.setFoodVarietyName("合计");
        int index = 1;
        for (ReportInoutDepotData data : datas) {
            if(StringUtils.isNotEmpty(data.getFoodVariety())){
                // è®¾ç½®åºå·
                data.setRemarks(String.valueOf(index));
                index++;
                data.setOutSum(data.getOutNum() + data.getLossNum());
                data.setInSum(data.getInNum() + data.getOverNum());
        ReportInoutDepotData sum = new ReportInoutDepotData();
        sum.setFoodVarietyName("合计");
        int index = 1;
        for (ReportInoutDepotData data : datas) {
            if (StringUtils.isNotEmpty(data.getFoodVariety())) {
                // è®¾ç½®åºå·
                data.setRemarks(String.valueOf(index));
                index++;
                data.setOutSum(data.getOutNum() + data.getLossNum());
                data.setInSum(data.getInNum() + data.getOverNum());
                // è°ƒæ•´æœŸæœ«åº“存和期初库存
                data.setCqkc(map1.get(data.getFoodVariety()) == null ? 0.0:map1.get(data.getFoodVariety()));
                data.setQmkc(map2.get(data.getFoodVariety()) == null ? 0.0:map2.get(data.getFoodVariety()));
                // è°ƒæ•´æœŸæœ«åº“存和期初库存
                data.setCqkc(map1.get(data.getFoodVariety()) == null ? 0.0 : map1.get(data.getFoodVariety()));
                data.setQmkc(map2.get(data.getFoodVariety()) == null ? 0.0 : map2.get(data.getFoodVariety()));
                // åˆæœŸåº“å­˜
                sum.setCqkc(sum.getCqkc() + data.getCqkc());
                // æœŸæœ«åº“å­˜
                sum.setQmkc(sum.getQmkc() + data.getQmkc());
                sum.setInNum(sum.getInNum() + data.getInNum());
                sum.setOutNum(sum.getOutNum() + data.getOutNum());
                sum.setInSum(sum.getInSum() + data.getInSum());
                sum.setOutSum(sum.getOutSum() + data.getOutSum());
                sum.setLossNum(sum.getLossNum() + data.getLossNum());
                sum.setOverNum(sum.getOverNum() + data.getOverNum());
            }
        }
        datas.add(sum);
                // åˆæœŸåº“å­˜
                sum.setCqkc(sum.getCqkc() + data.getCqkc());
                // æœŸæœ«åº“å­˜
                sum.setQmkc(sum.getQmkc() + data.getQmkc());
                sum.setInNum(sum.getInNum() + data.getInNum());
                sum.setOutNum(sum.getOutNum() + data.getOutNum());
                sum.setInSum(sum.getInSum() + data.getInSum());
                sum.setOutSum(sum.getOutSum() + data.getOutSum());
                sum.setLossNum(sum.getLossNum() + data.getLossNum());
                sum.setOverNum(sum.getOverNum() + data.getOverNum());
            }
        }
        datas.add(sum);
        return datas;
    }
        return datas;
    }
    public List<ReportInoutShipData> listShipDetail(Map<String, Object> parameter) {
    public List<ReportInoutShipData> listShipDetail(Map<String, Object> parameter) {
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        if (start == null || end == null){
            return null;
        }
        // æ—¶é—´æ¡ä»¶å¿…é¡»
        Date start = (Date) parameter.get("start");
        Date end = (Date) parameter.get("end");
        if (start == null || end == null) {
            return null;
        }
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("ID_, ");
        sql.append("PLATE_NUM_, ");
        sql.append("CUSTOMER_ID_, ");
        sql.append("CUSTOMER_NAME_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("DEPOT_ID_, ");
        sql.append("TYPE_, ");
        sql.append("PROGRESS_, ");
        sql.append("FULL_WEIGHT_, ");
        sql.append("EMPTY_WEIGHT_, ");
        sql.append("NET_WEIGHT_, ");
        sql.append("DE_SUM_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("TRANS_TYPE_ =:transType ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusError ");
        sql.append("AND TYPE_ <> :typeNone ");
        sql.append("AND TYPE_ <> :typeLoss ");
        sql.append("AND TYPE_ <> :typeOver ");
        sql.append("AND COMPANY_ID_ =:companyId ");
        sql.append("AND REGISTER_TIME_ >= :start ");
        sql.append("AND REGISTER_TIME_ <= :end ");
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("ID_, ");
        sql.append("PLATE_NUM_, ");
        sql.append("CUSTOMER_ID_, ");
        sql.append("CUSTOMER_NAME_, ");
        sql.append("FOOD_VARIETY_, ");
        sql.append("DEPOT_ID_, ");
        sql.append("TYPE_, ");
        sql.append("PROGRESS_, ");
        sql.append("FULL_WEIGHT_, ");
        sql.append("EMPTY_WEIGHT_, ");
        sql.append("NET_WEIGHT_, ");
        sql.append("DE_SUM_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record ");
        sql.append("WHERE ");
        sql.append("TRANS_TYPE_ =:transType ");
        sql.append("AND RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND TYPE_ <> :typeNone ");
        sql.append("AND TYPE_ <> :typeLoss ");
        sql.append("AND TYPE_ <> :typeOver ");
        sql.append("AND COMPANY_ID_ =:companyId ");
        sql.append("AND REGISTER_TIME_ >= :start ");
        sql.append("AND REGISTER_TIME_ <= :end ");
        Map<String, Object> args = new HashMap<>();
        args.put("transType", TransType.TYPE_3.getCode());
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("typeNone", InoutConstant.TYPE_NONE);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        Map<String, Object> args = new HashMap<>();
        args.put("transType", TransType.TYPE_3.getCode());
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("typeNone", InoutConstant.TYPE_NONE);
        args.put("typeLoss", Constant.LOSS_OVER_LOSS);
        args.put("typeOver", Constant.LOSS_OVER_OVER);
        args.put("companyId", ContextUtil.getCompanyId());
        args.put("start", DateUtil.getCurZero(start));
        args.put("end", DateUtil.getNextZero(end));
        String str = (String) parameter.get("deptId");
        if(StringUtils.isNotEmpty(str)){
            sql.append("AND DEPT_ID_ =:deptId ");
            args.put("deptId", str);
        }
        str = (String) parameter.get("type");
        if(StringUtils.isNotEmpty(str)){
            sql.append("AND TYPE_ =:type ");
            args.put("type", str);
        }
        str = (String) parameter.get("customerId");
        if(StringUtils.isNotEmpty(str)){
            sql.append("AND CUSTOMER_ID_ =:customerId ");
            args.put("customerId", str);
        }
        str = (String) parameter.get("plateNum");
        if(StringUtils.isNotEmpty(str)){
            sql.append("AND PLATE_NUM_ like:plateNum ");
            args.put("plateNum", "%" + str + "%");
        }
        sql.append("ORDER BY ID_ DESC ");
        String str = (String) parameter.get("deptId");
        if (StringUtils.isNotEmpty(str)) {
            sql.append("AND DEPT_ID_ =:deptId ");
            args.put("deptId", str);
        }
        str = (String) parameter.get("type");
        if (StringUtils.isNotEmpty(str)) {
            sql.append("AND TYPE_ =:type ");
            args.put("type", str);
        }
        str = (String) parameter.get("customerId");
        if (StringUtils.isNotEmpty(str)) {
            sql.append("AND CUSTOMER_ID_ =:customerId ");
            args.put("customerId", str);
        }
        str = (String) parameter.get("plateNum");
        if (StringUtils.isNotEmpty(str)) {
            sql.append("AND PLATE_NUM_ like:plateNum ");
            args.put("plateNum", "%" + str + "%");
        }
        sql.append("ORDER BY ID_ DESC ");
        log.debug("====执行SLQ,查询流水主表信息={},参数={}", sql.toString(),args);
        log.debug("====执行SLQ,查询流水主表信息={},参数={}", sql.toString(), args);
        List<ReportInoutShipData> list1 = this.getNamedParameterJdbcTemplate().query(sql.toString(), args, new ReportInoutShipRowMapper1());
        List<ReportInoutShipData> list1 = this.getNamedParameterJdbcTemplate().query(sql.toString(), args, new ReportInoutShipRowMapper1());
        if (null == list1 || list1.isEmpty()){
            return null;
        }
        String depotId = (String) parameter.get("depotId");
        String carNum = (String) parameter.get("carNum");
        List<ReportInoutShipData> list = new ArrayList<>();
        List<ReportInoutShipData> list2;
        int index = 1;
        //合计信息
        ReportInoutShipData hj = new ReportInoutShipData();
        hj.setId("合计");
        for (ReportInoutShipData shipData : list1) {
            list2 = this.listShipRecordItem(shipData.getId(), depotId, carNum);
            if(null == list2 || list2.isEmpty()){
                continue;
            }
            if(!InoutConstant.PROGRESS_RECORD.equals(shipData.getProgress())){
                //流程未完成,统计重量信息
                for (ReportInoutShipData shipItem : list2) {
                    shipData.setFullWeight(shipData.getFullWeight() + shipItem.getFullWeight());
                    shipData.setEmptyWeight(shipData.getEmptyWeight() + shipItem.getEmptyWeight());
                    shipData.setNetWeight(shipData.getNetWeight() + shipItem.getNetWeight());
                    shipData.setDeSum(shipData.getDeSum() + shipItem.getDeSum());
                    shipData.setSettleWeight(shipData.getSettleWeight() + shipItem.getSettleWeight());
                }
            }
        if (null == list1 || list1.isEmpty()) {
            return null;
        }
        String depotId = (String) parameter.get("depotId");
        String carNum = (String) parameter.get("carNum");
        List<ReportInoutShipData> list = new ArrayList<>();
        List<ReportInoutShipData> list2;
        int index = 1;
        //合计信息
        ReportInoutShipData hj = new ReportInoutShipData();
        hj.setId("合计");
        for (ReportInoutShipData shipData : list1) {
            list2 = this.listShipRecordItem(shipData.getId(), depotId, carNum);
            if (null == list2 || list2.isEmpty()) {
                continue;
            }
            if (!InoutConstant.PROGRESS_RECORD.equals(shipData.getProgress())) {
                //流程未完成,统计重量信息
                for (ReportInoutShipData shipItem : list2) {
                    shipData.setFullWeight(shipData.getFullWeight() + shipItem.getFullWeight());
                    shipData.setEmptyWeight(shipData.getEmptyWeight() + shipItem.getEmptyWeight());
                    shipData.setNetWeight(shipData.getNetWeight() + shipItem.getNetWeight());
                    shipData.setDeSum(shipData.getDeSum() + shipItem.getDeSum());
                    shipData.setSettleWeight(shipData.getSettleWeight() + shipItem.getSettleWeight());
                }
            }
            list.addAll(list2);
            shipData.setIndex(index + "");
            list.add(shipData);
            index ++;
            list.addAll(list2);
            shipData.setIndex(index + "");
            list.add(shipData);
            index++;
            //统计合计信息
            hj.setFullWeight(hj.getFullWeight() + shipData.getFullWeight());
            hj.setEmptyWeight(hj.getEmptyWeight() + shipData.getEmptyWeight());
            hj.setNetWeight(hj.getNetWeight() + shipData.getNetWeight());
            hj.setDeSum(hj.getDeSum() + shipData.getDeSum());
            hj.setSettleWeight(hj.getSettleWeight() + shipData.getSettleWeight());
        }
        list.add(hj);
        return list;
    }
            //统计合计信息
            hj.setFullWeight(hj.getFullWeight() + shipData.getFullWeight());
            hj.setEmptyWeight(hj.getEmptyWeight() + shipData.getEmptyWeight());
            hj.setNetWeight(hj.getNetWeight() + shipData.getNetWeight());
            hj.setDeSum(hj.getDeSum() + shipData.getDeSum());
            hj.setSettleWeight(hj.getSettleWeight() + shipData.getSettleWeight());
        }
        list.add(hj);
        return list;
    }
    public List<ReportInoutShipData> listShipRecordItem(String recordId, String depotId, String carNum) {
    public List<ReportInoutShipData> listShipRecordItem(String recordId, String depotId, String carNum) {
        if (StringUtils.isEmpty(recordId)){
            return null;
        }
        if (StringUtils.isEmpty(recordId)) {
            return null;
        }
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("CAR_NUM_, ");
        sql.append("CAR_NAME_, ");
        sql.append("TYPE_, ");
        sql.append("PROGRESS_, ");
        sql.append("FULL_WEIGHT_, ");
        sql.append("EMPTY_WEIGHT_, ");
        sql.append("NET_WEIGHT_, ");
        sql.append("DE_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("CREATE_TIME_ AS COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record_item ");
        sql.append("WHERE RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND PROGRESS_ =:progressRecord ");
        Map<String, Object> args = new HashMap<>();
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("progressRecord", InoutConstant.PROGRESS_RECORD);
        if(StringUtils.isNotEmpty(recordId)){
            sql.append("AND RECORD_ID_ =:recordId ");
            args.put("recordId", recordId);
        }
        if(StringUtils.isNotEmpty(depotId)){
            sql.append("AND DEPOT_ID_ =:depotId ");
            args.put("depotId", depotId);
        }
        if(StringUtils.isNotEmpty(carNum)){
            sql.append("AND CAR_NUM_ like:carNum ");
            args.put("carNum", "%" + carNum + "%");
        }
        sql.append("ORDER BY CREATE_TIME_ ASC ");
        log.debug("====执行SLQ1={},参数={}", sql.toString(),args);
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT ");
        sql.append("DEPOT_ID_, ");
        sql.append("CAR_NUM_, ");
        sql.append("CAR_NAME_, ");
        sql.append("TYPE_, ");
        sql.append("PROGRESS_, ");
        sql.append("FULL_WEIGHT_, ");
        sql.append("EMPTY_WEIGHT_, ");
        sql.append("NET_WEIGHT_, ");
        sql.append("DE_, ");
        sql.append("SETTLE_WEIGHT_, ");
        sql.append("CREATE_TIME_ AS COMPLETE_TIME_ ");
        sql.append("FROM ");
        sql.append("d_inout_record_item ");
        sql.append("WHERE RECORD_STATUS_ <> :recordStatusDel ");
        sql.append("AND PROGRESS_ =:progressRecord ");
        Map<String, Object> args = new HashMap<>();
        args.put("recordStatusDel", InoutConstant.RECORD_STATUS_DEL);
        args.put("progressRecord", InoutConstant.PROGRESS_RECORD);
        if (StringUtils.isNotEmpty(recordId)) {
            sql.append("AND RECORD_ID_ =:recordId ");
            args.put("recordId", recordId);
        }
        if (StringUtils.isNotEmpty(depotId)) {
            sql.append("AND DEPOT_ID_ =:depotId ");
            args.put("depotId", depotId);
        }
        if (StringUtils.isNotEmpty(carNum)) {
            sql.append("AND CAR_NUM_ like:carNum ");
            args.put("carNum", "%" + carNum + "%");
        }
        sql.append("ORDER BY CREATE_TIME_ ASC ");
        log.debug("====执行SLQ1={},参数={}", sql.toString(), args);
        List<ReportInoutShipData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportInoutShipRowMapper2());
        List<ReportInoutShipData> data = this.getNamedParameterJdbcTemplate()
                .query(sql.toString(), args, new ReportInoutShipRowMapper2());
        return data;
    }
        return data;
    }
}
igds-inout/src/main/java/com/ld/igds/inout/view/InoutReportPR.java
@@ -19,237 +19,242 @@
import com.ld.igds.util.DateUtil;
/**
 *
 * @author: andy.jia
 * @description:
 * @version:
 * @data:2020å¹´3月13日
 *
 */
@Component
public class InoutReportPR {
    @Autowired
    private HInoutReportService hiberReportService;
    @Autowired
    private JInoutReportService jdbcReportService;
    @Autowired
    private SysDeptService sysDeptService;
    @Autowired
    private HInoutReportService hiberReportService;
    @Autowired
    private JInoutReportService jdbcReportService;
    @Autowired
    private SysDeptService sysDeptService;
    /**
     * inoutReportPR#getQuery æ ¹æ®æŠ¥è¡¨ç±»åž‹ï¼ŒèŽ·å–é»˜è®¤æŸ¥è¯¢ä¿¡æ¯ï¼Œæ¯”å¦‚è¡¨å¤´ä¿¡æ¯ç­‰
     *
     * @param
     * @return
     */
    @DataProvider
    public Map<String, Object> getQuery(Map<String, Object> param) {
        Map<String, Object> result = new HashMap<String, Object>();
        //获取参数中报表类型
        String type = (String)param.get("type");
        //获取参数中分库编码
        String deptId = (String)param.get("deptId");
        //获取分库编码对应的分库名称
        String deptName = "";
        List<DefaultDept> defaultDepts = sysDeptService.getCacheDept(ContextUtil.getCompanyId());
        for (DefaultDept defaultDept : defaultDepts) {
            if(defaultDept.getId().equals(deptId)){
                deptName = defaultDept.getName();
            }
        }
        if ("INOUT_DETAIL".equals(type)) {
            result.put("title", "出入库明细汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "出入库明细汇总");
                result.put("deptId", deptId);
            }
    /**
     * inoutReportPR#getQuery æ ¹æ®æŠ¥è¡¨ç±»åž‹ï¼ŒèŽ·å–é»˜è®¤æŸ¥è¯¢ä¿¡æ¯ï¼Œæ¯”å¦‚è¡¨å¤´ä¿¡æ¯ç­‰
     *
     * @param
     * @return
     */
    @DataProvider
    public Map<String, Object> getQuery(Map<String, Object> param) {
        Map<String, Object> result = new HashMap<String, Object>();
        //获取参数中报表类型
        String type = (String) param.get("type");
        //获取参数中分库编码
        String deptId = (String) param.get("deptId");
        //获取分库编码对应的分库名称
        String deptName = "";
        List<DefaultDept> defaultDepts = sysDeptService.getCacheDept(ContextUtil.getCompanyId());
        for (DefaultDept defaultDept : defaultDepts) {
            if (defaultDept.getId().equals(deptId)) {
                deptName = defaultDept.getName();
            }
        }
        if ("INOUT_DETAIL".equals(type)) {
            result.put("title", "出入库明细汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "出入库明细汇总");
                result.put("deptId", deptId);
            }
            result.put("unit", "千克(KG)");
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("unit", "千克(KG)");
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        }
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        }
        /**
         * æ¯æ—¥å‡ºåº“统计
         */
        if ("OUT_DAY".equals(type)) {
            result.put("title", "每日出库汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "每日出库汇总");
                result.put("deptId", deptId);
            }
        /**
         * æ¯æ—¥å‡ºåº“统计
         */
        if ("OUT_DAY".equals(type)) {
            result.put("title", "每日出库汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "每日出库汇总");
                result.put("deptId", deptId);
            }
            result.put("unit", "千克(KG)");
            result.put("day", new Date());
            result.put("timeDesc",
                    DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("type", InoutConstant.TYPE_OUT);
        }
            result.put("unit", "千克(KG)");
            result.put("day", new Date());
            result.put("timeDesc",
                    DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("type", InoutConstant.TYPE_OUT);
        }
        /**
         * æ¯æ—¥å…¥åº“汇总统计
         */
        if ("IN_DAY".equals(type)) {
            result.put("title", "每日入库汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "每日入库汇总");
                result.put("deptId", deptId);
            }
        /**
         * æ¯æ—¥å…¥åº“汇总统计
         */
        if ("IN_DAY".equals(type)) {
            result.put("title", "每日入库汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "每日入库汇总");
                result.put("deptId", deptId);
            }
            result.put("unit", "千克(KG)");
            result.put("day", new Date());
            result.put("timeDesc",
                    DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("type", InoutConstant.TYPE_IN);
        }
        /**
         * åˆ†ä»“收支存
         */
        if ("INOUTDEPOT".equals(type)) {
            result.put("title", "分仓粮油收支存");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "分仓粮油收支存");
                result.put("deptId", deptId);
            }
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("unit", "千克(KG)");
            result.put("day", new Date());
            result.put("timeDesc",
                    DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("type", InoutConstant.TYPE_IN);
        }
        /**
         * åˆ†ä»“收支存
         */
        if ("INOUTDEPOT".equals(type)) {
            result.put("title", "分仓粮油收支存");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "分仓粮油收支存");
                result.put("deptId", deptId);
            }
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("unit", "千克(KG)");
        }
        /**
         * åˆ†å“ç§æ”¶æ”¯å­˜
         */
        if ("INOUTFOODVARIETY".equals(type)) {
            result.put("title", "分品种粮油收支存");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "分品种粮油收支存");
                result.put("deptId", deptId);
            }
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("unit", "千克(KG)");
        }
        /**
         * åˆ†å“ç§æ”¶æ”¯å­˜
         */
        if ("INOUTFOODVARIETY".equals(type)) {
            result.put("title", "分品种粮油收支存");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "分品种粮油收支存");
                result.put("deptId", deptId);
            }
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("unit", "千克(KG)");
        }
        if ("INOUT_SHIP_DETAIL".equals(type)) {
            result.put("title", "船运明细汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "船运明细汇总");
                result.put("deptId", deptId);
            }
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            result.put("unit", "千克(KG)");
        }
        if ("INOUT_SHIP_DETAIL".equals(type)) {
            result.put("title", "船运明细汇总");
            if (StringUtils.isNotEmpty(deptName)) {
                result.put("title", deptName + "船运明细汇总");
                result.put("deptId", deptId);
            }
            result.put("unit", "千克(KG)");
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("unit", "千克(KG)");
            result.put("end", new Date());
            Date start = DateUtil.getNewByDay(new Date(), -30);
            result.put("start", start);
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        }
        return result;
    }
            result.put("timeDesc",
                    DateFormatUtils.format(start, "yyyy-MM-dd") + "   æˆªè‡³ï¼š"
                            + DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
        }
        return result;
    }
    /**
     * å‡ºå…¥åº“汇总表
     * inoutReportPR#listRecord æŠ¥è¡¨æ•°æ®ï¼ŒåªèŽ·å–å·²ç»å®Œæˆçš„ï¼Œå¹¶ä¸”éžå¼‚å¸¸æ•°æ®å’Œåˆ é™¤æ•°æ®
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<InoutRecord> listRecord(Map<String, Object> param)
            throws Exception {
    /**
     * å‡ºå…¥åº“汇总表
     * inoutReportPR#listRecord æŠ¥è¡¨æ•°æ®ï¼ŒåªèŽ·å–å·²ç»å®Œæˆçš„ï¼Œå¹¶ä¸”éžå¼‚å¸¸æ•°æ®å’Œåˆ é™¤æ•°æ®
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<InoutRecord> listRecord(Map<String, Object> param)
            throws Exception {
        if (null == param) {
            param = new HashMap<String, Object>();
            param.put("progress", InoutConstant.PROGRESS_RECORD);
        }
        if (null == param) {
            param = new HashMap<String, Object>();
            param.put("progress", InoutConstant.PROGRESS_RECORD);
        }
        List<InoutRecord> result = hiberReportService.listRecord(param);
        if (null == result || result.isEmpty())
            return result;
        List<InoutRecord> result = hiberReportService.listRecord(param);
        if (null == result || result.isEmpty())
            return result;
        // æ·»åŠ ç»Ÿè®¡ä¿¡æ¯
        double emptyWeightSum = 0.0, fullWeightSum = 0.0, deWetSum = 0.0, deImpuritySum = 0.0, deHandleSum = 0.0,  deOtherSum = 0.0, deSumSum = 0.0, netWeightSum = 0.0, settleWeightSum = 0.0;
        int index = 1;
        for (InoutRecord record : result) {
            record.setRemarks(String.valueOf(index));
            emptyWeightSum += record.getEmptyWeight();
            fullWeightSum += record.getFullWeight();
        // æ·»åŠ ç»Ÿè®¡ä¿¡æ¯
        double emptyWeightSum = 0.0, fullWeightSum = 0.0, deCheck = 0.0, addCheck = 0.0, deWetSum = 0.0, deImpuritySum = 0.0, deHandleSum = 0.0, deOtherSum = 0.0, deSumSum = 0.0, netWeightSum = 0.0, settleWeightSum = 0.0;
        int index = 1;
        for (InoutRecord record : result) {
            record.setRemarks(String.valueOf(index));
            emptyWeightSum += record.getEmptyWeight();
            fullWeightSum += record.getFullWeight();
            deCheck += record.getDeCheck();
            addCheck += record.getAddCheck();
//            deWetSum += record.getDeWet();
//            deImpuritySum += record.getDeImpurity();
            deHandleSum += record.getDeHandle();
            deOtherSum += record.getDeOther();
        //    deSumSum += record.getDeSum();
            netWeightSum += record.getNetWeight();
            settleWeightSum += record.getSettleWeight();
            index ++;
        }
        InoutRecord sum = new InoutRecord();
        sum.setId("合计");
        sum.setEmptyWeight(emptyWeightSum);
        sum.setFullWeight(fullWeightSum);
            deHandleSum += record.getDeHandle();
            deOtherSum += record.getDeOther();
            //    deSumSum += record.getDeSum();
            netWeightSum += record.getNetWeight();
            settleWeightSum += record.getSettleWeight();
            index++;
        }
        InoutRecord sum = new InoutRecord();
        sum.setId("合计");
        sum.setEmptyWeight(emptyWeightSum);
        sum.setFullWeight(fullWeightSum);
        sum.setAddCheck(addCheck);
        sum.setDeCheck(deCheck);
//        sum.setDeWet(deWetSum);
//        sum.setDeImpurity(deImpuritySum);
        sum.setDeHandle(deHandleSum);
        sum.setDeOther(deOtherSum);
    //    sum.setDeSum(deSumSum);
        sum.setNetWeight(netWeightSum);
        sum.setSettleWeight(settleWeightSum);
        result.add(sum);
        return result;
    }
        sum.setDeHandle(deHandleSum);
        sum.setDeOther(deOtherSum);
        //    sum.setDeSum(deSumSum);
        sum.setNetWeight(netWeightSum);
        sum.setSettleWeight(settleWeightSum);
        result.add(sum);
    /**
     * inoutReportPR#inoutDepotData åˆ†ä»“粮油收支存
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutDepotData> inoutDepotData(Map<String, Object> param)throws Exception {
        List<ReportInoutDepotData> result = jdbcReportService.getInoutDepotData(param);
        return result;
    }
    /**
     * inoutReportPR#inoutFoodVarietyData åˆ†å“ç§ç²®æ²¹æ”¶æ”¯å­˜
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutDepotData> inoutFoodVarietyData(Map<String, Object> param)
            throws Exception {
        List<ReportInoutDepotData> result = jdbcReportService.getFoodVarietyData(param);
        return result;
    }
        return result;
    }
    /**
     * èˆ¹è¿æ˜Žç»†æ±‡æ€»
     * inoutReportPR#listShipDetail
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutShipData> listShipDetail(Map<String, Object> param) throws Exception {
    /**
     * inoutReportPR#inoutDepotData åˆ†ä»“粮油收支存
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutDepotData> inoutDepotData(Map<String, Object> param) throws Exception {
        List<ReportInoutDepotData> result = jdbcReportService.getInoutDepotData(param);
        return result;
    }
        if (null == param) {
            param = new HashMap<String, Object>();
        }
    /**
     * inoutReportPR#inoutFoodVarietyData åˆ†å“ç§ç²®æ²¹æ”¶æ”¯å­˜
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutDepotData> inoutFoodVarietyData(Map<String, Object> param)
            throws Exception {
        List<ReportInoutDepotData> result = jdbcReportService.getFoodVarietyData(param);
        return result;
    }
        return jdbcReportService.listShipDetail(param);
    }
    /**
     * èˆ¹è¿æ˜Žç»†æ±‡æ€»
     * inoutReportPR#listShipDetail
     *
     * @param param
     * @return
     */
    @DataProvider
    public List<ReportInoutShipData> listShipDetail(Map<String, Object> param) throws Exception {
        if (null == param) {
            param = new HashMap<String, Object>();
        }
        return jdbcReportService.listShipDetail(param);
    }
}
igds-inout/src/main/java/com/ld/igds/inout/view/ReportInDay.view.xml
@@ -251,6 +251,18 @@
          <Property name="width">100</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="align">center</Property>
          <Property name="name">addCheck</Property>
          <Property name="property">addCheck</Property>
          <Editor/>
        </DataColumn>
        <DataColumn>
          <Property name="align">center</Property>
          <Property name="name">deCheck</Property>
          <Property name="property">deCheck</Property>
          <Editor/>
        </DataColumn>
        <DataColumn name="fullWeight">
          <Property name="property">fullWeight</Property>
          <Property name="caption">毛重</Property>
@@ -265,21 +277,16 @@
          <Property name="property">netWeight</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="deWet">
          <Property name="property">deWet</Property>
          <Property name="caption">水分</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">deSum</Property>
          <Property name="align">center</Property>
          <Property name="name">deSum</Property>
        </DataColumn>
        <DataColumn name="settleWeight">
          <Property name="property">settleWeight</Property>
          <Property name="caption">结算重量</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">completeTime</Property>
          <Property name="align">center</Property>
          <Property name="name">completeTime</Property>
        </DataColumn>
      </DataGrid>
    </Container>
    <Export2ReportAction id="exportExcel">
igds-inout/src/main/java/com/ld/igds/inout/view/ReportInoutDetail.view.xml
@@ -41,8 +41,8 @@
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name"/>
                <Property name="value"/>
                <Property name="name"></Property>
                <Property name="value"></Property>
              </Entity>
              <Entity>
                <Property name="name">出库</Property>
@@ -306,21 +306,16 @@
          <Property name="property">netWeight</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">deSum</Property>
          <Property name="align">center</Property>
          <Property name="name">deSum</Property>
        </DataColumn>
        <DataColumn name="deWet">
          <Property name="property">deWet</Property>
          <Property name="caption">水分</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="settleWeight">
          <Property name="property">settleWeight</Property>
          <Property name="caption">结算重量</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">completeTime</Property>
          <Property name="align">center</Property>
          <Property name="name">completeTime</Property>
        </DataColumn>
      </DataGrid>
    </Container>
    <Export2ReportAction id="exportExcel">
igds-inout/src/main/java/com/ld/igds/inout/view/ReportOutDay.view.xml
@@ -251,6 +251,18 @@
          <Property name="width">100</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="align">center</Property>
          <Property name="name">addCheck</Property>
          <Property name="property">addCheck</Property>
          <Editor/>
        </DataColumn>
        <DataColumn>
          <Property name="align">center</Property>
          <Property name="name">deCheck</Property>
          <Property name="property">deCheck</Property>
          <Editor/>
        </DataColumn>
        <DataColumn name="fullWeight">
          <Property name="property">fullWeight</Property>
          <Property name="caption">毛重</Property>
@@ -265,21 +277,16 @@
          <Property name="property">netWeight</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="deWet">
          <Property name="property">deWet</Property>
          <Property name="caption">水分</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">deSum</Property>
          <Property name="align">center</Property>
          <Property name="name">deSum</Property>
        </DataColumn>
        <DataColumn name="settleWeight">
          <Property name="property">settleWeight</Property>
          <Property name="caption">结算重量</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">completeTime</Property>
          <Property name="align">center</Property>
          <Property name="name">completeTime</Property>
        </DataColumn>
      </DataGrid>
    </Container>
    <Export2ReportAction id="exportExcel">
igds-web/src/main/resources/templates/test/qualityReport02.html
@@ -102,40 +102,35 @@
        <td>bgcjsj</td>
    </tr>
    <tr>
        <td rowspan="7">质检结果</td>
        <td rowspan="4">质量指标检验</td>
        <td rowspan="6">质检结果</td>
        <td rowspan="3">质量指标检验</td>
        <td>品种</td>
        <td>foodVariety</td>
        <td>出糙率(%)</td>
        <td>rough</td>
        <td>容重(g/L)</td>
        <td>bulkWeight</td>
        <td>等级</td>
        <td>foodLevel</td>
    </tr>
    <tr>
        <td>整精米率(%)</td>
        <td>C10_ST</td>
        <td>色泽、气味</td>
        <td>C16_ST</td>
        <td>杂质(%)</td>
        <td>C02_ST</td>
        <td>水分(%)</td>
        <td>c_perWet</td>
    </tr>
    <tr>
        <td>黄粒米(%)</td>
        <td>C11_ST</td>
        <td>谷外糙米(%)</td>
        <td>C12_ST</td>
        <td>色泽、气味</td>
        <td>C16_ST</td>
    </tr>
    <tr>
        <td>互混率(%)</td>
        <td>C13_ST</td>
        <td colspan="4"></td>
        <td>不完善粒(%)</td>
        <td>C04_ST</td>
        <td>生芽粒(%)</td>
        <td>C05_ST</td>
        <td>生霉粒(%)</td>
        <td>C06_ST</td>
    </tr>
    <tr>
        <td>储存品质检验</td>
        <td>脂肪酸值(mgKOH/100g)</td>
        <td>C14_ST</td>
        <td>面筋吸水量(%)</td>
        <td>C08_ST</td>
        <td>品尝分值</td>
        <td>C15_ST</td>
        <td>色泽、气味</td>
@@ -143,19 +138,20 @@
    </tr>
    <tr>
        <td rowspan="2">食品安全检验</td>
        <td>黄曲霉毒素 B1(μg/kg)</td>
        <td>C17_ST</td>
        <td>呕吐毒(mg/kg)</td>
        <td>C27_ST</td>
        <td>玉米赤霉烯酮(μg/kg)</td>
        <td>C31_ST</td>
        <td>铅(mg/kg)</td>
        <td>C18_ST</td>
        <td>镉(mg/kg)</td>
        <td>C19_ST</td>
    </tr>
    <tr>
        <td>镉(mg/kg)</td>
        <td>C19_ST</td>
        <td>汞(μg/kg)</td>
        <td>C20_ST</td>
        <td>无机砷(mg/kg)</td>
        <td>C21_ST</td>
        <td colspan="2"></td>
    </tr>
    <tr>
        <td colspan="2">备注</td>
igds-web/src/main/resources/templates/test/qualityReport03.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
<!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: 15px
    }
    .div-tit {
        padding-top: 10px
    }
    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'><span class='sp1'></span><span class='sp1'></span><span
        class='sp1'>单号:serId</span></div>
<table cellspacing='0' cellpadding='0'>
    <tr>
        <td colspan='2' rowspan="5" `width`="15%">样品信息</td>
        <td width='14%'>单位名称</td>
        <td colspan='2' `width`='28%'>customerName</td>
        <td width='15%'>库区名称</td>
        <td colspan='2' `width`='28%'>deptName</td>
    </tr>
    <tr>
        <td width='14%'>仓房名称</td>
        <td width='14%'>depotName</td>
        <td width='14%'>货位名称</td>
        <td width='15%'>hwmc</td>
        <td width='14%'>保管员</td>
        <td width='14%'>storeKeeperName</td>
    </tr>
    <tr>
        <td>品种</td>
        <td>foodVariety</td>
        <td>性质</td>
        <td>foodType</td>
        <td>仓内粮食数量</td>
        <td>foodNumber KG</td>
    </tr>
    <tr>
        <td>产地</td>
        <td>foodLocation</td>
        <td>等级</td>
        <td>foodLevel</td>
        <td>生产年限</td>
        <td>scnx</td>
    </tr>
    <tr>
        <td>样品数量</td>
        <td>checkNum</td>
        <td>样品代表数量</td>
        <td>foodNumber KG</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>checkTime2</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>bulkWeight</td>
        <td>等级</td>
        <td>foodLevel</td>
    </tr>
    <tr>
        <td>色泽、气味</td>
        <td>C16_ST</td>
        <td>杂质(%)</td>
        <td>C02_ST</td>
        <td>水分(%)</td>
        <td>c_perWet</td>
    </tr>
    <tr>
        <td>不完善粒(%)</td>
        <td>C04_ST</td>
        <td>生霉粒(%)</td>
        <td>C06_ST</td>
        <td>霉变粒(%)</td>
        <td>C07_ST</td>
    </tr>
    <tr>
        <td>储存品质检验</td>
        <td>脂肪酸值(mgKOH/100g)</td>
        <td>C14_ST</td>
        <td>品尝分值</td>
        <td>C15_ST</td>
        <td>色泽、气味</td>
        <td>C16_ST</td>
    </tr>
    <tr>
        <td rowspan="2">食品安全检验</td>
        <td>呕吐毒(mg/kg)</td>
        <td>C27_ST</td>
        <td>玉米赤霉烯酮(μg/kg)</td>
        <td>C31_ST</td>
        <td>铅(mg/kg)</td>
        <td>C18_ST</td>
    </tr>
    <tr>
        <td>镉(mg/kg)</td>
        <td>C19_ST</td>
        <td>汞(μg/kg)</td>
        <td>C20_ST</td>
        <td>无机砷(mg/kg)</td>
        <td>C21_ST</td>
    </tr>
    <tr>
        <td colspan="2">备注</td>
        <td colspan="6">remark</td>
    </tr>
</table>
</body>
</html>
igds-web/src/main/resources/templates/test/qualityReport04.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,152 @@
<!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: 15px
    }
    .div-tit {
        padding-top: 10px
    }
    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'><span class='sp1'></span><span class='sp1'></span><span
        class='sp1'>单号:serId</span></div>
<table cellspacing='0' cellpadding='0'>
    <tr>
        <td colspan='2' rowspan="5" `width`="15%">样品信息</td>
        <td width='14%'>单位名称</td>
        <td colspan='2' `width`='28%'>customerName</td>
        <td width='15%'>库区名称</td>
        <td colspan='2' `width`='28%'>deptName</td>
    </tr>
    <tr>
        <td width='14%'>仓房名称</td>
        <td width='14%'>depotName</td>
        <td width='14%'>货位名称</td>
        <td width='15%'>hwmc</td>
        <td width='14%'>保管员</td>
        <td width='14%'>storeKeeperName</td>
    </tr>
    <tr>
        <td>品种</td>
        <td>foodVariety</td>
        <td>性质</td>
        <td>foodType</td>
        <td>仓内粮食数量</td>
        <td>foodNumber KG</td>
    </tr>
    <tr>
        <td>产地</td>
        <td>foodLocation</td>
        <td>等级</td>
        <td>foodLevel</td>
        <td>生产年限</td>
        <td>scnx</td>
    </tr>
    <tr>
        <td>样品数量</td>
        <td>checkNum</td>
        <td>样品代表数量</td>
        <td>foodNumber KG</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>checkTime2</td>
        <td>报告出具时间</td>
        <td>bgcjsj</td>
    </tr>
    <tr>
        <td rowspan="5">质检结果</td>
        <td rowspan="3">质量指标检验</td>
        <td>品种</td>
        <td>foodVariety</td>
        <td>完整粒率(%)</td>
        <td>C22_ST</td>
        <td>等级</td>
        <td>foodLevel</td>
    </tr>
    <tr>
        <td>杂质(%)</td>
        <td>C02_ST</td>
        <td>水分(%)</td>
        <td>c_perWet</td>
        <td>色泽、气味</td>
        <td>C16_ST</td>
    </tr>
    <tr>
        <td>损伤粒率(%)</td>
        <td>C23_ST</td>
        <td>热损伤粒(%)</td>
        <td>C24_ST</td>
        <td colspan="2"></td>
    </tr>
    <tr>
        <td>储存品质检验</td>
        <td>粗脂肪酸值(mgKOH/100g)</td>
        <td>C25_ST</td>
        <td>品尝分值</td>
        <td>C15_ST</td>
        <td>色泽、气味</td>
        <td>C16_ST</td>
    </tr>
    <tr>
        <td>食品安全检验</td>
        <td>铅(mg/kg)</td>
        <td>C18_ST</td>
        <td>镉(mg/kg)</td>
        <td>C19_ST</td>
        <td colspan="2"></td>
    </tr>
    <tr>
        <td colspan="2">备注</td>
        <td colspan="6">remark</td>
    </tr>
</table>
</body>
</html>