浏览代码

零件工艺流程卡页面及下载,模板到时放在nginx目录下
ToDo 数据到时需要等表完全定型后sql调整

yejian016332 3 年之前
父节点
当前提交
98c8eb2f9b

+ 33 - 0
imcs-admin-boot/imcs-authority-entity/pom.xml

@@ -13,6 +13,11 @@
     <artifactId>imcs-authority-entity</artifactId>
     <name>${project.artifactId}</name>
     <description>权限服务实体模块</description>
+    <properties>
+        <poi.version>4.1.1</poi.version>
+        <easypoi.version>4.2.0</easypoi.version>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.github.zuihou</groupId>
@@ -41,10 +46,38 @@
         <dependency>
             <groupId>cn.afterturn</groupId>
             <artifactId>easypoi-annotation</artifactId>
+            <version>${easypoi.version}</version>
         </dependency>
         <dependency>
             <groupId>cn.afterturn</groupId>
             <artifactId>easypoi-base</artifactId>
+            <version>${easypoi.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-web</artifactId>
+            <version>${easypoi.version}</version>
         </dependency>
 
     </dependencies>

+ 6 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/dao/PlanMapper.java

@@ -9,6 +9,7 @@ import com.github.zuihou.business.operationManagementCenter.entity.Plan;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -33,4 +34,9 @@ public interface PlanMapper extends SuperMapper<Plan> {
 
     int updateproduceStatusBegin();
 
+    List<Map<String, String>> getFinishPlanList(Map<String, Object> params);
+
+    Map<String, String> getFinishPlanPartInfo(Map<String, Object> params);
+
+    List<Map<String, String>> getFinishPlanPartProcedures(Map<String, Object> params);
 }

+ 5 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/PlanService.java

@@ -111,4 +111,9 @@ public interface PlanService extends SuperService<Plan> {
       */
      Plan updateNumber(Plan model);
 
+     List<Map<String,String>> getFinishPlanList(Map<String,Object> params);
+
+     Map<String, String> getFinishPlanPartInfo(Map<String, Object> params);
+
+     List<Map<String, String>> getFinishPlanPartProcedures(Map<String, Object> params);
 }

+ 18 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/PlanServiceImpl.java

@@ -356,4 +356,22 @@ public class PlanServiceImpl extends SuperServiceImpl<PlanMapper, Plan> implemen
 
         return model;
     }
+
+    @Override
+    public List<Map<String,String>> getFinishPlanList(Map<String,Object> params){
+        List<Map<String,String>> list = baseMapper.getFinishPlanList(params);
+        return list;
+    }
+
+    @Override
+    public Map<String,String> getFinishPlanPartInfo(Map<String,Object> params){
+        Map<String,String> partInfo = baseMapper.getFinishPlanPartInfo(params);
+        return partInfo;
+    }
+
+    @Override
+    public List<Map<String,String>> getFinishPlanPartProcedures(Map<String,Object> params){
+        List<Map<String,String>> procedures = baseMapper.getFinishPlanPartProcedures(params);
+        return procedures;
+    }
 }

+ 72 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/operationManagementCenter/PlanMapper.xml

@@ -78,7 +78,79 @@
              sum(case when produce_status = '3' then 1 else 0 end) as produceCount -- 暂停的计划
             from imcs_p_plan
         ) c
+    </select>
+
+    <select id="getFinishPlanList" resultType="java.util.Map" >
+        SELECT
+            ipp.id,ippp.bom_id AS bomId,ibb.name,ibb.no,ippp.plan_bom_num as planBomNum,ioop.delivery_time as deliveryTime
+        FROM imcs_p_plan ipp,
+             imcs_p_plan_product ippp,
+             imcs_o_order_product ioop,
+             imcs_b_bom ibb
+        WHERE ipp.id = ippp.plan_id
+        AND ioop.order_id = ipp.order_id
+        AND ioop.bom_id = ippp.bom_id
+        AND ibb.id = ippp.bom_id
+        <if test="orderId != null and orderId != ''">
+            and ioop.order_id = #{orderId}
+        </if>
+    </select>
+
+    <select id="getFinishPlanPartInfo" resultType="java.util.Map">
+        SELECT
+            IFNULL(name, '') AS name,
+            IFNULL(ibb.no, '') AS no,
+            IFNULL(ibb.product_no, '') AS productNo,
+            IFNULL(ibb.batch_no, '') AS batchNo,
+            IFNULL(ibb.meterial_factory, '') AS meterialFactory,
+            IFNULL(ibb.meterial_id, '') AS meterialId,
+            IFNULL(ibb.furnace_batch_no, '') AS furnaceBatchNo,
+            IFNULL(ibb.batch_stard, '') AS batchStard,
+            IFNULL(ibb.meterial_batch_no, '') AS meterialBatchNo,
+            (CASE ibb.key_flag WHEN '1' THEN 'G' ELSE '' END) keyFlag,
+            (CASE ibb.important_flag WHEN '1' THEN 'Z' ELSE '' END) importantFlag
+        FROM imcs_b_bom ibb,
+            imcs_p_plan_product ippp
+        WHERE 1=1
+        AND ibb.id = ippp.bom_id
+        <if test="id != null and id != ''">
+            and ippp.plan_id = #{id}
+        </if>
+        <if test="bomId != null and bomId != ''">
+            and ippp.bom_id = #{bomId}
+        </if>
+    </select>
 
