#
mrzhssss
2022-04-07 a8b9893712835e3e4ebb94c3563234f7ed81d089
#
10个文件已修改
1个文件已添加
329 ■■■■■ 已修改文件
pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/controller/ItemReportController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/ItemReport.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/ItemReportService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/ItemReportServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/excel/analysis_report.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ItemReportMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/itemReport/itemReport.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/item/item.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/itemBusiness/itemBusiness.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/itemReport/itemReport.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -50,6 +50,7 @@
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-driver.version}</version>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
src/main/java/zy/cloud/wms/manager/controller/ItemReportController.java
@@ -7,6 +7,10 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellAddress;
import org.apache.poi.xssf.usermodel.*;
import zy.cloud.wms.manager.entity.Cstmr;
import zy.cloud.wms.manager.entity.Item;
import zy.cloud.wms.manager.entity.ItemReport;
@@ -20,6 +24,11 @@
import org.springframework.web.bind.annotation.*;
import zy.cloud.wms.manager.service.ItemService;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
@RestController
@@ -76,11 +85,35 @@
    @RequestMapping(value = "/itemReport/update/auth")
    @ManagerAuth
    public R update(ItemReport itemReport){
        if (Cools.isEmpty(itemReport) || null==itemReport.getId()){
    public R update(ItemReport report){
        if (Cools.isEmpty(report) || null==report.getId()){
            return R.error();
        }
        itemReportService.updateById(itemReport);
        if (report.getDeliverReason() == null || report.getDeliverReason().equals("")) {
            report.setDeliverIssue(false);
        }else {
            report.setDeliverIssue(true);
        }
        if (report.getQualityReason() == null || report.getQualityReason().equals("")) {
            report.setQualityIssue(false);
        }else {
            report.setQualityIssue(true);
        }
        if (report.getDesignReason() == null || report.getDesignReason().equals("")) {
            report.setDesignIssue(false);
        }else {
            report.setDesignIssue(true);
        }
        if (report.getInstallReason() == null || report.getInstallReason().equals("")) {
            report.setInstallIssue(false);
        }else {
            report.setInstallIssue(true);
        }
        itemReportService.update(report,new EntityWrapper<ItemReport>()
                .eq("id",report.getId()));
        return R.ok();
    }
@@ -144,4 +177,52 @@
        }
        return R.ok(result);
    }
    @RequestMapping("/itemReport/makeReport/auth")
    public HttpServletResponse makeReport(@RequestParam("id") String id, HttpServletResponse response){
        /**
         * 控管与初始化
         *
         */
        if (Cools.isEmpty(id)) {
            throw new CoolException("需要生成报告的项目为空,无法生成");
        }
        Item item = itemService.selectOne(new EntityWrapper<Item>()
                .eq("id", id));
        ItemReport itemReport = itemReportService.selectOne(new EntityWrapper<ItemReport>()
                .eq("item_id", id));
        if (Cools.isEmpty(item) || Cools.isEmpty(itemReport)) {
            throw new CoolException("找不到该项目或是项目的总结");
        }
        return itemReportService.makeReport(item,itemReport, response);
    }
    public static void main(String[] args) {
        FileOutputStream out = null;
        FileInputStream in = null;
        try {
            in = new FileInputStream("src/main/resources/excel/analysis_report.xlsx");
            out = new FileOutputStream("C:\\Users\\Zhs\\Desktop\\report.xlsx");
            XSSFWorkbook wb = new XSSFWorkbook(in);
            XSSFSheet mainSheet = wb.getSheet("报告");
            XSSFRow row10 = mainSheet.getRow(11);
            XSSFCell cell = row10.getCell(1);
            cell.setCellValue("为啥你就可以呢?");
            wb.write(out);
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                out.close();
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
src/main/java/zy/cloud/wms/manager/entity/ItemReport.java
@@ -129,6 +129,15 @@
    @ApiModelProperty(value= "1:未生成,2:已生成(不可修改)")
    private Integer status;
    private String issue;
    public String getIssue$(){
        if (this.issue == null || this.issue.equals("")){
            return "无异常";
        }
        return this.issue;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
@@ -198,4 +207,31 @@
        }
        return this.installReason;
    }
    public String getDeliverIssue$() {
        if (this.deliverIssue) {
            return "有";
        }
        return "无";
    }
    public String getQualityIssue$() {
        if (this.qualityIssue) {
            return "有";
        }
        return "无";
    }
    public String getDesignIssue$() {
        if (this.designIssue) {
            return "有";
        }
        return "无";
    }
    public String getInstallIssue$() {
        if (this.installIssue) {
            return "有";
        }
        return "无";
    }
}
src/main/java/zy/cloud/wms/manager/service/ItemReportService.java
@@ -1,9 +1,15 @@
package zy.cloud.wms.manager.service;
import com.core.common.R;
import zy.cloud.wms.manager.entity.Item;
import zy.cloud.wms.manager.entity.ItemReport;
import com.baomidou.mybatisplus.service.IService;
import javax.servlet.http.HttpServletResponse;
public interface ItemReportService extends IService<ItemReport> {
    void init(ItemReport itemReport, Long userId);
    HttpServletResponse makeReport(Item item, ItemReport itemReport, HttpServletResponse response);
}
src/main/java/zy/cloud/wms/manager/service/impl/ItemReportServiceImpl.java
@@ -2,7 +2,11 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import zy.cloud.wms.manager.entity.Item;
import zy.cloud.wms.manager.mapper.ItemReportMapper;
@@ -12,6 +16,10 @@
import org.springframework.stereotype.Service;
import zy.cloud.wms.manager.service.ItemService;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;
@Service("itemReportService")
@@ -70,4 +78,134 @@
        report.setCreateBy(userId);
        insert(report);
    }
    @Override
    public HttpServletResponse makeReport(Item item, ItemReport itemReport, HttpServletResponse response) {
        FileInputStream in = null;
        ServletOutputStream out = null;
        try {
            /**
             * 一些初始化
             */
            in = new FileInputStream("src/main/resources/excel/analysis_report.xlsx");
            XSSFWorkbook wb = new XSSFWorkbook(in);
            XSSFSheet mainSheet = wb.getSheet("报告");
            /**
             * 开始设置第10和11合并行的所有列, 角标从0开始,rownum9实际上等于10
             */
            XSSFRow row10 = mainSheet.getRow(9);
            row10.getCell(1).setCellValue(item.getUuid());
            row10.getCell(3).setCellValue(item.getEndTime0$());
            row10.getCell(5).setCellValue(item.getRealEndTime0$());
            XSSFRow row1 = mainSheet.getRow(0);
            row1.getCell(0).setCellValue(item.getName()+"订单总结分析报告");
            /**
             * 开始设置第12行
             */
            XSSFRow row12 = mainSheet.getRow(11);
            row12.getCell(1).setCellValue(item.getUuid());
            row12.getCell(3).setCellValue(item.getPlandeAmt());
            row12.getCell(5).setCellValue(item.getRealdeAmt());
            /**
             *开始设置第14行
             */
            XSSFRow row14 = mainSheet.getRow(13);
            row14.getCell(1).setCellValue(item.getName());
            row14.getCell(3).setCellValue(item.getPlaninAmt());
            row14.getCell(5).setCellValue(item.getRealinAmt());
            /**
             * 第16行
             */
            XSSFRow row16 = mainSheet.getRow(15);
            row16.getCell(1).setCellValue(item.getType$());
            /**
             * 第18行
             */
            XSSFRow row17 = mainSheet.getRow(17);
            row17.getCell(1).setCellValue(item.getSalesman());
            row17.getCell(2).setCellValue(itemReport.getIssue());
            /**
             * 第20行
             */
            XSSFRow row19 = mainSheet.getRow(19);
            row19.getCell(1).setCellValue(item.getLeader());
            /**
             * 第22行
             */
            XSSFRow row22 = mainSheet.getRow(21);
            row22.getCell(1).setCellValue(item.getOriginArea());
            /**
             * 第29行
             */
            XSSFRow row29 = mainSheet.getRow(28);
            row29.getCell(1).setCellValue(itemReport.getDeliverIssue$());
            row29.getCell(2).setCellValue(itemReport.getDeliverReason());
            /**
             * 第31行
             */
            XSSFRow row31 = mainSheet.getRow(30);
            row31.getCell(1).setCellValue(itemReport.getQualityIssue$());
            row31.getCell(2).setCellValue(itemReport.getQualityReason());
            /**
             * 33行
             */
            XSSFRow row33 = mainSheet.getRow(32);
            row33.getCell(1).setCellValue(itemReport.getDesignIssue$());
            row33.getCell(2).setCellValue(itemReport.getDesignReason());
            /**
             * 35行
             */
            XSSFRow row35 = mainSheet.getRow(34);
            row35.getCell(1).setCellValue(itemReport.getInstallIssue$());
            row35.getCell(2).setCellValue(itemReport.getInstallReason());
            /**
             * 第45行
             */
            XSSFRow row45 = mainSheet.getRow(44);
            row45.getCell(1).setCellValue(itemReport.getConclusion());
//            wb.write(out);
            out = response.getOutputStream();
            response.setContentType("application/octet-stream; charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(item.getName()+"报告.xlsx"));
            ServletOutputStream outputStream = response.getOutputStream();
            wb.write(outputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return response;
    }
}
src/main/resources/excel/analysis_report.xlsx
Binary files differ
src/main/resources/mapper/ItemReportMapper.xml
@@ -10,7 +10,7 @@
        <result column="deliver_issue" property="deliverIssue" />
        <result column="deliver_reason" property="deliverReason" />
        <result column="quality_issue" property="qualityIssue" />
        <result column="quality_reson" property="qualityReson" />
        <result column="quality_reson" property="qualityReason" />
        <result column="design_issue" property="designIssue" />
        <result column="design_reason" property="designReason" />
        <result column="install_issue" property="installIssue" />
@@ -21,6 +21,7 @@
        <result column="create_by" property="createBy" />
        <result column="create_time" property="createTime" />
        <result column="status" property="status" />
        <result column="issue" property="issue" />
    </resultMap>
src/main/webapp/static/js/itemReport/itemReport.js
@@ -26,6 +26,7 @@
            ,{field: 'qualityReason$', align: 'center',title: '质量问题原因'}
            ,{field: 'designReason$', align: 'center',title: '设计问题原因'}
            ,{field: 'installReason$', align: 'center',title: '安装问题原因'}
            ,{field: 'issue$', align: 'center',title: '异常描述'}
            ,{field: 'conclusion', align: 'center',title: '总结'}
            ,{field: 'updateBy', align: 'center',title: '', hide:true}
            ,{field: 'updateTime$', align: 'center',title: '', hide:true}
@@ -134,19 +135,47 @@
    // 监听行工具事件
    table.on('tool(itemReport)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                var ids = [data.id];
                del(ids);
                var id = data.id;
                del(id);
                break;
            case "makeReport":
                console.log(obj);
                var ids = [data.itemId];
                makeReport(ids);
                break;
        }
    });
    function makeReport(id) {
        location.href = 'http://localhost:8080/pms/itemReport/makeReport/auth?id=' + id;
        // layer.confirm('确定要生成选中数据的报告吗?', {
        //         skin: 'layui-layer-admin',
        //         shade: .1
        //     }, function (i) {
        //         layer.close(i);
        //         var loadIndex = layer.load(2);
        //         $.ajax({
        //             url: baseUrl+"/itemReport/makeReport/auth",
        //             headers: {'token': localStorage.getItem('token')},
        //             data: {ids: ids},
        //             method: 'POST',
        //             success: function (res) {
        //                 layer.close(loadIndex);
        //
        //             }
        //         })
        //     }
        // )
    };
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        mData.itemId$ = mData.itemName;
        admin.open({
            type: 1,
            area: '600px',
@@ -156,6 +185,7 @@
                layDateRender();
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    console.log(data);
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/itemReport/"+(mData?'update':'add')+"/auth",
src/main/webapp/views/item/item.html
@@ -181,9 +181,9 @@
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">实施周期(月): </label>
                    <label class="layui-form-label layui-form-required">实施周期(天): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number" lay-verify="required"
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字天数" type="number" lay-verify="required"
                               onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               oninput="if(value>200)value=200;if(value<=0)value=1">
src/main/webapp/views/itemBusiness/itemBusiness.html
@@ -87,9 +87,9 @@
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">实施周期(月): </label>
                    <label class="layui-form-label layui-form-required">实施周期(天): </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number" lay-verify="required"
                        <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字天数" type="number" lay-verify="required"
                               onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
                               oninput="if(value>200)value=200;if(value<=0)value=1">
@@ -174,9 +174,9 @@
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">销售预安装期: </label>
                    <label class="layui-form-label ">销售预安装期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="preinDate" id="preinDate" placeholder="请输入预安装日期" lay-vertype="tips" lay-verify="required">
                        <input class="layui-input" name="preinDate" id="preinDate" placeholder="请输入预安装日期" lay-vertype="tips">
                    </div>
                </div>
src/main/webapp/views/itemReport/itemReport.html
@@ -40,7 +40,7 @@
</script>
<script type="text/html" id="operate">
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>-->
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
<!--    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>-->
    <a class="layui-btn layui-btn layui-btn-xs btn-edit" lay-event="makeReport">生成报告</a>
</script>
@@ -91,7 +91,7 @@
                <div class="layui-form-item">
                    <label class="layui-form-label">质量问题描述: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="qualityReson" placeholder="为空表示无">
                        <input class="layui-input" name="qualityReason" placeholder="为空表示无">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
@@ -119,6 +119,12 @@
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">异常描述: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="issue" placeholder="为空表示无">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">总结: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="conclusion" placeholder="请输入总结">