diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/k3cloud/constants/fileds/K3ProdField.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/k3cloud/constants/fileds/K3ProdField.java index b0ab35f..5ec32af 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/k3cloud/constants/fileds/K3ProdField.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/k3cloud/constants/fileds/K3ProdField.java @@ -15,7 +15,8 @@ public class K3ProdField { public static final String F_IS_REWORK = "FIsRework"; // 是否返工 public static final String F_MATERIAL_ID = "FMaterialId"; // 物料ID public static final String FMTONO = "FMTONO"; // 计划跟踪号 - public static final String FAUXPROPID = "FAuxPropId"; // 辅助属性 + public static final String FAUXPROPID = "FAuxPropId"; // 辅助属性ID + public static final String FAUXPROP = "FAuxPropId.FF100002.FNumber"; // 辅助属性 public static final String F_ROW_ID = "FRowId"; // 明细.行标识 public static final String F_MEMO_ITEM = "FMemoItem"; // 明细.备注 public static final String F_CONVEY_DATE = "FConveyDate"; // 明细.下达日期 diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 0637fea..0998f8c 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -305,6 +305,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils } public static LocalDate toLocalDate(Date date) { + if (date == null) { + return null; + } return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); } diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index 6c7b73a..0d4b8d4 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -254,6 +254,7 @@ public class ExcelUtil } catch (Exception e) { + e.printStackTrace(); log.error("导入Excel异常{}", e.getMessage()); throw new UtilException(e.getMessage()); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 02efbf1..1884c54 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -557,7 +557,7 @@ public class SysUserServiceImpl implements ISysUserService ServiceUtil.assertion(operator == null, "操作人不存在"); // 新增一个日志 - LogImportVO importLog = logImportService.addDefaultLog(LogImportType.IMPORT, LogImportBizType.PRICE, operator); + LogImportVO importLog = logImportService.addDefaultLog(LogImportType.IMPORT, LogImportBizType.USER, operator); ServiceUtil.assertion(importLog == null, "创建导入日志失败"); // 获取Security上下文 diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserImportContentVO.java b/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserImportContentVO.java new file mode 100644 index 0000000..a044895 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserImportContentVO.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.user.domain; + +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.constant.DictType; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.yh.logImportDetail.domain.interfaces.ImportContent; +import lombok.Data; +import org.apache.poi.ss.usermodel.IndexedColors; + +/** + * @author wjh + * 2025/3/11 + */ +@Data +public class UserImportContentVO extends SysUser implements ImportContent { + + @Excel( + name = "导入结果", + dictType = DictType.LOG_IMPORT_DETAIL_TYPE, + comboReadDict = true, + backgroundColor = IndexedColors.YELLOW, + headerBackgroundColor = IndexedColors.YELLOW, + color = IndexedColors.RED, + headerColor = IndexedColors.RED, + sort = 0 + ) + private String importResult; + + @Excel( + name = "导入信息", + width = 30, + backgroundColor = IndexedColors.YELLOW, + headerBackgroundColor = IndexedColors.YELLOW, + color = IndexedColors.RED, + headerColor = IndexedColors.RED, + sort = 1 + ) + private String importMessage; +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/logImport/domain/enums/LogImportBizType.java b/ruoyi-service/src/main/java/com/ruoyi/yh/logImport/domain/enums/LogImportBizType.java index 2634b94..0aaaf0a 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/logImport/domain/enums/LogImportBizType.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/logImport/domain/enums/LogImportBizType.java @@ -1,5 +1,6 @@ package com.ruoyi.yh.logImport.domain.enums; +import com.ruoyi.system.user.domain.UserImportContentVO; import com.ruoyi.yh.logImportDetail.domain.interfaces.ImportContent; import com.ruoyi.yh.material.domain.vo.MaterialImportContentVO; import com.ruoyi.yh.price.domain.vo.PriceImportContentVO; @@ -20,7 +21,9 @@ public enum LogImportBizType { PRICE("1", "单价", PriceImportContentVO.class), PROD_ORDER("2", "生产订单", ProdOrderImportContentVO.class), MATERIAL("3", "物料", MaterialImportContentVO.class), - UNIT("4", "单位", UnitImportContentVO.class); + UNIT("4", "单位", UnitImportContentVO.class), + USER("5", "用户", UserImportContentVO.class); + private final String type; private final String msg; diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrder.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrder.java index b46c352..c959ff3 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrder.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrder.java @@ -1,16 +1,17 @@ package com.ruoyi.yh.prodOrder.domain; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.constant.DictType; import com.ruoyi.common.core.domain.BaseEntity; + import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - /** * 生产订单对象 bst_prod_order * @@ -147,6 +148,9 @@ public class ProdOrder extends BaseEntity @ApiModelProperty("计划跟踪号") private String erpMtoNo; - @ApiModelProperty("ERP辅助属性") + @ApiModelProperty("ERP辅助属性ID") private String fauxPropId; + + @ApiModelProperty("ERP辅助属性") + private String fauxProp; } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml index c3a1874..50c1dd3 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml @@ -47,6 +47,7 @@ bpo.base_unit_name, bpo.erp_mto_no, bpo.faux_prop_id, + bpo.faux_prop, sd.dept_name as work_shop_name from bst_prod_order bpo left join sys_dept sd on sd.dept_id = bpo.dept_id @@ -71,7 +72,8 @@ and bpo.erp_material_id = #{query.erpMaterialId} and bpo.erp_base_unit_id = #{query.erpBaseUnitId} and bpo.erp_mto_no = #{query.erpMtoNo} - and bpo.faux_prop_id like concat('%', #{query.fauxPropId}, '%') + and bpo.faux_prop_id = #{query.fauxPropId} + and bpo.faux_prop like concat('%', #{query.fauxProp}, '%') and bpo.material_number like concat('%',#{query.materialNumber},'%') @@ -194,6 +196,7 @@ base_unit_name, erp_mto_no, faux_prop_id, + faux_prop, #{erpId}, @@ -232,6 +235,7 @@ #{baseUnitName}, #{erpMtoNo}, #{fauxPropId}, + #{fauxProp}, @@ -286,6 +290,7 @@ base_unit_name = #{data.baseUnitName}, erp_mto_no = #{data.erpMtoNo}, faux_prop_id = #{data.fauxPropId}, + faux_prop = #{data.fauxProp}, diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderConverterImpl.java index d35b852..4469fea 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderConverterImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderConverterImpl.java @@ -144,6 +144,9 @@ public class ProdOrderConverterImpl implements ProdOrderConverter { case K3ProdField.FAUXPROPID: po.setFauxPropId(row.getString(i)); break; + case K3ProdField.FAUXPROP: + po.setFauxProp(row.getString(i)); + break; default: break; } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java index 06c67d9..0732d3a 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java @@ -185,7 +185,8 @@ public class ProdOrderServiceImpl implements ProdOrderService K3ProdField.F_NO_STOCK_IN_QTY, K3ProdField.F_BASE_NO_STOCK_IN_QTY, K3ProdField.FMTONO, - K3ProdField.FAUXPROPID + K3ProdField.FAUXPROPID, + K3ProdField.FAUXPROP ); int startRow = 0; int limit = 10000; diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/domain/ReportOrderProdVO.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/domain/ReportOrderProdVO.java index 76251ed..168f6aa 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/domain/ReportOrderProdVO.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/domain/ReportOrderProdVO.java @@ -1,13 +1,14 @@ package com.ruoyi.yh.reportOrderProd.domain; -import com.ruoyi.common.annotation.Excel; -import com.ruoyi.common.constant.DictType; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - import java.math.BigDecimal; import java.time.LocalDate; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.constant.DictType; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + /** * @author wjh * 2024/11/19 @@ -57,6 +58,9 @@ public class ReportOrderProdVO extends ReportOrderProd { @ApiModelProperty("订单基础单位名称") private String baseUnitName; + @ApiModelProperty("订单辅助属性") + private String orderFauxProp; + @ApiModelProperty("订单基础未入库数量") private BigDecimal orderErpBaseNoStockInQty; diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/mapper/ReportOrderProdMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/mapper/ReportOrderProdMapper.xml index 8366ebb..2194d23 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/mapper/ReportOrderProdMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportOrderProd/mapper/ReportOrderProdMapper.xml @@ -32,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bpo.erp_status as order_erp_status, bpo.material_number as order_material_number, bpo.erp_mto_no as order_erp_mto_no, + bpo.faux_prop as order_faux_prop, bu.erp_name as unit_name, bu_b.erp_name as base_unit_name, br.report_date as report_date, diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportController.java index f833a44..8889ada 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportController.java @@ -1,5 +1,21 @@ package com.ruoyi.web.yh; +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.LogTitle; import com.ruoyi.common.core.controller.BaseController; @@ -12,13 +28,6 @@ import com.ruoyi.yh.logImport.domain.LogImportQuery; import com.ruoyi.yh.logImport.domain.LogImportVO; import com.ruoyi.yh.logImport.service.LogImportAssembler; import com.ruoyi.yh.logImport.service.LogImportService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.Collections; -import java.util.List; /** * 导入日志Controller @@ -48,7 +57,6 @@ public class LogImportController extends BaseController startPage(); startOrderBy(); List list = logImportService.selectLogImportList(query); - logImportAssembler.assembleStatistics(list); return getDataTable(list); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportDetailController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportDetailController.java index 171d462..827b94b 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportDetailController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/LogImportDetailController.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.constant.LogTitle; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.collection.CollectionUtils; import com.ruoyi.yh.logImport.domain.enums.LogImportBizType; import com.ruoyi.yh.logImportDetail.domain.interfaces.ImportContent; @@ -70,21 +71,23 @@ public class LogImportDetailController extends BaseController List list = logImportDetailService.selectLogImportDetailList(query); List contentList = new ArrayList<>(); - if (CollectionUtils.isNotEmptyElement(list)) { - // 默认以第一个查到的业务类型作为导出模板 - String bizType = list.stream().map(LogImportDetailVO::getLogBizType).filter(Objects::nonNull).findFirst().orElse(null); - LogImportBizType logImportBizType = LogImportBizType.parse(bizType); - if (logImportBizType != null && logImportBizType.getContentClazz() != null) { - for (LogImportDetailVO vo : list) { - ImportContent content = JSON.parseObject(vo.getContent(), logImportBizType.getContentClazz()); - content.setImportMessage(vo.getMessage()); - content.setImportResult(vo.getType()); - contentList.add(content); - } + if (CollectionUtils.isEmptyElement(list)) { + throw new ServiceException("暂无可导出的数据"); + } + + // 默认以第一个查到的业务类型作为导出模板 + String bizType = list.stream().map(LogImportDetailVO::getLogBizType).filter(Objects::nonNull).findFirst().orElse(null); + LogImportBizType logImportBizType = LogImportBizType.parse(bizType); + if (logImportBizType != null && logImportBizType.getContentClazz() != null) { + for (LogImportDetailVO vo : list) { + ImportContent content = JSON.parseObject(vo.getContent(), logImportBizType.getContentClazz()); + content.setImportMessage(vo.getMessage()); + content.setImportResult(vo.getType()); + contentList.add(content); } } - ExcelUtil util = new ExcelUtil<>(PriceImportContentVO.class); + ExcelUtil util = new ExcelUtil<>(logImportBizType.getContentClazz()); util.exportExcel(response, contentList, "导入日志明细数据"); }