+    <select id="getFinishPlanPartProcedures" resultType="java.util.Map">
+        SELECT
+            itt.procedure_no AS procedureNo,
+            itt.procedure_name AS procedureName,
+            '云箭长沙工厂' AS factoryName,
+            itt.executor_name,
+            ippp.plan_bom_num AS planBomNum,
+            ippp.plan_bom_num AS okNum,
+            0 AS ngNum,
+            '' AS destoryNum,
+            '' AS processNum,
+            '' AS processLabel,
+            '' AS processNo,
+            '' AS processNo,
+            '' AS testUser,
+            '' AS testDate,
+            '' AS receiveUser,
+            '' AS receiveDate,
+            '' AS remark
+        FROM imcs_b_bom ibb,
+            imcs_p_plan_product ippp,
+            imcs_t_task itt
+        WHERE 1 = 1
+        AND ibb.id = ippp.bom_id
+        AND ippp.plan_id = itt.plan_id
+        <if test="id != null and id != ''">
+            and ippp.plan_id = #{id}
+        </if>
+        GROUP BY itt.procedure_id
+        ORDER BY itt.procedure_no
     </select>
 
     <update id="updateByTaskBatchNo">
@@ -86,7 +158,6 @@
       where id in (select plan_id from imcs_t_task where task_batch_no =  #{taskBatchNo})
     </update>
 
-
     <update id="updateproduceStatusBegin">
       UPDATE imcs_p_plan o
             SET o. produce_status = '2'

+ 77 - 9
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/PlanController.java

@@ -1,19 +1,17 @@
 package com.github.zuihou.business.controller.operationManagementCenter;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.zuihou.base.R;
+import com.github.zuihou.base.controller.SuperController;
 import com.github.zuihou.base.request.PageParams;
-import com.github.zuihou.business.operationManagementCenter.entity.Plan;
+import com.github.zuihou.business.operationManagementCenter.dto.PlanPageDTO;
 import com.github.zuihou.business.operationManagementCenter.dto.PlanSaveDTO;
 import com.github.zuihou.business.operationManagementCenter.dto.PlanUpdateDTO;
-import com.github.zuihou.business.operationManagementCenter.dto.PlanPageDTO;
+import com.github.zuihou.business.operationManagementCenter.entity.Plan;
 import com.github.zuihou.business.operationManagementCenter.service.PlanService;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import com.github.zuihou.base.controller.SuperController;
-import com.github.zuihou.base.R;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
@@ -23,14 +21,26 @@ import com.github.zuihou.security.model.SysUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import com.github.zuihou.security.annotation.PreAuth;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 
 /**
  * <p>
@@ -76,6 +86,12 @@ public class PlanController extends SuperController<PlanService, Long, Plan, Pla
         return success(baseService.list());
     }
 
+    @ApiOperation(value = "查询已经完成订单计划", notes = "查询已经完成订单计划")
+    @PostMapping("/getFinishPlanList")
+    public R<List<Map<String,String>>> getFinishPlanList(@RequestBody Map<String,Object> params) {
+        return success(baseService.getFinishPlanList(params));
+    }
+
     @ApiOperation(value = "新增计划", notes = "新增计划")
     @PostMapping("/save")
     public R<Plan> save(@RequestBody Map<String,Object> model) {
@@ -162,4 +178,56 @@ public class PlanController extends SuperController<PlanService, Long, Plan, Pla
         return success(baseService.updateNumber(model));
     }
 
+    @ApiOperation(value = "下载工艺流程卡", notes = "下载工艺流程卡")
+    @PostMapping("/downloadCraftCards")
+    public void downloadCraftCards(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestBody Map<String,Object> params) throws IOException {
+        String planId  = params.get("id").toString();
+        // TODO 根据后续实际情况取真实数据展示
+        Map<String, String> partInfo = baseService.getFinishPlanPartInfo(params);
+        List<Map<String, String>> procedures = baseService.getFinishPlanPartProcedures(params);
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.putAll(partInfo);
+        map.put("dataList", procedures);
+        File temp = File.createTempFile("craftCradsResult", ".xlsx");
+        // TODO 根据后续真实模板地址修改,存放在nginx目录下
+        URL url = new URL("http://127.0.0.1:8760/file/0000/template/craftCradsTemplate.xlsx");
+        ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
+        FileOutputStream fileOutputStream = new FileOutputStream(temp);
+        fileOutputStream.getChannel().transferFrom(readableByteChannel,0,Long.MAX_VALUE);
+        fileOutputStream.close();
+        readableByteChannel.close();
+
+        TemplateExportParams templateExportParams = new TemplateExportParams(temp.getAbsolutePath(),true);
+        Workbook workbook = ExcelExportUtil.exportExcel(templateExportParams, map);
+        FileOutputStream fos = new FileOutputStream(temp.getAbsolutePath());
+
+
+        BufferedInputStream bis = null;
+        OutputStream outputStream = null;
+        try {
+            // 模板填充数据
+            workbook.write(fos);
+            fos.flush();
+            fos.close();
+
+            outputStream = httpServletResponse.getOutputStream();
+            httpServletResponse.setHeader("content-type", "text/csv");
+            httpServletResponse.setContentType("application/octet-stream");
+            httpServletResponse.setHeader("Content-Disposition", "attachment; filename=" + planId + ".xlsx");
+            workbook.write(outputStream);
+        } catch ( IOException e ) {
+            e.printStackTrace();
+        } finally {
+            if (bis != null) {
+                bis.close();
+            }
+            if (outputStream != null) {
+                outputStream.flush();
+                outputStream.close();
+            }
+            // 删除零时文件
+            temp.delete();
+
+        }
+    }
 }