From a2e57e91e7e527abaca932615a77354657223a3f Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Tue, 28 May 2024 18:17:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BA=A7=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 2 + .../admin/order/OrderController.java | 54 ++---- .../admin/order/vo/order/OrderPageReqVO.java | 2 + .../admin/plate/vo/PlateGoodsRespVO.java | 155 ++++++++++++++++++ .../executor/dal/mysql/order/OrderMapper.java | 1 + .../executor/dal/mysql/plate/PlateMapper.java | 2 + .../executor/service/order/OrderService.java | 30 +++- .../service/order/OrderServiceImpl.java | 125 +++++++++++++- .../admin/files/excel/ExcelReadUtil.java | 6 +- .../resources/mapper/plate/PlateMapper.xml | 49 ++++++ .../type/生产单Excel导入错误导出模板.xlsx | Bin 0 -> 24220 bytes .../resources/type/生产单新增Excel模板.xlsx | Bin 0 -> 27784 bytes .../module/system/api/dict/DictDataApi.java | 10 ++ .../system/api/dict/DictDataApiImpl.java | 8 + .../vo/group/ProcessGroupSaveReqVO.java | 1 + 15 files changed, 403 insertions(+), 42 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateGoodsRespVO.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 8d6fa6279..19befd953 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -58,4 +58,6 @@ public interface ErrorCodeConstants { ErrorCode PLATE_DATA_ERROR = new ErrorCode(1_002_029_012, "板材明细获取错误"); ErrorCode FILE_READ_SUCCESS = new ErrorCode(1_002_029_012, "文件读取成功"); ErrorCode FILE_READ_ERR = new ErrorCode(1_002_029_012, "文件读取错误"); + ErrorCode FILE_ADD_ERR = new ErrorCode(1_002_029_012, "文件已经存在是否强制保存"); + ErrorCode FILE_UPLOAD_ERR = new ErrorCode(1_002_029_012, "文件为空"); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 7a39af381..132ff720b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -120,36 +120,9 @@ public class OrderController { @GetMapping("/get-import-template") @Operation(summary = "获得导入生产单模板") - @Parameter(name = "type", description = "文件类型", required = true, example = "0") - public void importTemplate(HttpServletResponse response, @RequestParam("type") Integer type) { - try { - // path是指想要下载的文件的路径 - File file = new File(ResourceUtils.getURL("classpath:").getPath() + "\\files\\生产单新增Excel模板.xlsx"); - log.info(file.getPath()); - // 获取文件名 - String filename = file.getName(); - // 获取文件后缀名 - String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(); - log.info("文件后缀名:" + ext); - - // 将文件写入输入流 - FileInputStream fileInputStream = new FileInputStream(file); - InputStream fis = new BufferedInputStream(fileInputStream); - byte[] buffer = new byte[fis.available()]; - fis.read(buffer); - fis.close(); - - response.reset(); - response.setCharacterEncoding("UTF-8"); - response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); - response.addHeader("Content-Length", "" + file.length()); - OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); - response.setContentType("application/octet-stream"); - outputStream.write(buffer); - outputStream.flush(); - } catch (IOException ex) { - ex.printStackTrace(); - } + @Parameter(name = "value", description = "文件类型", required = true, example = "0") + public void importTemplate(HttpServletResponse response, @RequestParam("value") String value) { + orderService.exportTemplate(response, value); } // 清理生产单 @@ -289,8 +262,8 @@ public class OrderController { // 判断是否读取有误 if (excelReadUtil.isErr() > 1) { // 返回文件 - - excelReadUtil.write(response, (Map) map.get("order"), (List) map.get("plate")); + System.err.println(orderService.getSavePath()+ "生产单Excel导入错误导出模板.xlsx"); + excelReadUtil.write(response, (Map) map.get("order"), (List) map.get("plate"),orderService.getSavePath()+ "\\"+ "生产单Excel导入错误导出模板.xlsx"); throw exception(FILE_READ_ERR); }else { // 获取数据 @@ -316,13 +289,22 @@ public class OrderController { } @GetMapping("/uploadFiles") - @Operation(summary = "导入生产数据文件模板那") + @Operation(summary = "导入生产数据文件模板") @Parameters({ @Parameter(name = "file", description = "文件", required = true), - @Parameter(name = "type", description = "文件类型名称", required = true) + @Parameter(name = "type", description = "是否强制上传", required = false) }) @PreAuthorize("@ss.hasPermission('executor:order:upload')") - public CommonResult> getOrderBody(@RequestParam("orderId") Long orderId) { - return null; + public CommonResult getOrderBody(@RequestPart("file") MultipartFile file, + @RequestParam(value = "type", required = false, defaultValue = "false") Boolean type) { + return success(orderService.importTemplate(file,type)); + } + + @GetMapping("/printing") + @Operation(summary = "打印/导出") + @PreAuthorize("@ss.hasPermission('executor:order:query')") + @Parameter(name = "type", description = "文件类型", required = true, example = "0") + public CommonResult getOrderPrinting(@Valid OrderPageReqVO pageReqVO, @RequestParam("type") String type) { + return success(orderService.getPrintData(pageReqVO,type)); } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java index 03d13eb40..c1729335a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java @@ -74,4 +74,6 @@ public class OrderPageReqVO extends PageParam { private LocalDateTime[] createTime; private Boolean deleted; + + private Long organId; } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateGoodsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateGoodsRespVO.java new file mode 100644 index 000000000..5467fa3ce --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/PlateGoodsRespVO.java @@ -0,0 +1,155 @@ +package com.cf.imes.module.executor.controller.admin.plate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Schema(description = "管理后台 - 板件对应板材信息") +public class PlateGoodsRespVO { + + @Schema(description = "生产单号", example = "11087") + private Long orderId; + + @Schema(description = "板名称", example = "晨丰") + private String name; + + @Schema(description = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成") + private String plateNo; + + @Schema(description = "板类型,0 层板 1 立板 2 背板", example = "1") + private Integer type; + + @Schema(description = "商品 ID", example = "14195") + private String goodsId; + + @Schema(description = "商品名称", example = "西西") + private String goodsName; + + @Schema(description = "商品材质", example = "颗粒板") + private String material; + + @Schema(description = "商品颜色", example = "白色") + private String color; + + @Schema(description = "商品宽度", example = "14195") + private BigDecimal goodsWidth; + + @Schema(description = "商品高度", example = "14195") + private BigDecimal goodsHeight; + + @Schema(description = "商品厚度", example = "14195") + private BigDecimal goodsThickness; + + @Schema(description = "商品价格", example = "14195") + private BigDecimal price; + + @Schema(description = "商品品牌", example = "柏柏") + private String brand; + + @Schema(description = "商品规格", example = "14195*21") + private String spec; + + @Schema(description = "宽度") + private BigDecimal width; + + @Schema(description = "高度") + private BigDecimal height; + + @Schema(description = "厚度") + private BigDecimal thickness; + + @Schema(description = "拆单宽度") + private BigDecimal splitWidth; + + @Schema(description = "拆单高度") + private BigDecimal splitHeight; + + @Schema(description = "拆单厚度") + private BigDecimal splitThickness; + + @Schema(description = "左封边厚度") + private BigDecimal sealLeft; + + @Schema(description = "右封边厚度") + private BigDecimal sealRight; + + @Schema(description = "上封边厚度") + private BigDecimal sealUp; + + @Schema(description = "下封边厚度") + private BigDecimal sealDown; + + @Schema(description = "面积") + private BigDecimal area; + + @Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹") + private Integer texture; + + @Schema(description = "孔面类型,0 正面 1 反面 2 侧面") + private Integer holeFace; + + @Schema(description = "排孔类型,0 正纹 1 反面 2 随意面") + private Integer holeArrange; + + @Schema(description = "异型孔数量", example = "28477") + private Short unregularPointCount; + + @Schema(description = "正面孔数量", example = "20823") + private Short frontHoleCount; + + @Schema(description = "背面孔数量", example = "3441") + private Short backHoleCount; + + @Schema(description = "侧面孔数量", example = "25509") + private Short sideHoleCount; + + @Schema(description = "正面造型量", example = "31547") + private Short frontModelCount; + + @Schema(description = "背面造型量", example = "26725") + private Short backModelCount; + + @Schema(description = "是否门板") + private Boolean isDoor; + + @Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", example = "2") + private Integer openDoorType; + + @Schema(description = "异型偏移 x") + private Double offsetX; + + @Schema(description = "异型偏移 y") + private Double offsetY; + + @Schema(description = "是否孤形对角") + private Boolean isArcAcross; + + @Schema(description = "模块类型 ID", example = "12800") + private Long moduleTypeId; + + @Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", example = "1") + private Integer filterType; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "是否作废") + private Boolean isCancel; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index dcca0f7f8..e44552f7b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -45,6 +45,7 @@ public interface OrderMapper extends BaseMapperX { .eqIfPresent(OrderDO::getSplitter, reqVO.getSplitter()) .eqIfPresent(OrderDO::getRemark, reqVO.getRemark()) .eqIfPresent(OrderDO::getDeleted, reqVO.getDeleted()) + .eqIfPresent(OrderDO::getOrganId, reqVO.getOrganId()) .betweenIfPresent(OrderDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(OrderDO::getId)); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index e6b050289..5c99eb60f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -101,4 +101,6 @@ public interface PlateMapper extends BaseMapperX { List selectPlate(@Param("orderId") Long orderId); List selectPlateListByOrderIds(@Param("orderIds") List orderIds); + + List selectPlateGoodsList(@Param("orderId") Long orderId, @Param("organId") Long organId); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index 92eea2cc6..f43edbda2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -1,7 +1,9 @@ package com.cf.imes.module.executor.service.order; +import javax.servlet.http.HttpServletResponse; import javax.validation.*; +import com.alibaba.fastjson.JSONObject; import com.cf.imes.module.executor.controller.admin.order.vo.order.*; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; @@ -12,6 +14,8 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; +import org.springframework.boot.system.ApplicationHome; +import org.springframework.web.multipart.MultipartFile; import java.util.Collection; import java.util.List; @@ -135,7 +139,31 @@ public interface OrderService { List getGoodsList(Long orderId); /** - * 文件导入 + * 文件数据导入 */ void importExcelData(OrderDO orderDO, List list); + + /** + * 模板文件导入保存 + */ + String importTemplate(MultipartFile file,Boolean type); + + /** + * 生产导入文件模板下载 + */ + void exportTemplate(HttpServletResponse response, String value); + + /** + * 打印/导出数据获取 + */ + String getPrintData(OrderPageReqVO orderPageReqVO, String type); + + default String getSavePath() { + ApplicationHome applicationHome = new ApplicationHome(this.getClass()); + + // 保存目录位置根据项目需求可随意更改 + return applicationHome.getDir().getParentFile() + .getParentFile().getAbsolutePath() + "\\src\\main\\resources\\type"; + } + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 4eef1666c..a94397358 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -1,5 +1,6 @@ package com.cf.imes.module.executor.service.order; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import cn.smallbun.screw.core.util.CollectionUtils; @@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; +import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.executor.controller.admin.order.vo.order.*; @@ -38,14 +40,18 @@ import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataP import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize; import com.cf.imes.module.system.api.application.ApplicationApi; +import com.cf.imes.module.system.api.dict.DictDataApi; import com.cf.imes.module.system.api.user.AdminUserApi; import com.cf.imes.module.system.enums.ErrorCodeConstants; +import org.springframework.boot.system.ApplicationHome; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.util.ResourceUtils; import org.springframework.validation.annotation.Validated; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; @@ -54,6 +60,11 @@ import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; +import java.io.*; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -66,6 +77,7 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; +import org.springframework.web.multipart.MultipartFile; /** * 生产单表 order_{N} Service 实现类 @@ -121,6 +133,9 @@ public class OrderServiceImpl implements OrderService { @Resource private ApiDataProduction apiOrderService; + @Resource + private DictDataApi dictDataApi; + @Resource private IdentifierGenerator identifierGenerator; @@ -132,7 +147,7 @@ public class OrderServiceImpl implements OrderService { private static final int DEFAULT_DAYS_TO_ADD = 30; - private static final int PARTS_PAGE_MAX = 100; + private static final int RANDOM_NUMBER_MAX = 10; @Override public Long createOrder(OrderSaveReqVO createReqVO) { @@ -587,4 +602,112 @@ public class OrderServiceImpl implements OrderService { } + @Override + public String importTemplate(MultipartFile file, Boolean type) { + // 接收文件 + if (file.isEmpty()) { + throw exception(FILE_UPLOAD_ERR); + } + // 获取文件名称信息 + String fileName = file.getOriginalFilename(); + String value = fileName; + String label = fileName; + // 判断存放文件路径中是否有相同名称的文件 + if (!type) { + Path path = Paths.get(getSavePath(), fileName); + if (Files.exists(path)) + throw exception(FILE_ADD_ERR); + } else { + // 获取文件名称信息 + value = fileName.substring(0, fileName.lastIndexOf(".")) + + getRandomNumber(RANDOM_NUMBER_MAX) + + fileName.substring(fileName.lastIndexOf(".")); + fileName = value; + } + + try { + // 新增字典查询 + dictDataApi.addDictData("upload_file_type", label, value); + // 保存文件 + File saveFile = new File(getSavePath() + "\\" + fileName); + file.transferTo(saveFile); + return value; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void exportTemplate(HttpServletResponse response, String value) { + // 根据type获取文件名称 + try { + // path是指想要下载的文件的路径 + File file = new File(getSavePath()+ "\\" + value); + // 获取文件名 + String filename = file.getName(); + // 获取文件后缀名 + String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(); + + // 将文件写入输入流 + FileInputStream fileInputStream = new FileInputStream(file); + InputStream fis = new BufferedInputStream(fileInputStream); + byte[] buffer = new byte[fis.available()]; + fis.read(buffer); + fis.close(); + + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); + response.addHeader("Content-Length", "" + file.length()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + response.setContentType("application/octet-stream"); + outputStream.write(buffer); + outputStream.flush(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + @Override + public String getPrintData(OrderPageReqVO orderPageReqVO, String type) { + orderPageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + PageResult pageResult = orderMapper.selectPage(orderPageReqVO.setOrganId(SecurityFrameworkUtils.getLoginUser().getOrganId())); + List orderDOList = pageResult.getList(); + if (orderDOList == null || orderDOList.size() < 0) { + throw exception(ORDER_NOT_EXISTS); + } + List> list = new ArrayList<>(); + for (OrderDO orderDO : orderDOList) { + list.add(getDataByOrderIdAndType(orderDO, type)); + } + return JSON.toJSONString(list); + } + + // 根据ype 与 orderId获取相关信息 + public Map getDataByOrderIdAndType(OrderDO orderDO, String type) { + Map map = new HashMap<>(); + map.put("order", orderDO); + switch (type) { + case "001":// 板材明细 + System.err.println(orderDO.getId()); + map.put("plateGoods", plateMapper.selectPlateGoodsList(orderDO.getId(),SecurityFrameworkUtils.getLoginUser().getOrganId())); + break; + case "002":// 配件明细 + + break; + default: + // 处理默认情况,可以选择忽略或者做其他处理 + break; + } + return map; + } + + public String getRandomNumber(int length) { + StringBuilder sb = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < length; i++) { + sb.append(random.nextInt(10)); + } + return sb.toString(); + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java index 8177eac7a..9759dc01d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java @@ -134,10 +134,8 @@ public class ExcelReadUtil { // 文件读取 // 写excel public void write(HttpServletResponse response, Map orderMap, - List list) throws IOException { - - // 加载模板 - String filePathErr = ResourceUtils.getURL("classpath:").getPath() + "\\files\\生产单Excel导入错误导出模板.xlsx"; + List list, + String filePathErr) throws IOException { //输入流 // InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates/生产单新增Excel模板.xlsx"); InputStream inputStream = ResourceUtils.getURL(filePathErr).openStream(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 863d8240d..869022d90 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -252,5 +252,54 @@ + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5acc4721d3c7dc0f2952a2c0cc45ff61d17d1d93 GIT binary patch literal 24220 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 literal 0 HcmV?d00001 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e6ddea9af463cfa9be84b1fc76bd30571f9657ac GIT binary patch literal 27784 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 LHDEIK$prBLMif|N literal 0 HcmV?d00001 diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/dict/DictDataApi.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/dict/DictDataApi.java index 73820c717..8a5a7ac29 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/dict/DictDataApi.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/dict/DictDataApi.java @@ -46,4 +46,14 @@ public interface DictDataApi { CommonResult parseDictData(@RequestParam("dictType") String dictType, @RequestParam("label") String label); + @GetMapping(PREFIX + "/add") + @Operation(summary = "新增字典数据") + @Parameters({ + @Parameter(name = "dictType", description = "字典类型", example = "SEX", required = true), + @Parameter(name = "label", description = "字典标签", example = "男", required = true), + @Parameter(name = "value", description = "字典键值", example = "1", required = true) + }) + CommonResult addDictData(@RequestParam("dictType") String dictType, + @RequestParam("label") String label, + @RequestParam("value") String value); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/dict/DictDataApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/dict/DictDataApiImpl.java index ae8892ccf..ba698218d 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/dict/DictDataApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/dict/DictDataApiImpl.java @@ -3,6 +3,7 @@ package com.cf.imes.module.system.api.dict; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO; +import com.cf.imes.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO; import com.cf.imes.module.system.dal.dataobject.dict.DictDataDO; import com.cf.imes.module.system.service.dict.DictDataService; import org.springframework.validation.annotation.Validated; @@ -38,4 +39,11 @@ public class DictDataApiImpl implements DictDataApi { return success(BeanUtils.toBean(dictData, DictDataRespDTO.class)); } + @Override + public CommonResult addDictData(String dictType, String label, String value) { + DictDataSaveReqVO createReqVO = new DictDataSaveReqVO().setDictType(dictType).setLabel(label).setValue(value); + dictDataService.createDictData(createReqVO); + return success(dictDataService.createDictData(createReqVO)); + } + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/process/vo/group/ProcessGroupSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/process/vo/group/ProcessGroupSaveReqVO.java index 5c770d38a..b1bf383dd 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/process/vo/group/ProcessGroupSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/process/vo/group/ProcessGroupSaveReqVO.java @@ -35,6 +35,7 @@ public class ProcessGroupSaveReqVO { @NotEmpty(message = "描述不能为空") private String description; + @Schema(description = "工序集合", requiredMode = Schema.RequiredMode.REQUIRED, example = "{},{}") private List processList; } \ No newline at end of file