diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java index 1daefb7b..2883cca3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/PurchaseclaimRequestMainController.java @@ -3,6 +3,7 @@ package com.win.module.wms.controller.purchaseclaimRequest; import com.win.framework.common.pojo.CommonResult; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; +import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; @@ -12,6 +13,7 @@ import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetai import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; +import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.purchaseclaimRequest.PurchaseclaimRequestDetailService; import com.win.module.wms.service.purchaseclaimRequest.PurchaseclaimRequestMainService; import io.swagger.v3.oas.annotations.Operation; @@ -26,7 +28,9 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -117,7 +121,42 @@ public class PurchaseclaimRequestMainController { } } // 导出 Excel - ExcelUtils.write(response, "采购索赔申请主.xls", "数据", PurchaseclaimRequestDetailExcelVO.class, resultList); + ExcelUtils.write(response, "采购索赔申请主.xlsx", "数据", PurchaseclaimRequestDetailExcelVO.class, resultList); } + @GetMapping("/get-import-template") + @Operation(summary = "获得导入采购索赔信息模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 手动创建导出 demo + List list = new ArrayList<>(); + Map mapDropDown = new HashMap<>(); + String[] status = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.ITEM_STATUS); + mapDropDown.put(4, status); + // 输出 + ExcelUtils.write(response, "采购索赔信息导入模板.xls", "采购索赔信息列表", PurchaseclaimRequestDetailImportVO.class, list,mapDropDown); + } + +// @PostMapping("/import") +// @Operation(summary = "导入采购索赔基本信息") +// @Parameters({ +// @Parameter(name = "file", description = "Excel 文件", required = true), +// @Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"), +// @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") +// }) +// @PreAuthorize("@ss.hasPermission('wms:itembasic:import')") +// public CommonResult> importExcel(HttpServletResponse response, +// @RequestParam("file") MultipartFile file, +// @RequestParam(value = "mode") Integer mode, +// @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { +// List list = ExcelUtils.read(file, ItembasicImportExcelVo.class); +// List errorList = itembasicService.importItembasicList(list, mode, updatePart); +// Map returnMap = new HashMap<>(); +// returnMap.put("errorCount", errorList.size()); +// if(!errorList.isEmpty()) { +// String url = ExcelUtils.writeLocalFile("采购索赔基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); +// returnMap.put("errorFile", url); +// } +// return success(returnMap); +// } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailBaseVO.java index b787b037..a562f5ad 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailBaseVO.java @@ -1,15 +1,12 @@ package com.win.module.wms.controller.purchaseclaimRequest.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -48,7 +45,12 @@ public class PurchaseclaimRequestDetailBaseVO { @Schema(description = "金额") private BigDecimal amount; - @Schema(description = "单据号") + @Schema(description = "主表ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "主表ID不能为空") + private Long masterId; + + @Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据号不能为空") private String number; @Schema(description = "物品代码") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailExcelVO.java index d9a5f073..13a07687 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailExcelVO.java @@ -3,7 +3,11 @@ package com.win.module.wms.controller.purchaseclaimRequest.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.win.framework.excel.core.annotations.DictFormat; import com.win.framework.excel.core.convert.DictConvert; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -15,6 +19,10 @@ import java.time.LocalDateTime; * @author 超级管理员 */ @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) public class PurchaseclaimRequestDetailExcelVO { @ExcelProperty("发货单号") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailImportVO.java new file mode 100644 index 00000000..9fbf2846 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseclaimRequest/vo/PurchaseclaimRequestDetailImportVO.java @@ -0,0 +1,107 @@ +package com.win.module.wms.controller.purchaseclaimRequest.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.DictConvert; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +/** + * 采购索赔申请子 Excel VO + * + * @author 超级管理员 + */ +@Data +public class PurchaseclaimRequestDetailImportVO { + + @ExcelProperty("发货单号") + private String asnNumber; + + @ExcelProperty("要货计划单号") + private String ppNumber; + + @ExcelProperty("供应商代码") + private String supplierCode; + + @ExcelProperty("单据号") + private String number; + + @ExcelProperty("业务类型") + private String businessType; + + @ExcelProperty("申请时间") + private LocalDateTime requestTime; + + @ExcelProperty("截止时间") + private LocalDateTime dueTime; + + @ExcelProperty("部门") + private String departmentCode; + + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat("request_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String status; + + @ExcelProperty("自动提交") + private String autoCommit; + + @ExcelProperty("自动通过") + private String autoAgree; + + @ExcelProperty("自动执行") + private String autoExecute; + + @ExcelProperty("直接生成记录") + private String directCreateRecord; + + @ExcelProperty("批次") + private String batch; + + @ExcelProperty("替代批次") + private String altBatch; + + @ExcelProperty("订单号") + private String poNumber; + + @ExcelProperty("订单行") + private String poLine; + + @ExcelProperty(value = "原因", converter = DictConvert.class) + @DictFormat("purchase_return_reason") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String reason; + + @ExcelProperty("单价") + private BigDecimal singlePrice; + + @ExcelProperty("金额") + private BigDecimal amount; + + @ExcelProperty("物品代码") + private String itemCode; + + @ExcelProperty("物品名称") + private String itemName; + + @ExcelProperty("物品描述1") + private String itemDesc1; + + @ExcelProperty("物品描述2") + private String itemDesc2; + + @ExcelProperty("项目代码") + private String projectCode; + + @ExcelProperty("数量") + private BigDecimal qty; + + @ExcelProperty(value = "计量单位", converter = DictConvert.class) + @DictFormat("uom") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + private String uom; + + @ExcelProperty("备注") + private String remark; + +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestDetailServiceImpl.java index 6325459e..d463f837 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestDetailServiceImpl.java @@ -8,6 +8,7 @@ import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimReques import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestDetailMapper; +import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestMainMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -16,6 +17,7 @@ import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_DETAIL_NOT_EXISTS; +import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASECLAIM_REQUEST_MAIN_NOT_EXISTS; /** * 采购索赔申请子 Service 实现类 @@ -29,10 +31,15 @@ public class PurchaseclaimRequestDetailServiceImpl implements PurchaseclaimReque @Resource private PurchaseclaimRequestDetailMapper purchaseclaimRequestDetailMapper; + @Resource + private PurchaseclaimRequestMainMapper purchaseclaimRequestMainMapper; + @Override public Long createPurchaseclaimRequestDetail(PurchaseclaimRequestDetailCreateReqVO createReqVO) { // 插入 PurchaseclaimRequestDetailDO purchaseclaimRequestDetail = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO); + //校验 + validatePurchaseclaimRequestMainExists(createReqVO.getMasterId()); purchaseclaimRequestDetailMapper.insert(purchaseclaimRequestDetail); // 返回 return purchaseclaimRequestDetail.getId(); @@ -42,6 +49,7 @@ public class PurchaseclaimRequestDetailServiceImpl implements PurchaseclaimReque public void updatePurchaseclaimRequestDetail(PurchaseclaimRequestDetailUpdateReqVO updateReqVO) { // 校验存在 validatePurchaseclaimRequestDetailExists(updateReqVO.getId()); + validatePurchaseclaimRequestMainExists(updateReqVO.getMasterId()); // 更新 PurchaseclaimRequestDetailDO updateObj = PurchaseclaimRequestDetailConvert.INSTANCE.convert(updateReqVO); purchaseclaimRequestDetailMapper.updateById(updateObj); @@ -66,6 +74,12 @@ public class PurchaseclaimRequestDetailServiceImpl implements PurchaseclaimReque } } + private void validatePurchaseclaimRequestMainExists(Long masterId) { + if (purchaseclaimRequestMainMapper.selectById(masterId) == null) { + throw exception(PURCHASECLAIM_REQUEST_MAIN_NOT_EXISTS); + } + } + @Override public PurchaseclaimRequestDetailDO getPurchaseclaimRequestDetail(Long id) { return purchaseclaimRequestDetailMapper.selectById(id);