Parcourir la source

aps-车间作业跟踪导出

sucheng il y a 3 mois
Parent
commit
827cdb2c2a

+ 3 - 0
bs-common/src/main/java/com/rongwei/safecommon/fegin/CXAdminFeginClient.java

@@ -33,4 +33,7 @@ public interface CXAdminFeginClient {
 
     @PostMapping("sys/generalCRUD/generalMsUpdate")
     R generalMsUpdate(@RequestBody MasterSlaveUpdateVo masterSlaveUpdate);
+
+    @PostMapping("/sys/generalCRUD/getListData")
+    R getListData(@RequestBody CriteriaQuery query);
 }

+ 6 - 0
bs-common/src/main/java/com/rongwei/safecommon/fegin/CXAdminFeginClientError.java

@@ -50,5 +50,11 @@ public class CXAdminFeginClientError implements CXAdminFeginClient {
         return R.error();
     }
 
+    @Override
+    public R getListData(CriteriaQuery query) {
+        log.error("查询失败:{}",query);
+        return R.error();
+    }
+
 
 }

+ 5 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java

@@ -5,7 +5,10 @@ import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.rongwei.bsentity.vo.*;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.CriteriaQuery;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 
@@ -50,4 +53,6 @@ public interface ApsProcessOperationProcessEquService extends IService<ApsProces
                          List<ApsProcessOperationProcessEquDo> waitInsertEquList);
 
     List<String> updateDetails2(JobDetailsVo jobDetailsVo);
+
+    void workShopExport(CriteriaQuery query, HttpServletResponse response) throws IOException;
 }

+ 58 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -5,20 +5,31 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Maps;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bscommon.sys.utils.ApsUtils;
 import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.*;
+import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.CriteriaBuilder;
+import com.rongwei.rwcommon.vo.CriteriaQuery;
+import com.rongwei.safecommon.fegin.CXAdminFeginClient;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
 import com.rongwei.wfserver.wfcommon.sys.service.impl.ProcessServiceImpl;
@@ -35,7 +46,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.DefaultTransactionDefinition;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -100,6 +114,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     private PlatformTransactionManager transactionManager;
     @Autowired
     private ApsRollerTypeService apsRollerTypeService;
+    @Autowired
+    private CXAdminFeginClient cxAdminFeginClient;
 
 //    /**
 //     * 更新工序的待加工批次号信息
@@ -2579,6 +2595,48 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     }
 
 
+    @Override
+    public void workShopExport(CriteriaQuery query, HttpServletResponse response) throws IOException {
+        //调用平台接口查询结果
+        query.setCurrent(null);
+        query.setSize(null);
+        R listData = cxAdminFeginClient.getListData(query);
+        JSONObject jsonObject = JSONObject.parseObject(listData.getData().toString());
+        JSONArray records = jsonObject.getJSONArray("records");
+        //返回指定格式的数据
+        List<WorkShopExportVo> res = new LinkedList<>();
+        // 转换为全小写key的map
+        for (Object vo : records) {
+            JSONObject record = JSONObject.parseObject(vo.toString());
+            JSONObject convertKeysToLowercase = convertKeysToLowercase(record);
+            WorkShopExportVo workShopExportVo = BeanUtil.toBean(convertKeysToLowercase, WorkShopExportVo.class);
+            res.add(workShopExportVo);
+        }
+        // 设置响应头
+        String fileName = "车间作业跟踪导出数据_" + System.currentTimeMillis() + ".xlsx";
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+
+        // 写入Excel
+        EasyExcel.write(response.getOutputStream(), WorkShopExportVo.class)
+                .sheet("车间作业跟踪")
+                .doWrite(res);
+    }
+
+    public static JSONObject convertKeysToLowercase(JSONObject original) {
+        JSONObject result = new JSONObject();
+        for (String key : original.keySet()) {
+            Object value = original.get(key);
+            // 递归处理嵌套的JSONObject
+            if (value instanceof JSONObject) {
+                value = convertKeysToLowercase((JSONObject) value);
+            }
+            result.put(key.toLowerCase(), value);
+        }
+        return result;
+    }
+
 }
 
 

+ 5 - 0
cx-aps/cx-aps-entity/pom.xml

@@ -40,5 +40,10 @@
             <artifactId>wf-entity</artifactId>
             <version>1.1-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.3.2</version>
+        </dependency>
     </dependencies>
 </project>

+ 103 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/WorkShopExportVo.java

