From 1b602ba053af06651d5c8f50146866d98f82934c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 18 三月 2025 11:12:29 +0800 Subject: [PATCH] #修改 1.库位size字段,修改为长,宽, 高(完成 2.货架批量处理(完成 3.库位初始化功能(完成 4.筛选导出(完成 5.库位可绑定多种类型(中,高,低),可使用类型批量修改库位信息(完成 6.库位信息添加一个使用状态 (出库预约,入库预约,在库,空库,禁用, 空板)(完成 7.物料模板导出添加扩展字段 --- rsf-server/pom.xml | 11 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocModifyParams.java | 27 ++ rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java | 48 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java | 23 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java | 7 pom.xml | 4 rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java | 167 ++++++++++++---- rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java | 48 +++- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java | 83 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java | 52 +++++ rsf-server/src/main/java/com/vincent/rsf/server/system/constant/CodeRes.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java | 27 -- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocType.java | 25 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java | 46 ++++ rsf-server/src/main/resources/application-dev.yml | 2 19 files changed, 479 insertions(+), 112 deletions(-) diff --git a/pom.xml b/pom.xml index 2a6e0c0..4f8f968 100644 --- a/pom.xml +++ b/pom.xml @@ -8,12 +8,12 @@ <version>1.0.0</version> <name>rsf</name> <packaging>pom</packaging> - + <!-- lookup parent from repository --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</version> - <relativePath/> <!-- lookup parent from repository --> + <relativePath/> </parent> <modules> diff --git a/rsf-server/pom.xml b/rsf-server/pom.xml index 5dd42bf..1d061c1 100644 --- a/rsf-server/pom.xml +++ b/rsf-server/pom.xml @@ -145,12 +145,11 @@ <artifactId>easypoi-annotation</artifactId> <version>4.2.0</version> </dependency> - - <!-- <dependency>--> -<!-- <groupId>com.alibaba</groupId>--> -<!-- <artifactId>easyexcel</artifactId>--> -<!-- <version>2.2.6</version>--> -<!-- </dependency>--> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + <version>2.2.6</version> + </dependency> <!-- <dependency>--> <!-- <groupId>cn.afterturn</groupId>--> <!-- <artifactId>easypoi-base</artifactId>--> diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java index 146149b..aefafe3 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java @@ -2,28 +2,24 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ImportParams; -import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult; -import cn.afterturn.easypoi.handler.inter.IExcelDataHandler; -import com.google.common.collect.Lists; -import com.vincent.rsf.common.domain.BeanValidators; +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.Cools; -import com.vincent.rsf.server.common.handler.AggregationDataHandler; -import com.vincent.rsf.server.common.handler.ExcelDictHandlerImpl; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.entity.Matnr; +import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; +import com.vincent.rsf.server.system.entity.Fields; +import com.vincent.rsf.server.system.service.FieldsService; import io.swagger.annotations.ApiModelProperty; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import javax.validation.ConstraintViolationException; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; @@ -43,11 +39,12 @@ try { response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("export", "UTF-8")); workbook.write(response.getOutputStream()); - } catch (IOException ignore) {} + } catch (IOException ignore) { + } } public static <T> Workbook create(List<T> list, Class<T> clz) { - return create(list, clz, false); + return create(list, clz, false); } public static <T> Workbook create(List<T> list, Class<T> clz, boolean flagTemplate) { @@ -57,6 +54,12 @@ Row header = sheet.createRow(0); Field[] fields = Cools.getAllFields(clz); int headerIdx = 0; + FieldsService itemService = SpringUtils.getBean(FieldsService.class); + List<Fields> sysFields = itemService.list(new LambdaQueryWrapper<Fields>() + .eq(Fields::getStatus, 1) + .eq(Fields::getFlagEnable, 1)); + + for (Field field : fields) { if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers()) @@ -65,9 +68,7 @@ } String memo = "Undefined"; if (flagTemplate) { - if (field.isAnnotationPresent(ExcelComment.class)) { - memo = field.getAnnotation(ExcelComment.class).value(); - } + memo = field.getName(); } else { if (field.isAnnotationPresent(Excel.class)) { memo = field.getAnnotation(Excel.class).name(); @@ -79,39 +80,53 @@ header.createCell(headerIdx).setCellValue(memo); headerIdx++; } - - int rowIndex = 1; - for (T t : list) { - Row row = sheet.createRow(rowIndex++); - - int cellIndex = 0; - for (Field field : fields) { - if (Modifier.isFinal(field.getModifiers()) - || Modifier.isStatic(field.getModifiers()) - || Modifier.isTransient(field.getModifiers())) { - continue; - } - - // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃� - field.setAccessible(true); - Object value = null; - try { - value = field.get(t); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - if (value != null) { - if (value instanceof Date) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - row.createCell(cellIndex).setCellValue(sdf.format((Date) value)); + if (clz.equals(MatnrsTemplate.class)) { + //娣诲姞鎵╁睍瀛楁鍒悕 + if (!sysFields.isEmpty()) { + for (Fields field : sysFields) { + if (flagTemplate) { + header.createCell(headerIdx).setCellValue(field.getFields()); } else { - row.createCell(cellIndex).setCellValue(value.toString()); + header.createCell(headerIdx).setCellValue(field.getFieldsAlise()); } + headerIdx++; } - cellIndex++; } } + int rowIndex = 1; + if (!Objects.isNull(list)) { + for (T t : list) { + Row row = sheet.createRow(rowIndex++); + + int cellIndex = 0; + for (Field field : fields) { + if (Modifier.isFinal(field.getModifiers()) + || Modifier.isStatic(field.getModifiers()) + || Modifier.isTransient(field.getModifiers())) { + continue; + } + + // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃� + field.setAccessible(true); + Object value = null; + try { + value = field.get(t); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + if (value != null) { + if (value instanceof Date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + row.createCell(cellIndex).setCellValue(sdf.format((Date) value)); + } else { + row.createCell(cellIndex).setCellValue(value.toString()); + } + } + cellIndex++; + } + } + } for (int i = 0; i <= fields.length; i++) { sheet.autoSizeColumn(i); } @@ -122,6 +137,7 @@ /** * 娣诲姞瀵煎叆excel閰嶇疆鍙傛暟 * 娉細榛樿閰嶇疆鍙弧瓒冲綋鍓嶉渶姹� + * * @return */ public static ImportParams getDefaultImportParams() { @@ -133,7 +149,68 @@ } /** + * @author Ryan + * @description Excel瀵煎嚭Map鏍煎紡琛ㄦ牸 + * @param + * @return + * @time 2025/3/18 09:30 + */ + public static void exportForMap(HttpServletResponse response, Class cls, String fileName, List<List<Object>> data) { + try { + response.setContentType("application/octet-stream; charset=utf-8"); + response.setCharacterEncoding("utf-8"); + String name = URLEncoder.encode(fileName, "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + name + ".xlsx"); + EasyExcel.write(response.getOutputStream()).head(getHeader(cls)).sheet().doWrite(null); + } catch (IOException exception) { + exception.printStackTrace(); + } + } + + /** + * @author Ryan + * @description excel瀵煎嚭map妯″紡 + * @param Class<T> 妯℃澘绫诲瀷 + * @return List<List<String>> 琛ㄥご淇℃伅 + * @time 2025/3/18 09:26 + */ + public static List<List<String>> getHeader(Class<T> t) { + List<List<String>> headList = new ArrayList<List<String>>(); + if (t.getSuperclass().isInstance(MatnrsTemplate.class)) { + Field[] allFields = Cools.getAllFields(t); + if (Objects.isNull(allFields) || allFields.length < 1) { + throw new CoolException("妯℃澘鍒椾笉鑳戒负绌猴紒锛�"); + } + for (Field field : allFields) { + List<String> list = new ArrayList<String>(); + String fieldName = ""; + if (field.isAnnotationPresent(Excel.class)){ + fieldName = field.getAnnotation(Excel.class).name(); + } + + list.add(field.getName()); + headList.add(list); + } + + FieldsService itemService = SpringUtils.getBean(FieldsService.class); + List<Fields> sysFields = itemService.list(new LambdaQueryWrapper<Fields>() + .eq(Fields::getStatus, 1) + .eq(Fields::getFlagEnable, 1)); + //娣诲姞鎵╁睍瀛楁鍒悕 + if (!sysFields.isEmpty()) { + sysFields.forEach(fields1 -> { + List<String> list = new ArrayList<String>(); + list.add(fields1.getFieldsAlise()); + headList.add(list); + }); + } + } + return headList; + } + + /** * 鏍规嵁 {@code tClass} 鐩稿叧鎴愬憳鍙橀噺鐨� {@link ExcelComment#example()} 瀛楁鍒涘缓妯℃嫙鏁版嵁锛屾殏涓嶆敮鎸� 澶嶆潅绫诲瀷 + * * @param tClass * @return */ diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java index a8ba725..83cadf6 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java @@ -4,22 +4,31 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.controller.params.LocMastInitParam; +import com.vincent.rsf.server.manager.controller.params.LocModifyParams; import com.vincent.rsf.server.manager.entity.Loc; import com.vincent.rsf.server.manager.service.LocService; import com.vincent.rsf.server.system.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; 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 javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.*; +@Api(tags = "搴撲綅淇℃伅") @RestController public class LocController extends BaseController { @@ -92,18 +101,49 @@ List<KeyValVo> vos = new ArrayList<>(); LambdaQueryWrapper<Loc> wrapper = new LambdaQueryWrapper<>(); if (!Cools.isEmpty(condition)) { - wrapper.like(Loc::getName, condition); + wrapper.like(Loc::getCode, condition); } locService.page(new Page<>(1, 30), wrapper).getRecords().forEach( - item -> vos.add(new KeyValVo(item.getId(), item.getName())) + item -> vos.add(new KeyValVo(item.getId(), item.getCode())) ); return R.ok().add(vos); } @PreAuthorize("hasAuthority('manager:loc:list')") + @ApiOperation("搴撲綅瀵煎嚭") @PostMapping("/loc/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { - ExcelUtil.build(ExcelUtil.create(locService.list(), Loc.class), response); + List<Loc> locs = new ArrayList<>(); + if (Objects.isNull(map.get("ids"))) { + locs = locService.list(); + } else { + locs = locService.list(new LambdaQueryWrapper<Loc>().in(Loc::getId , map.get("ids")).eq(Loc::getStatus, 1)); + } + ExcelUtil.build(ExcelUtil.create(locs, Loc.class), response); + } + + @PreAuthorize("hasAuthority('manager:loc:update')") + @ApiOperation("搴撲綅鎵归噺淇敼") + @PostMapping("/loc/modify") + public R batchUpdate(@RequestBody LocModifyParams locs) { + if (Objects.isNull(locs)) { + throw new CoolException("鍙備负涓嶈兘涓虹┖锛侊紒"); + } + return locService.modifyLocs(locs); + } + + + @PreAuthorize("hasAuthority('manager:loc:update')") + @ApiOperation("搴撲綅鍒濆鍖�") + @PostMapping("/loc/init") + public R initLocInfo(@Valid @RequestBody LocMastInitParam param) { + if (Objects.isNull(param)) { + throw new CoolException("鍒濆鍖栦俊鎭笉鑳戒负绌猴紒锛�"); + } + if (Objects.isNull(param.getAreaId())) { + throw new CoolException("搴撳尯ID涓嶈兘涓虹┖锛侊紒"); + } + return locService.initLocs(param); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java index 29842a3..3dda955 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java @@ -12,6 +12,7 @@ import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.Matnr; +import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; import com.vincent.rsf.server.manager.service.MatnrService; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; @@ -24,6 +25,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.*; @RestController @@ -109,7 +112,6 @@ return R.ok().add(vos); } - @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) @PreAuthorize("hasAuthority('manager:matnr:list')") @ApiOperation(value = "鑾峰彇鍒嗙被鐗╂枡鏄庣粏鍒楄〃") @PostMapping("/matnr/group") @@ -129,12 +131,27 @@ } @PreAuthorize("hasAuthority('manager:matnr:list')") + @ApiOperation("瀵煎嚭鐗╂枡淇℃伅") @PostMapping("/matnr/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { - ExcelUtil.build(ExcelUtil.create(matnrService.list(), Matnr.class), response); + List<Matnr> matnrs = new ArrayList<>(); + if (!Objects.isNull(map.get("ids"))) { + matnrs = matnrService.list(new LambdaQueryWrapper<Matnr>().in(Matnr::getId, map.get("ids")).eq(Matnr::getStatus, 1)); + } else { + matnrs = matnrService.list(new LambdaQueryWrapper<Matnr>().last("limit 1")); + } + ExcelUtil.build(ExcelUtil.create(null, MatnrsTemplate.class, true), response); } - @PreAuthorize("hasAuthority('manager:matnr:save')") + @PreAuthorize("hasAuthority('manager:matnr:list')") + @ApiOperation("涓嬭浇鐗╂枡妯℃澘") + @PostMapping("/matnr/template/download") + public void download(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(null, MatnrsTemplate.class, true), response); + } + + + @PreAuthorize("hasAuthority('manager:matnr:update')") @ApiOperation(value = "excel琛ㄦ牸瀵煎叆鐗╂枡淇℃伅") @PostMapping("/matnr/import") public R listImport(MultipartFile file) throws Exception { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java new file mode 100644 index 0000000..4fe8167 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java @@ -0,0 +1,52 @@ +package com.vincent.rsf.server.manager.controller.params; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +/** + * Created by vincent on 2020/6/13 + */ +@Data +@Accessors(chain = true) +public class LocMastInitParam implements Serializable { + + @ApiModelProperty("搴撳尯ID") + private Long areaId; + + @ApiModelProperty("璧峰鎺�") + @NotEmpty(message = "璧峰鎺掍笉鑳戒负绌猴紒锛�") + private Integer startRow; + + @ApiModelProperty("缁堟鎺�") + @NotEmpty(message = "缁堟鎺掍笉鑳戒负绌猴紒锛�") + private Integer endRow; + + @ApiModelProperty("璧峰鍒�") + @NotEmpty(message = "璧峰鍒椾笉鑳戒负绌猴紒锛�") + private Integer startBay; + + @ApiModelProperty("缁堟鍒�") + @NotEmpty(message = "缁堟鍒椾笉鑳戒负绌猴紒锛�") + private Integer endBay; + + @ApiModelProperty("璧峰灞�") + @NotEmpty(message = "璧峰灞備笉鑳戒负绌猴紒锛�") + private Integer startLev; + + @ApiModelProperty("缁堟灞�") + @NotEmpty(message = "缁堟灞備笉鑳戒负绌猴紒锛�") + private Integer endLev; + + @ApiModelProperty("搴撲綅绫诲瀷") + @NotBlank(message = "搴撲綅绫诲瀷") + private String type; + + @ApiModelProperty("瀹界獎绫诲瀷") + private String locType; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocModifyParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocModifyParams.java new file mode 100644 index 0000000..593bb16 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocModifyParams.java @@ -0,0 +1,27 @@ +package com.vincent.rsf.server.manager.controller.params; + +import com.vincent.rsf.server.manager.entity.Loc; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Ryan + * @version 1.0 + * @title LocModifyParams + * @description + * @create 2025/3/17 15:35 + */ +@Data +@ApiModel(value = "LocModifyParams", description = "鎵归噺淇敼鍙傛暟") +public class LocModifyParams implements Serializable { + + @ApiModelProperty("涓诲崟ID") + private List<Long> id; + + @ApiModelProperty("搴撲綅淇℃伅") + private Loc loc; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java index 3bf2713..24a47ed 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java @@ -1,14 +1,13 @@ package com.vincent.rsf.server.manager.entity; -import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.*; + import java.text.SimpleDateFormat; import java.util.Date; import com.vincent.rsf.server.manager.service.WarehouseAreasService; import com.vincent.rsf.server.manager.service.WarehouseService; +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; @@ -19,6 +18,7 @@ @Data @TableName("man_loc") +@Accessors(chain = true) public class Loc implements Serializable { private static final long serialVersionUID = 1L; @@ -53,11 +53,6 @@ @ApiModelProperty(value= "搴撲綅绫诲瀷") private String type; - /** - * 鍚嶇О - */ - @ApiModelProperty(value= "鍚嶇О") - private String name; /** * 铏氭嫙搴撲綅 @@ -87,13 +82,28 @@ * 闀�/瀹�/楂� */ @ApiModelProperty(value= "闀�/瀹�/楂�") - private String size; + @TableField("`length`") + private Double length; + + /** + * 瀹� + */ + @ApiModelProperty("瀹�") + @TableField("`width`") + private Double width; + + /** + * 楂� + */ + @ApiModelProperty("楂�") + private Double height; /** * 鎺� */ @ApiModelProperty(value= "鎺�") - private Integer lrow; + @TableField("`row`") + private Integer row; /** * 鍒� @@ -110,8 +120,13 @@ /** * 閫氶亾 */ - @ApiModelProperty(value= "閫氶亾") + @ApiModelProperty(value= "宸烽亾") private Integer channel; + + /** + * 搴撲綅浣跨敤鐘舵�� + */ + private String useStatus; /** * 鏈�澶ч浂浠舵暟 @@ -190,18 +205,19 @@ public Loc() {} - public Loc(Long areaId, Long warehouseId, String code,String type,String name,Short flagLogic,String fucAtrrs,String barcode,String unit,String size,Integer lrow,Integer col,Integer lev,Integer channel,Integer maxParts,Integer maxPack,Short flagLabelMange,String locAttrs,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + public Loc(Long areaId, Long warehouseId, String code,String type,Short flagLogic,String fucAtrrs,String barcode,String unit,Double size, Double width, Double height,Integer lrow,Integer col,Integer lev,Integer channel,Integer maxParts,Integer maxPack,Short flagLabelMange,String locAttrs,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.warehouseId = warehouseId; this.areaId = areaId; this.code = code; this.type = type; - this.name = name; + this.width = width; + this.height = height; this.flagLogic = flagLogic; this.fucAtrrs = fucAtrrs; this.barcode = barcode; this.unit = unit; - this.size = size; - this.lrow = lrow; + this.length = size; + this.row = lrow; this.col = col; this.lev = lev; this.channel = channel; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java index 9d1b124..9b75cc9 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java @@ -4,14 +4,10 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; -import java.text.SimpleDateFormat; -import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; @@ -19,7 +15,6 @@ import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; -import java.util.Date; @Data @TableName("man_qly_ispt_item") @@ -58,7 +53,7 @@ @ApiModelProperty(value= "鏍囩") private String label; - /** + /**鈭� * 渚涘簲鍟嗗悕绉� */ @ApiModelProperty(value= "渚涘簲鍟嗗悕绉�") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java index 8a34244..7abbf6c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/StockItem.java @@ -13,7 +13,6 @@ import java.util.Date; import com.baomidou.mybatisplus.annotation.TableLogic; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; @@ -21,7 +20,6 @@ import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; -import java.util.Date; @Data @TableName("man_stock_item") @@ -390,7 +388,7 @@ LocService service = SpringUtils.getBean(LocService.class); Loc loc = service.getById(this.locId); if (!Cools.isEmpty(loc)){ - return String.valueOf(loc.getName()); + return String.valueOf(loc.getCode()); } return null; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java index ee03739..4010a81 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java @@ -38,6 +38,12 @@ private Long id; /** + * 浠撳簱ID + */ + @ApiModelProperty("浠撳簱ID") + private Long wareId; + + /** * 缂栧彿 */ @ApiModelProperty(value= "缂栧彿") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java index 8ea3665..688ab4d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java @@ -1,8 +1,6 @@ package com.vincent.rsf.server.manager.entity.excel; import cn.afterturn.easypoi.excel.annotation.Excel; -import cn.afterturn.easypoi.handler.inter.IExcelDataModel; -import cn.afterturn.easypoi.handler.inter.IExcelModel; import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelAutoColumnSize; import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; import lombok.Data; @@ -24,7 +22,7 @@ @Accessors(chain = true) @ToString(callSuper = true) @EqualsAndHashCode(callSuper = false) -public class MatnrsTemplate implements IExcelModel, IExcelDataModel, Serializable { +public class MatnrsTemplate implements Serializable { @Excel(name = "鐗╂枡鍚嶇О") @ExcelComment(example = "鍗庝负鎵嬫満") @@ -114,28 +112,5 @@ @ExcelComment(notNull = false, example = "0") private String flagCheck; - private Integer rowNum; - private String errorMsg; - - - @Override - public Integer getRowNum() { - return this.rowNum; - } - - @Override - public void setRowNum(Integer rowNum) { - this.rowNum = rowNum; - } - - @Override - public String getErrorMsg() { - return this.errorMsg; - } - - @Override - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java index 3b15e3a..905a2e2 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java @@ -18,7 +18,5 @@ boolean fieldsSave(Map<String, Object> params); -// R listByAsnId(Map<String, Object> map); - IPage<Map<String, Object>> listByAsnId(PageParam<AsnOrderItem, BaseParam> pageParam, QueryWrapper<AsnOrderItem> buildWrapper); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java index 14f0c35..6cc0cb3 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java @@ -1,8 +1,16 @@ package com.vincent.rsf.server.manager.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.server.manager.controller.params.LocMastInitParam; +import com.vincent.rsf.server.manager.controller.params.LocModifyParams; import com.vincent.rsf.server.manager.entity.Loc; + +import java.util.List; public interface LocService extends IService<Loc> { + R modifyLocs(LocModifyParams locs); + + R initLocs(LocMastInitParam param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java index dea1d43..4dd5ffe 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java @@ -1,12 +1,95 @@ package com.vincent.rsf.server.manager.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.controller.params.LocMastInitParam; +import com.vincent.rsf.server.manager.controller.params.LocModifyParams; +import com.vincent.rsf.server.manager.entity.WarehouseAreas; import com.vincent.rsf.server.manager.mapper.LocMapper; import com.vincent.rsf.server.manager.entity.Loc; import com.vincent.rsf.server.manager.service.LocService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vincent.rsf.server.manager.service.WarehouseAreasService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; @Service("locService") public class LocServiceImpl extends ServiceImpl<LocMapper, Loc> implements LocService { + @Autowired + private WarehouseAreasService warehouseAreasService; + + @Override + public R modifyLocs(LocModifyParams locs) { + if (locs.getId().isEmpty()) { + throw new CoolException("搴撲綅ID涓嶈兘涓虹┖锛侊紒"); + } + Loc loc = locs.getLoc(); + + if (Objects.isNull(loc)) { + throw new CoolException("淇敼搴撲綅淇℃伅涓嶈兘涓虹┖锛侊紒"); + } + + boolean update = this.update(new LambdaUpdateWrapper<Loc>() + .in(Loc::getId, locs.getId()) + .eq(Loc::getStatus, 1) + .set(!Objects.isNull(loc.getUseStatus()), Loc::getUseStatus, loc.getUseStatus()) + .set(!Objects.isNull(loc.getType()), Loc::getType, loc.getType()) + .set(!Objects.isNull(loc.getLength()), Loc::getLength, loc.getLength()) + .set(!Objects.isNull(loc.getWidth()), Loc::getWidth, loc.getWidth()) + .set(!Objects.isNull(loc.getHeight()), Loc::getHeight, loc.getHeight()) + .set(!Objects.isNull(loc.getChannel()), Loc::getChannel, loc.getChannel()) + .set(!Objects.isNull(loc.getFlagLabelMange()), Loc::getFlagLabelMange, loc.getFlagLabelMange()) + .set(!Objects.isNull(loc.getStatus()), Loc::getStatus, loc.getStatus())); + if (!update) { + throw new CoolException("搴撲綅淇℃伅淇敼澶辫触锛侊紒"); + } + return R.ok("鎿嶄綔鎴愬姛锛侊紒"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R initLocs(LocMastInitParam param) { + //娓呯┖琛� + if (this.baseMapper.delete(new LambdaUpdateWrapper<>()) < 0) { + throw new CoolException("鏁版嵁搴撳垵濮嬪寲澶辫触锛氳�佹暟鎹垹闄ゅけ璐ワ紒锛�"); + } + WarehouseAreas warehouseAreas = warehouseAreasService.getById(param.getAreaId()); + if (Objects.isNull(warehouseAreas)) { + throw new CoolException("搴撳尯涓嶅瓨鍦紒锛�"); + } + + List<Loc> list = new ArrayList<>(); + for (int r = param.getStartRow(); r <= param.getEndRow(); r++) { + for (int b = param.getStartBay(); b <= param.getEndBay(); b++) { + for (int l = param.getStartLev(); l <= param.getEndLev(); l++) { + // 鑾峰彇搴撲綅鍙� + String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); + Loc loc = new Loc(); + loc.setCode(locNo) + .setUseStatus("O") + .setRow(r) + .setCol(b) + .setLev(l) + .setAreaId(param.getAreaId()) + .setWarehouseId(warehouseAreas.getWareId()) + .setType(param.getType()); + + list.add(loc); + } + } + } + if (!this.saveBatch(list)) { + throw new CoolException("搴撲綅鍒濆鍖栧け璐ワ紒锛�"); + } + return R.ok("鍒濆鍖栨垚鍔燂紒锛�"); + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/CodeRes.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/CodeRes.java index c7ce65b..863c072 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/CodeRes.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/CodeRes.java @@ -10,6 +10,7 @@ String USER_10003 = "10003-瀵嗙爜閿欒"; String PICK_600 = "600-鎷f枡浠诲姟"; + String NO_COMB_700 = "700-璇峰厛缁勬墭"; String SYSTEM_20001 = "20001-璁稿彲璇佸凡澶辨晥"; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java new file mode 100644 index 0000000..946ad6d --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java @@ -0,0 +1,48 @@ +package com.vincent.rsf.server.system.enums; + + +public enum LocStsType { + + //绌烘澘 + LOC_STS_TYPE_D("D", "绌烘澘"), + //鍦ㄥ簱 + LOC_STS_TYPE_F("F", "鍦ㄥ簱"), + //绌哄簱 + LOC_STS_TYPE_O("O", "绌哄簱"), + //绂佺敤 + LOC_STS_TYPE_X("X", "绂佺敤"), + //鍏ュ簱棰勭害 + LOC_STS_TYPE_S("S", "鍏ュ簱棰勭害"), + //鍑哄簱棰勭害 + LOC_STS_TYPE_R("R", "鍑哄簱棰勭害"), + ; + + private String type; + + private String desc; + + LocStsType(String type, String desc) { + this.type = type; + this.desc = desc; + } + +// public long val() { +// LocStsService service = SpringUtils.getBean(LocStsService.class); +// LocSts locSts = service.getOne(new LambdaQueryWrapper<LocSts>().eq(LocSts::getLocSts, this.toString())); +// if (locSts == null) { +// throw new CoolException("LocStsType Error!"); +// } +// return locSts.getId(); +// } + + public static LocStsType get(String el) { + for (LocStsType value : LocStsType.values()) { + if (el.equals(value.toString())) { + return value; + } + } + return null; + } + + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocType.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocType.java new file mode 100644 index 0000000..d3c44b8 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocType.java @@ -0,0 +1,25 @@ +package com.vincent.rsf.server.system.enums; + +/** + * @author Ryan + * @version 1.0 + * @title LocType + * @description + * @create 2025/3/17 13:29 + */ +public enum LocType { + //楂樸�佷腑銆佷綆搴撲綅 + LOC_TYPE_HEIGHT("H", "楂樺簱浣�"), + LOC_TYPE_MIDDLE("M", "涓簱浣�"), + LOC_TYPE_LOW("L", "浣庡簱浣�") + ; + + LocType(String type, String desc) { + this.type = type; + this.desc = desc; + } + + private String type; + + private String desc; +} diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index f3d6b37..294179e 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -14,6 +14,8 @@ driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root +# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai +# username: rsf password: 34821015 type: com.alibaba.druid.pool.DruidDataSource druid: -- Gitblit v1.9.1