From e86cd6325395c784d1c116a035987a5cf19bbe69 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 13 三月 2025 17:19:17 +0800 Subject: [PATCH] #优化 Excel表格,保存优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 10 + rsf-common/pom.xml | 10 + rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/common/handler/ExcelDictHandlerImpl.java | 49 +++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/common/handler/AggregationDataHandler.java | 69 +++++++ rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java | 18 + rsf-server/src/main/java/com/vincent/rsf/server/common/handler/global/GlobalDictService.java | 136 +++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 22 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java | 6 rsf-common/src/main/java/com/vincent/rsf/common/domain/BeanValidators.java | 138 +++++++++++++++ 14 files changed, 464 insertions(+), 17 deletions(-) diff --git a/rsf-common/pom.xml b/rsf-common/pom.xml index fb8d0ac..e3d17b7 100644 --- a/rsf-common/pom.xml +++ b/rsf-common/pom.xml @@ -44,6 +44,16 @@ <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>30.1.1-jre</version> + <scope>compile</scope> + </dependency> </dependencies> <build> diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/domain/BeanValidators.java b/rsf-common/src/main/java/com/vincent/rsf/common/domain/BeanValidators.java new file mode 100644 index 0000000..7d69cc5 --- /dev/null +++ b/rsf-common/src/main/java/com/vincent/rsf/common/domain/BeanValidators.java @@ -0,0 +1,138 @@ +package com.vincent.rsf.common.domain; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * ${DESCRIPTION} + * + * @author Super-Admin + * @CreateUser Ryan + * @CreateTime 2018/6/14 16:12 + * @ModifyUser YunTao.Zhou + * @ModifiedTime 2018/6/14 16:12 + * @Version 1.0 + */ +public class BeanValidators { + + /** + * + * @param validator + * @param list + * @param groups + * @throws ConstraintViolationException + */ + public static void validateListWithException(Validator validator, List<?> list, Class<?>... groups) + throws ConstraintViolationException { + if(list.isEmpty()){ + return; + } + Set constraintViolations = Sets.newHashSet(); + for (Object o : list) { + constraintViolations.addAll( validator.validate(o, groups)); + if (!constraintViolations.isEmpty()) { + throw new ConstraintViolationException(constraintViolations); + } + } + } + + public static void validateArrayWithException(Validator validator, Object[] array, Class<?>... groups){ + BeanValidators.validateListWithException(validator, Lists.newArrayList(array),groups); + } + + + /** + * 璋冪敤JSR303鐨剉alidate鏂规硶, 楠岃瘉澶辫触鏃舵姏鍑篊onstraintViolationException. + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void validateWithException(Validator validator, Object object, Class<?>... groups) + throws ConstraintViolationException { + Set constraintViolations = validator.validate(object, groups); + if (!constraintViolations.isEmpty()) { + throw new ConstraintViolationException(constraintViolations); + } + } + + /** + * 杈呭姪鏂规硶, 杞崲ConstraintViolationException涓殑Set<ConstraintViolations>涓负List<message>. + */ + public static List<String> extractMessage(ConstraintViolationException e) { + return extractMessage(e.getConstraintViolations()); + } + + /** + * 杈呭姪鏂规硶, 杞崲Set<ConstraintViolation>涓篖ist<message> + */ + @SuppressWarnings("rawtypes") + public static List<String> extractMessage(Set<? extends ConstraintViolation> constraintViolations) { + List<String> errorMessages = Lists.newArrayList(); + for (ConstraintViolation violation : constraintViolations) { + errorMessages.add(violation.getMessage()); + } + return errorMessages; + } + + /** + * 杈呭姪鏂规硶, 杞崲ConstraintViolationException涓殑Set<ConstraintViolations>涓篗ap<property, message>. + */ + public static Map<String, String> extractPropertyAndMessage(ConstraintViolationException e) { + return extractPropertyAndMessage(e.getConstraintViolations()); + } + + /** + * 杈呭姪鏂规硶, 杞崲Set<ConstraintViolation>涓篗ap<property, message>. + */ + @SuppressWarnings("rawtypes") + public static Map<String, String> extractPropertyAndMessage(Set<? extends ConstraintViolation> constraintViolations) { + Map<String, String> errorMessages = Maps.newHashMap(); + for (ConstraintViolation violation : constraintViolations) { + errorMessages.put(violation.getPropertyPath().toString(), violation.getMessage()); + } + return errorMessages; + } + + /** + * 杈呭姪鏂规硶, 杞崲ConstraintViolationException涓殑Set<ConstraintViolations>涓篖ist<propertyPath message>. + */ + public static List<String> extractPropertyAndMessageAsList(ConstraintViolationException e) { + return extractPropertyAndMessageAsList(e.getConstraintViolations(), " "); + } + + /** + * 杈呭姪鏂规硶, 杞崲Set<ConstraintViolations>涓篖ist<propertyPath message>. + */ + @SuppressWarnings("rawtypes") + public static List<String> extractPropertyAndMessageAsList(Set<? extends ConstraintViolation> constraintViolations) { + return extractPropertyAndMessageAsList(constraintViolations, " "); + } + + /** + * 杈呭姪鏂规硶, 杞崲ConstraintViolationException涓殑Set<ConstraintViolations>涓篖ist<propertyPath +separator+ message>. + */ + public static List<String> extractPropertyAndMessageAsList(ConstraintViolationException e, String separator) { + return extractPropertyAndMessageAsList(e.getConstraintViolations(), separator); + } + + /** + * 杈呭姪鏂规硶, 杞崲Set<ConstraintViolation>涓篖ist<propertyPath +separator+ message>. + */ + @SuppressWarnings("rawtypes") + public static List<String> extractPropertyAndMessageAsList(Set<? extends ConstraintViolation> constraintViolations, + String separator) { + List<String> errorMessages = Lists.newArrayList(); + for (ConstraintViolation violation : constraintViolations) { + errorMessages.add(violation.getPropertyPath() + separator + violation.getMessage()); + } + return errorMessages; + } + +} + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/AggregationDataHandler.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/AggregationDataHandler.java new file mode 100644 index 0000000..5030852 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/AggregationDataHandler.java @@ -0,0 +1,69 @@ +package com.vincent.rsf.server.common.handler; + +import cn.afterturn.easypoi.handler.impl.ExcelDataHandlerDefaultImpl; +import cn.afterturn.easypoi.handler.inter.IExcelDataHandler; +import com.google.common.collect.Lists; + +import java.util.List; + +/** + * @Description: 鐢ㄦ埛瀵煎叆鑱氬悎鏁版嵁澶勭悊鍣� + * @Author: Ryan + * @CreateDate: 2019/11/1 9:42 + * @Version: 1.0 + */ +public class AggregationDataHandler extends ExcelDataHandlerDefaultImpl { + + private List<IExcelDataHandler> handlers = Lists.newArrayList(); + + public AggregationDataHandler(List<IExcelDataHandler> handlers) { + + this.handlers = handlers; + } + + public AggregationDataHandler(IExcelDataHandler... handlers) { + this(handlers == null ? Lists.newArrayList() : Lists.newArrayList(handlers)); + } + + @Override + public String[] getNeedHandlerFields() { + List<String> fields = Lists.newArrayList(); + for (IExcelDataHandler handler : handlers) { + String[] needHandlerFields = handler.getNeedHandlerFields(); + if (needHandlerFields == null) { + continue; + } + for (String needHandlerField : needHandlerFields) { + fields.add(needHandlerField); + } + } + return fields.toArray(new String[fields.size()]); + } + + @Override + public Object importHandler(Object obj, String name, Object value) { + for (IExcelDataHandler handler : handlers) { + String[] needHandlerFields = handler.getNeedHandlerFields(); + List<String> fieldList = Lists.newArrayList(needHandlerFields); + if (fieldList.contains(name)) { + handler.importHandler(obj, name, value); + break; + } + } + return super.importHandler(obj, name, value); + } + + @Override + public Object exportHandler(Object obj, String name, Object value) { + for (IExcelDataHandler handler : handlers) { + String[] needHandlerFields = handler.getNeedHandlerFields(); + List<String> fieldList = Lists.newArrayList(needHandlerFields); + if (fieldList.contains(name)) { + handler.exportHandler(obj, name, value); + break; + } + } + return super.exportHandler(obj, name, value); + } +} + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/ExcelDictHandlerImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/ExcelDictHandlerImpl.java new file mode 100644 index 0000000..4ecb420 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/ExcelDictHandlerImpl.java @@ -0,0 +1,49 @@ +package com.vincent.rsf.server.common.handler; + +import cn.afterturn.easypoi.handler.inter.IExcelDictHandler; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.server.common.handler.global.GlobalDictService; + +/** + * @Description: excel 瀛楀吀澶勭悊绫� + * @Author: Ryan + * @CreateDate: 2019/10/29 17:42 + * @Version: 1.0 + */ +public class ExcelDictHandlerImpl implements IExcelDictHandler { + + private ExcelDictHandlerImpl() { + } + + private volatile static ExcelDictHandlerImpl INSTANCE; + + public static ExcelDictHandlerImpl getInstance() { + if (INSTANCE == null) { + synchronized (ExcelDictHandlerImpl.class) { + INSTANCE = new ExcelDictHandlerImpl(); + } + } + return INSTANCE; + } + + @Override + public String toName(String dict, Object obj, String name, Object value) { + return getGlobalDictService().getDictLabel(dict, (value != null ? value.toString() : null), (value != null ? value.toString() : null)); + } + + @Override + public String toValue(String dict, Object obj, String name, Object value) { + return getGlobalDictService().getDictValue(dict, (value != null ? value.toString() : null), (value != null ? value.toString() : null)); + } + + private GlobalDictService getGlobalDictService() { + try { + return SpringUtils.getBean(GlobalDictService.class); + } catch (Exception e) { + return null; + } + } + + +} + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/global/GlobalDictService.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/global/GlobalDictService.java new file mode 100644 index 0000000..965ceb8 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/handler/global/GlobalDictService.java @@ -0,0 +1,136 @@ +package com.vincent.rsf.server.common.handler.global; + +import com.google.common.collect.Lists; +import com.vincent.rsf.framework.common.SpringUtils; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Description: 瀛楀吀宸ュ叿绫伙紝鎻愪緵缁欏叏灞�浣跨敤 + * @Author: Ryan + * @CreateDate: 2019/8/13 11:11 + * @Version: 1.0 + */ +@Slf4j +@Service +public class GlobalDictService implements InitializingBean { + + private final ConcurrentHashMap<String, String> LOCAL_LABEL_CACHE = new ConcurrentHashMap(); + private final ConcurrentHashMap<String, Set<Dict>> LOCAL_CACHE = new ConcurrentHashMap(); + + public void putDict(String type, String value, String label) { + LOCAL_LABEL_CACHE.put(type + "-" + value, label); + putToLocalCache(type, value, label); + } + + private void putToLocalCache(String type, String value, String label) { + Dict dict = new Dict(value, label); + Set<Dict> dicts = LOCAL_CACHE.get(type); + if (dicts == null) { + dicts = new HashSet<>(); + } + dicts.add(dict); + LOCAL_CACHE.put(type, dicts); + } + + public String getDictLabel(String type, String value, String defaultLabel) { + String label = LOCAL_LABEL_CACHE.get(type + "-" + value); + if (label != null) { + return label; + } + if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(value)) { + synchronized (type.intern()) { + label = LOCAL_LABEL_CACHE.get(type + "-" + value); + if (label != null) { + return label; + } + } + + } + return defaultLabel; + } + + public String getDictLabel(String type, String value) { + return this.getDictLabel(type, value, null); + } + + public String getDictLabels(String type, String values, String defaultValue) { + if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(values)) { + List<String> valueList = Lists.newArrayList(); + for (String value : StringUtils.split(values, ",")) { + valueList.add(getDictLabel(value, type, defaultValue)); + } + return StringUtils.join(valueList, ","); + } + return defaultValue; + } + + public String getDictLabels(String type, String defaultValue) { + List<String> valueList = Lists.newArrayList(); + Set<Dict> dicts = LOCAL_CACHE.get(type); + if (dicts == null) { + return defaultValue; + } + for (Dict dict : dicts) { + valueList.add(dict.getLabel()); + } + + return StringUtils.join(valueList, ","); + } + + + public String getDictValue(String type, String label, String defaultValue) { + if (StringUtils.isBlank(type) || StringUtils.isBlank(label)) { + return defaultValue; + } + Set<Dict> dicts = LOCAL_CACHE.get(type); + if (dicts != null) { + for (Dict dict : dicts) { + if (label.equalsIgnoreCase(dict.getLabel())) { + return dict.getValue(); + } + } + } + return defaultValue; + } + + public void clearAll() { + LOCAL_LABEL_CACHE.clear(); + LOCAL_CACHE.clear(); + } + + + @Override + public void afterPropertiesSet() throws Exception { + + + } + + @Data + @AllArgsConstructor + @EqualsAndHashCode + private class Dict { + private String value; + private String label; + } + + public static GlobalDictService getInstance() { + try { + GlobalDictService instance = SpringUtils.getBean(GlobalDictService.class); + return instance; + } catch (Exception e) { + return null; + } + } +} + 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 922d42f..146149b 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,7 +2,13 @@ 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.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.server.manager.entity.excel.annotation.ExcelComment; import io.swagger.annotations.ApiModelProperty; import lombok.extern.slf4j.Slf4j; @@ -14,6 +20,10 @@ 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; @@ -26,7 +36,6 @@ */ @Slf4j public class ExcelUtil { - public static void build(Workbook workbook, HttpServletResponse response) { response.reset(); Http.cors(response); @@ -116,8 +125,11 @@ * @return */ public static ImportParams getDefaultImportParams() { - ImportParams params = new ImportParams(); - return params; + ImportParams importParams = new ImportParams(); + importParams.setTitleRows(0); + importParams.setHeadRows(1); + importParams.setSheetNum(1); + return importParams; } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java index 38b052e..51fb9d5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java @@ -139,4 +139,14 @@ return R.error("涓�閿笂鎶ュけ璐ワ紒锛�"); } } + + @PostMapping("/asnOrder/generate/barcode") + @ApiOperation("鐢熸垚ASN鏍囩") + @PreAuthorize("hasAuthority('manager:asnOrder:list')") + public R generateBarcode(@RequestBody List<AsnOrder> orders) { + if (orders.isEmpty()) { + return R.error("鍗曟嵁涓嶈兘涓虹┖!!"); + } + return asnOrderService.generateBarcode(orders); + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java index 0b65aca..dff2932 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java @@ -76,15 +76,12 @@ throw new CoolException("淇℃伅涓嶈兘涓虹┖锛侊紒"); } params.put("createBy", getLoginUserId()); - params.put("updateBy", getLoginUser()); + params.put("updateBy", getLoginUserId()); if (!asnOrderItemService.fieldsSave(params)) { return R.error("Save Fail"); } return R.ok("Save Success"); - - - } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java index 54f5883..c3c09a5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java @@ -5,8 +5,6 @@ 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 io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -24,8 +22,8 @@ @Data @ExcelAutoColumnSize @Accessors(chain = true) -@ToString(callSuper = true) -@EqualsAndHashCode(callSuper = false) +//@ToString(callSuper = true) +//@EqualsAndHashCode(callSuper = false) public class AsnOrderTemplate implements IExcelModel, IExcelDataModel, Serializable { @Excel(name = "琛屽彿") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java index 8616605..ec1e5de 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java @@ -98,8 +98,8 @@ if (Objects.isNull(matnr)) { throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪!!"); } - //TODO barcode鐢熸垚绛栫暐 - String barcode = code + matnr.getCode(); +// //TODO barcode鐢熸垚绛栫暐 +// String barcode = code + matnr.getCode(); orderItem.setAnfme(item.getAnfme()) .setAsnId(order.getId()) .setQty(item.getQty()) @@ -109,7 +109,7 @@ .setMatnk(item.getMatnrName()) .setPoDetlId(item.getId()) .setPlatItemId(item.getPlatItemId()) - .setBarcode(barcode) +// .setBarcode(barcode) .setPoCode(purchase.getCode()) .setPurQty(item.getAnfme()) .setPurUnit(item.getUnit()) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java index 3415d00..9e87f4a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java @@ -1,6 +1,7 @@ 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.entity.AsnOrder; import java.util.List; @@ -8,4 +9,6 @@ public interface AsnOrderService extends IService<AsnOrder> { boolean notifyInspect(List<AsnOrder> orders); + + R generateBarcode(List<AsnOrder> orders); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java index b7775b2..60596bb 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java @@ -10,7 +10,6 @@ import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; -import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; @@ -27,7 +26,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.IOException; import java.util.*; @Service("asnOrderItemService") @@ -44,7 +42,7 @@ @Override @Transactional(rollbackFor = Exception.class) public R excelImport(MultipartFile file, HashMap<String, Object> hashMap) throws Exception { - ExcelImportResult<AsnOrderTemplate> result = ExcelImportUtil.importExcelMore(file.getInputStream(), MatnrsTemplate.class, ExcelUtil.getDefaultImportParams()); + ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), AsnOrderTemplate.class, ExcelUtil.getDefaultImportParams()); if (result.getList().isEmpty()) { throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒"); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java index 3e6b57d..3bac15f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java @@ -1,14 +1,21 @@ package com.vincent.rsf.server.manager.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.api.service.ReceiveMsgService; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.manager.mapper.PurchaseMapper; import com.vincent.rsf.server.manager.service.AsnOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.entity.SerialRule; +import com.vincent.rsf.server.system.mapper.SerialRuleMapper; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,6 +42,9 @@ @Resource private AsnOrderItemMapper asnOrderItemMapper; + @Resource + private SerialRuleMapper serialRuleMapper; + @Override public boolean notifyInspect(List<AsnOrder> orders) { if (orders.isEmpty()) { @@ -51,4 +61,16 @@ return false; } } + + @Override + public R generateBarcode(List<AsnOrder> orders) { + orders.forEach(order -> { + List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); + items.forEach(item -> { + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, item); + //TODO asnorderitem 娣诲姞鍗曠嫭鐨勫瓧娈碉紝淇濆瓨缂栫爜 + }); + }); + return R.ok(); + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java index 49bc53d..0a7d73b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java @@ -23,4 +23,9 @@ * 鏀惰揣鎵规瑙勫垯 */ public final static String SYS_RECEIPT_BATCH = "sys_receipt_batch"; + + /** + * ASN鏍囩鐢熸垚瑙勫垯 + */ + public final static String SYS_LABEL_CODE = "sys_label_code"; } -- Gitblit v1.9.1