rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ErpApiController.java
File was deleted rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
New file @@ -0,0 +1,76 @@ package com.vincent.rsf.server.api.controller; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.api.controller.params.OrderParams; import com.vincent.rsf.server.api.service.ReceiveMsgService; 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.system.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * @author Ryan * @version 1.0 * @title ErpApiController * @description * @create 2025/3/4 13:19 */ @RestController @RequestMapping("/erp") @Api(tags = "ERP接口对接") public class ReceiveMsgController extends BaseController { @Autowired private ReceiveMsgService receiveMsgService; /** * @author Ryan * @description 接收ERP推送的PO单据 * @throws * @return * @time 2025/3/4 13:57 */ @ApiOperation(value = "接收同步ERP采购单") @PostMapping("/sync/purchase") public R syncPurchases(@RequestBody List<OrderParams> orders) { if (orders.isEmpty()) { return R.error("推送订单不能为空,请检查校验后再操作!!"); } if (!receiveMsgService.syncPurchasee(orders)) { return R.error("保存失败"); } else { return R.ok("保存成功!!"); } } /** * @author Ryan * @description 同步质检结果信息 * @param * @return * @time 2025/3/12 16:56 */ @ApiOperation("质检结果同步") @PostMapping("/sync/inspect") public void syncQlyInspect(HttpServletRequest request, HttpServletResponse response) { AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class); List<AsnOrderTemplate> list = new ArrayList<>(); list.add(template); ExcelUtil.build(ExcelUtil.create(list, AsnOrderTemplate.class), response); System.out.println(template); // return R.ok(); } } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReportMsgController.java
New file @@ -0,0 +1,20 @@ package com.vincent.rsf.server.api.controller; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author Ryan * @version 1.0 * @title ReportMsgController * @description * @create 2025/3/12 17:00 */ @RestController @RequestMapping("/report") @Api(tags = "上报信息接口管理器") public class ReportMsgController extends BaseController { } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
File was renamed from rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/Order.java @@ -21,7 +21,7 @@ @Data @Accessors(chain = true) @ApiModel(value = "PurchaseOrder", description = "入库单据") public class Order implements Serializable { public class OrderParams implements Serializable { @ApiModelProperty(value = "单据编码") private String code; rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
File was renamed from rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java @@ -1,7 +1,7 @@ package com.vincent.rsf.server.api.service; import com.vincent.rsf.server.api.controller.params.Order; import com.vincent.rsf.server.api.controller.params.OrderParams; import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import java.util.List; @@ -13,14 +13,14 @@ * @description * @create 2025/3/4 16:23 */ public interface ErpApiService { public interface ReceiveMsgService { /** * 采购单同步 * @param orders * @return */ boolean syncPurchasee(List<Order> orders); boolean syncPurchasee(List<OrderParams> orders); /** * 一键报检 rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReportMsgService.java
New file @@ -0,0 +1,12 @@ package com.vincent.rsf.server.api.service; /** * @author Ryan * @version 1.0 * @title ReportMsgService * @description * @create 2025/3/12 17:07 */ public interface ReportMsgService { } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@ import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; import com.vincent.rsf.server.manager.service.WarehouseAreasService; import com.vincent.rsf.server.system.constant.CodeRes; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.param.LoginParam; import com.vincent.rsf.server.system.controller.result.LoginResult; import com.vincent.rsf.server.system.entity.*; @@ -174,7 +175,7 @@ .setAreaName(areasItem.getName()) .setAreaId(areasItem.getId()) .setStockUnit(dto.getStockUnit()) .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto)) .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto)) .setAnfme(dto.getReceiptQty()) .setSplrBtch(dto.getSplrBatch()) .setMatnrCode(matnr.getCode()) rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
File was renamed from rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java @@ -19,9 +19,12 @@ import com.vincent.rsf.server.manager.service.PurchaseItemService; import com.vincent.rsf.server.manager.service.PurchaseService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.api.controller.params.Order; import com.vincent.rsf.server.api.controller.params.OrderParams; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import com.vincent.rsf.server.api.service.ErpApiService; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.manager.entity.Purchase; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -48,16 +51,14 @@ */ @Slf4j @Service("erpApiService") public class ErpApiServiceImpl implements ErpApiService { public class ReceiveMsgServiceImpl implements ReceiveMsgService { @Autowired private PurchaseService purchaseService; @Autowired private PurchaseItemService purchaseItemService; @Autowired private AsnOrderService asnOrderService; @Autowired private AsnOrderItemService asnOrderItemService; @Autowired @@ -66,10 +67,14 @@ private RemotesInfoProperties remotesInfoProperties; @Autowired private RemotesInfoProperties.ApiInfo apiInfo; @Autowired private FieldsService fieldsService; @Autowired private FieldsItemService fieldsItemService; @Override @Transactional(rollbackFor = Exception.class) public boolean syncPurchasee(List<Order> orders) { public boolean syncPurchasee(List<OrderParams> orders) { if (orders.isEmpty()) { throw new CoolException("单据内容不能为空!!"); } @@ -82,12 +87,22 @@ if (!purchaseService.save(purchase)) { throw new CoolException("采购单据保存失败"); } //查询扩展字段是否存在 List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); //判断子列表不为空 if (!ors.getChildren().isEmpty()) { ArrayList<PurchaseItem> list = new ArrayList<>(); ors.getChildren().forEach(orderItem -> { PurchaseItem item = new PurchaseItem(); BeanUtils.copyProperties(orderItem, item); // if (!fields.isEmpty()) { // List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList()); // fieldValue.forEach(value -> { // // }); // } item.setPurchaseId(purchase.getId()); list.add(item); }); rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
New file @@ -0,0 +1,16 @@ package com.vincent.rsf.server.api.service.impl; import com.vincent.rsf.server.api.service.ReportMsgService; import org.springframework.stereotype.Service; /** * @author Ryan * @version 1.0 * @title ReportMsgServiceImpl * @description * @create 2025/3/12 17:08 */ @Service public class ReportMsgServiceImpl implements ReportMsgService { } rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
@@ -1,8 +1,12 @@ package com.vincent.rsf.server.common.utils; import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; 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.usermodel.*; @@ -20,6 +24,7 @@ /** * Created by vincent on 2/17/2024 */ @Slf4j public class ExcelUtil { public static void build(Workbook workbook, HttpServletResponse response) { @@ -33,6 +38,10 @@ } public static <T> Workbook create(List<T> list, Class<T> clz) { return create(list, clz, false); } public static <T> Workbook create(List<T> list, Class<T> clz, boolean flagTemplate) { HSSFWorkbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.createSheet(clz.getSimpleName()); @@ -46,6 +55,15 @@ continue; } String memo = "Undefined"; if (flagTemplate) { if (field.isAnnotationPresent(ExcelComment.class)) { memo = field.getAnnotation(ExcelComment.class).value(); } } else { if (field.isAnnotationPresent(Excel.class)) { memo = field.getAnnotation(Excel.class).name(); } } if (field.isAnnotationPresent(ApiModelProperty.class)) { memo = field.getAnnotation(ApiModelProperty.class).value(); } @@ -102,4 +120,81 @@ return params; } /** * 根据 {@code tClass} 相关成员变量的 {@link ExcelComment#example()} 字段创建模拟数据,暂不支持 复杂类型 * @param tClass * @return */ public static <T> T mockData(Class<T> tClass) { if (tClass == null) { return null; } T instance = null; try { instance = tClass.newInstance(); Field[] declaredFields = tClass.getDeclaredFields(); for (Field declaredField : declaredFields) { ExcelComment comment = declaredField.getAnnotation(ExcelComment.class); if (comment == null) { continue; } declaredField.setAccessible(true); Class<?> fieldType = declaredField.getType(); String exampleValue = comment.example(); Object value = null; if (fieldType == int.class || fieldType == Integer.class) { value = StringUtils.isBlank(exampleValue) ? 0 : Integer.parseInt(exampleValue); } else if (fieldType == short.class || fieldType == Short.class) { value = StringUtils.isBlank(exampleValue) ? 0 : Short.parseShort(exampleValue); } else if (fieldType == long.class || fieldType == Long.class) { value = StringUtils.isBlank(exampleValue) ? 0 : Long.parseLong(exampleValue); } else if (fieldType == double.class || fieldType == Double.class) { value = StringUtils.isBlank(exampleValue) ? 0 : Double.parseDouble(exampleValue); } else if (fieldType == boolean.class || fieldType == Boolean.class) { value = StringUtils.isNotBlank(exampleValue) && Boolean.parseBoolean(exampleValue); } else if (fieldType == String.class) { value = exampleValue; } else if (fieldType == Date.class) { value = DateUtils.parse(exampleValue); } if (value == null && !isBaseType(fieldType)) { declaredField.set(instance, null); } else { declaredField.set(instance, value); } } } catch (Exception e) { log.error("数据构造失败,请查询详细信息", e); return instance; } return instance; } /** * 是否是基础数据类型 * * @param className * @return */ private static boolean isBaseType(Class<?> className) { if (className.equals(java.lang.Integer.class) || className.equals(java.lang.Byte.class) || className.equals(java.lang.Long.class) || className.equals(java.lang.Double.class) || className.equals(java.lang.Float.class) || className.equals(java.lang.Character.class) || className.equals(java.lang.Short.class) || className.equals(java.lang.Boolean.class)) { return true; } return false; } } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -12,7 +12,9 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.manager.service.AsnOrderService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.BaseController; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -64,6 +66,10 @@ public R save(@RequestBody AsnOrder asnOrder) { asnOrder.setCreateBy(getLoginUserId()); asnOrder.setUpdateBy(getLoginUserId()); String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, asnOrder); if (!Objects.isNull(code)) { asnOrder.setCode(code); } if (!asnOrderService.save(asnOrder)) { return R.error("Save Fail"); } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
@@ -1,10 +1,13 @@ package com.vincent.rsf.server.manager.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.CommonUtil; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; @@ -12,9 +15,15 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.controller.params.AsnOrderItemParams; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.system.controller.BaseController; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.entity.FieldsItem; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -24,7 +33,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @Api(tags = "ASN单明细") @RestController public class AsnOrderItemController extends BaseController { @@ -60,17 +71,21 @@ @PreAuthorize("hasAuthority('manager:asnOrderItem:save')") @OperationLog("Create ASN单据") @PostMapping("/asnOrderItem/save") public R save(@RequestBody AsnOrderItem asnOrderItem) { asnOrderItem.setCreateBy(getLoginUserId()); asnOrderItem.setUpdateBy(getLoginUserId()); String code = SerialRuleUtils.generateRuleCode("sys_ans_order", asnOrderItem); if (!Objects.isNull(code)) { asnOrderItem.setAsnCode(code); public R save(@RequestBody Map<String, Object> params) { if (Objects.isNull(params)) { throw new CoolException("信息不能为空!!"); } if (!asnOrderItemService.save(asnOrderItem)) { params.put("createBy", getLoginUserId()); params.put("updateBy", getLoginUser()); if (!asnOrderItemService.fieldsSave(params)) { return R.error("Save Fail"); } return R.ok("Save Success").add(asnOrderItem); return R.ok("Save Success"); } @PreAuthorize("hasAuthority('manager:asnOrderItem:update')") @@ -111,8 +126,12 @@ @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") @PostMapping("/asnOrderItem/export") @ApiOperation("收货通知单明细") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(asnOrderItemService.list(), AsnOrderItem.class), response); AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class); List<AsnOrderTemplate> list = new ArrayList<>(); list.add(template); ExcelUtil.build(ExcelUtil.create(list, AsnOrderTemplate.class, true), response); } /** @@ -123,13 +142,13 @@ @PostMapping("/asnOrder/import") @ApiOperation("ASN导入接口") @PreAuthorize("hasAuthority('manager:asnOrder:update')") public R importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws Exception { public R importExcel(@RequestParam(value = "file") MultipartFile file, @RequestParam String asnId) throws Exception { if (Objects.isNull(file)) { throw new CoolException("文件不能为空!!"); } HashMap<String, Object> hashMap = new HashMap<>(); if (!Objects.isNull(request.getParameter("asnId"))) { hashMap.put("asnId", request.getParameter("asnId")); if (!Objects.isNull(asnId)) { hashMap.put("asnId", asnId); } return asnOrderItemService.excelImport(file, hashMap); } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -1,15 +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 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; @@ -17,6 +15,7 @@ import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Map; @Data @Accessors(chain = true) @@ -45,6 +44,13 @@ private String platItemId; /** * 扩展字段 */ @ApiModelProperty("扩展字段") @TableField(exist = false) private Map<String, String> extendFields; /** * 字段索引 */ @ApiModelProperty("字段索引") rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -5,6 +5,8 @@ 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; @@ -27,61 +29,60 @@ public class AsnOrderTemplate implements IExcelModel, IExcelDataModel, Serializable { @Excel(name = "行号") @ExcelComment(example = "1357564255478") @ExcelComment(value = "platItemId", example = "1357564255478") private String platItemId; @Excel(name = "物料名称") @ExcelComment(example = "物料名称") @ExcelComment(value = "matnk",example = "物料名称") private String matnk; @Excel(name = "数量") @ExcelComment(example = "25") @ExcelComment(value = "anfme",example = "25") private Double anfme; @Excel(name = "库存单位") @ExcelComment(example = "个") @ExcelComment(value = "stockUnit",example = "个") private String stockUnit; @Excel(name = "采购数量") @ExcelComment(example = "25") @ExcelComment(value = "purQty",example = "25") private Double purQty; @Excel(name = "采购单位") @ExcelComment(example = "个") @ExcelComment(value = "purUnit",example = "个") private String purUnit; @Excel(name = "已完成数量") @ExcelComment(example = "25") @ExcelComment(value = "qty",example = "25") private Double qty; @Excel(name = "供应商编码") @ExcelComment(example = "3654821") @ExcelComment(value = "splrCode",example = "3654821") private String splrCode; @Excel(name = "供应商名称") @ExcelComment(example = "浙江中扬技术公司") @ExcelComment(value = "splrName",example = "浙江中扬技术公司") private String splrName; @Excel(name = "供应商批次") @ExcelComment(example = "25251212") @ExcelComment(value = "splrBatch",example = "25251212") private String splrBatch; @Excel(name = "二维码") @ExcelComment(example = "") @ExcelComment(value = "qrcode",example = "") private String qrcode; @Excel(name = "条形码") @ExcelComment(example = "2354788") @ExcelComment(value = "barcode",example = "2354788") private String barcode; @Excel(name = "包装名称") @ExcelComment(example = "箱") @ExcelComment(value = "packName",example = "箱") private String packName; @Excel(name = "备注") @ExcelComment(example = "注:易碎品,轻拿放") @ExcelComment(value = "memo",example = "注:易碎品,轻拿放") private String memo; private Integer rowNum; rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java
@@ -8,8 +8,11 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; public interface AsnOrderItemService extends IService<AsnOrderItem> { R excelImport(MultipartFile file, HashMap<String, Object> hashMap) throws Exception; boolean fieldsSave(Map<String, Object> params); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -2,9 +2,11 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.alibaba.fastjson.JSONObject; 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.common.utils.CommonUtil; 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; @@ -14,17 +16,19 @@ import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.entity.FieldsItem; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Objects; import java.util.*; @Service("asnOrderItemService") public class AsnOrderItemServiceImpl extends ServiceImpl<AsnOrderItemMapper, AsnOrderItem> implements AsnOrderItemService { @@ -32,10 +36,14 @@ @Resource private AsnOrderMapper asnOrderMapper; @Autowired private FieldsService fieldsService; @Autowired private FieldsItemService fieldsItemService; @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()); if (result.getList().isEmpty()) { throw new CoolException("物料导入失败!!"); @@ -43,7 +51,6 @@ if (!Objects.isNull(hashMap.get("asnId"))) { throw new CoolException("主单ID为空,无法操作!!"); } AsnOrder order = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, hashMap.get("asnId"))); if (Objects.isNull(order)) { throw new CoolException("ASN单据不存在!!"); @@ -61,4 +68,31 @@ } return R.ok("操作成功!!"); } @Override public boolean fieldsSave(Map<String, Object> params) { List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); List<FieldsItem> fieldsItems = new ArrayList<>(); if (!fields.isEmpty()) { String uuid16 = CommonUtil.randomUUID16(); for (Fields obj : fields) { if (!Objects.isNull(params.get(obj.getFields()))) { FieldsItem item = new FieldsItem(); item.setUuid(uuid16) .setValue(params.get(obj.getFields()).toString()) .setMatnrId(Long.parseLong(params.get("matnrId").toString())) .setFieldsId(obj.getId()); fieldsItems.add(item); } } if (!fieldsItemService.saveBatch(fieldsItems)) { throw new CoolException("单据明细扩展字段保存失败!!"); } } AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class); if (!this.save(asnOrderItem)) { throw new CoolException("收货通知单明细保存失败!!"); } return true; } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -1,12 +1,8 @@ package com.vincent.rsf.server.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.api.service.ErpApiService; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.entity.Purchase; import com.vincent.rsf.server.manager.entity.PurchaseItem; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.entity.AsnOrder; @@ -32,7 +28,7 @@ public class AsnOrderServiceImpl extends ServiceImpl<AsnOrderMapper, AsnOrder> implements AsnOrderService { @Autowired private ErpApiService erpApiService; private ReceiveMsgService receiveMsgService; @Resource private PurchaseMapper purchaseMapper; @@ -49,7 +45,7 @@ throw new CoolException("ASN单据不能为空!!"); } List<PoItemsDto> items = purchaseMapper.poList(asnIds); if (erpApiService.reportInspectNotify(items)) { if (receiveMsgService.reportInspectNotify(items)) { return true; } else { return false; rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
@@ -18,4 +18,9 @@ * ASN通知单生成编码规则 */ public final static String SYS_ASN_ORDER = "sys_ans_order"; /** * 收货批次规则 */ public final static String SYS_RECEIPT_BATCH = "sys_receipt_batch"; } rsf-server/src/main/resources/application-dev.yml
@@ -76,7 +76,7 @@ #端口号 port: 8080 #接品链接前缀 prePath: rsf-server pre-path: rsf-server #接口明细 api: #质检上报接口