@@ -0,0 +1,103 @@
+package com.rongwei.bsentity.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2025/4/18
+ */
+@Data
+public class WorkShopExportVo {
+    @ExcelProperty("加工车间")
+    private String processworkshop;
+    @ExcelProperty("加工设备编号")
+    private String processdevicecode;
+    @ExcelProperty("加工设备")
+    private String processdevice;
+    @ExcelProperty("计划开工时间")
+    private String planstartdate;
+    @ExcelProperty("计划完工时间")
+    private String planenddate;
+    @ExcelProperty("输入物料")
+    private String planinput;
+    @ExcelProperty("输出物料")
+    private String planoutput;
+    @ExcelProperty("计划加工卷数")
+    private String planprocessrall;
+    @ExcelProperty("批次号")
+    private String showbatchnumber;
+    @ExcelProperty("客户名称")
+    private String customname;
+    @ExcelProperty("客户订单号")
+    private String customorderno;
+    @ExcelProperty("成品规格")
+    private String productspec;
+    @ExcelProperty("辊类型")
+    private String rollertype;
+    @ExcelProperty("最小等待时间")
+    private String minflowwaitmin;
+    @ExcelProperty("最大等待时间")
+    private String maxflowwaitmin;
+    @ExcelProperty("前道加工设备")
+    private String previousprocessdevice;
+    @ExcelProperty("前道完工时间")
+    private String previousactualfinishdate;
+    @ExcelProperty("后道加工设备")
+    private String nextprocessdevice;
+    @ExcelProperty("冲突")
+    private String conflictdes;
+    @ExcelProperty("订单号")
+    private String orderno;
+    @ExcelProperty("坯料计划编号")
+    private String blanknumber;
+    @ExcelProperty("承诺交货日期-起")
+    private String promisedatestart;
+    @ExcelProperty("承诺交货日期-止")
+    private String promisedateend;
+    @ExcelProperty("订单产品")
+    private String outputorderproduct;
+    @ExcelProperty("工序")
+    private String process;
+    @ExcelProperty("工序显示名")
+    private String processname;
+    @ExcelProperty("已开工卷数")
+    private String startingroll;
+    @ExcelProperty("已报工卷数")
+    private String reportroll;
+    @ExcelProperty("已检验卷数")
+    private String checkoutroll;
+    @ExcelProperty("输入不合格卷数")
+    private String inputunqualifiednum;
+    @ExcelProperty("输入已取消卷数")
+    private String inputunqualifiedroll;
+    @ExcelProperty("已借调卷数")
+    private String secondroll;
+    @ExcelProperty("已取消卷数")
+    private String cancelrollno;
+    @ExcelProperty("已取消卷数合计")
+    private String cancelroll;
+    @ExcelProperty("剩余待开工卷数")
+    private String leavewaitworkroll;
+    @ExcelProperty("剩余待报工卷数")
+    private String leavewaitjobroll;
+    @ExcelProperty("作业状态")
+    private String workstatus;
+    @ExcelProperty("实际开工时间")
+    private String actualstartdate;
+    @ExcelProperty("实际完工时间")
+    private String actualfinishdate;
+    @ExcelProperty("坯料生产状态")
+    private String productstatus;
+    @ExcelProperty("是否锁定")
+    private String lockmarkdetail;
+    @ExcelProperty("修改日期")
+    private String modifydate;
+    @ExcelProperty("修改人")
+    private String modifyusername;
+    @ExcelProperty("明细ID")
+    private String id;
+    @ExcelProperty("加工时长(分钟,计划完工时间-计划开工时间)")
+    private String time;
+
+}

+ 12 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationProcessEquController.java

@@ -5,6 +5,7 @@ import com.rongwei.bscommon.sys.service.ApsProcessOperationProcessEquService;
 import com.rongwei.bscommon.sys.service.GanttService;
 import com.rongwei.bsentity.vo.*;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.CriteriaQuery;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -149,5 +152,14 @@ public class ApsProcessOperationProcessEquController {
         log.info("车间作业跟踪锁定");
         return apsProcessOperationProcessEquService.workshopLocked(orderLockVo);
     }
+
+    /**
+     * 车间作业跟踪,导出
+     */
+    @PostMapping("/workShopExport")
+    public void workShopExport(@RequestBody CriteriaQuery query, HttpServletResponse response) throws IOException {
+        log.info("车间作业跟踪,导出");
+        apsProcessOperationProcessEquService.workShopExport(query,response);
+    }
 }