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 22fc103cb..885e8a2ca 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 @@ -254,5 +254,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 000000000..5acc4721d Binary files /dev/null and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx differ 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 000000000..e6ddea9af Binary files /dev/null and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx differ 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