From 4af26c71d9414b8b8f568c0f119f123790cab152 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 12 三月 2025 13:31:42 +0800 Subject: [PATCH] #修改 动态字段key-value值新增,显示优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java | 58 +++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 9 + rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ReceiptParams.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 7 - rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 145 ++++++++++++++------ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java | 15 + rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseAreasItemServiceImpl.java | 15 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java | 8 + rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 58 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseAreasItemService.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java | 7 rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FieldsItem.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java | 12 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java | 25 +++ rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Fields.java | 1 22 files changed, 316 insertions(+), 88 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java index 40f2243..2181e8a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java @@ -94,7 +94,6 @@ if (Objects.isNull(params)) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return mobileService.otherReceipt(params); } @@ -114,4 +113,12 @@ } + @PreAuthorize("hasAuthority('manager:asnOrder:list')") + @GetMapping("/dynamic/fields") + @ApiOperation("鑾峰彇鍔ㄦ�佸瓧娈�") + public R getDynamicFields() { + return R.ok(mobileService.getDynamicFields()); + } + + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ReceiptParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ReceiptParams.java index e2f53d8..a933489 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ReceiptParams.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ReceiptParams.java @@ -7,6 +7,7 @@ import lombok.experimental.Accessors; import java.util.List; +import java.util.Map; /** * @author Ryan diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java index ae83305..a5b525b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java @@ -1,12 +1,17 @@ package com.vincent.rsf.server.api.entity.dto; -import io.swagger.annotations.Api; +import com.alibaba.fastjson.JSONObject; +import com.vincent.rsf.server.api.controller.params.ReceiptParams; +import com.vincent.rsf.server.common.utils.CommonUtil; +import com.vincent.rsf.server.common.utils.FieldsUtils; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; +import java.util.Map; /** * @author Ryan @@ -64,4 +69,22 @@ @ApiModelProperty("渚涘簲鍟嗙紪鐮�") private String splrCode; + + @ApiModelProperty("鎵╁睍瀛楁") + private Map<String, Object> extendFields; + + public static void main(String[] args) { + String abc = ""; + String s = CommonUtil.randomUUID16(); + System.out.println("閲嶅瀛楃涓诧細" + s); +// for (int i = 0; i < 10000; i++) { +// String s = CommonUtil.randomUUID16(); +// if (abc.equals(s)) { +// System.out.println("閲嶅瀛楃涓诧細" + abc); +// } +// abc = s; +// } + } } + + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java index 2b67cd6..a4f69d4 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java @@ -5,6 +5,7 @@ import com.vincent.rsf.server.api.controller.params.ReceiptParams; import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.system.controller.param.LoginParam; +import com.vincent.rsf.server.system.entity.Fields; import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -29,4 +30,6 @@ List<AsnOrder> getAllAsnOrders(); R getReceiptAreas(); + + List<Fields> getDynamicFields(); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index b740cd0..a62dd3b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -1,5 +1,6 @@ package com.vincent.rsf.server.api.service.impl; +import com.alibaba.druid.sql.visitor.functions.If; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; @@ -12,6 +13,7 @@ import com.vincent.rsf.server.common.config.ConfigProperties; import com.vincent.rsf.server.common.enums.WarehouseAreaType; import com.vincent.rsf.server.common.security.JwtSubject; +import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.JwtUtil; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.mapper.*; @@ -20,11 +22,12 @@ import com.vincent.rsf.server.system.constant.CodeRes; 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.Tenant; -import com.vincent.rsf.server.system.entity.User; -import com.vincent.rsf.server.system.entity.UserLogin; +import com.vincent.rsf.server.system.entity.*; +import com.vincent.rsf.server.system.mapper.FieldsMapper; import com.vincent.rsf.server.system.mapper.TenantMapper; import com.vincent.rsf.server.system.mapper.UserMapper; +import com.vincent.rsf.server.system.service.FieldsItemService; +import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.apache.tika.utils.StringUtils; @@ -73,6 +76,11 @@ private StockItemMapper stockItemMapper; @Resource private PurchaseItemMapper purchaseItemMapper; + @Resource + private FieldsMapper fieldsMapper; + + @Autowired + private FieldsItemService fieldsItemService; /** @@ -122,7 +130,7 @@ if (StringUtils.isEmpty(barcode)) { return R.error("鏍囩鐮佷笉鑳戒负绌猴紒锛�"); } - AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode)); + List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode)); if (Objects.isNull(asnOrderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } @@ -146,10 +154,14 @@ if (Objects.isNull(params.getWhAreaId())) { throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒"); } + WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId())); if (Objects.isNull(areasItem)) { throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒"); } + //鑾峰彇宸插惎鐢ㄧ殑鍔ㄦ�佹墿灞曞瓧 + List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); + List<ReceiptDetlsDto> receipts = params.getReceipts(); List<WarehouseAreasItem> allOrders = new ArrayList<>(); receipts.forEach(dto -> { @@ -175,7 +187,36 @@ .setShipperId(matnr.getShipperId()); //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲 + if (!Objects.isNull(fields)) { + if (!Objects.isNull(dto.getExtendFields())) { + //鑾峰彇16浣島uid + String uuid16 = CommonUtil.randomUUID16(); + Map<String, Object> extendFields = dto.getExtendFields(); + //瀛楁闆嗗悎鐢虫槑 + List<FieldsItem> fieldsItems = new ArrayList<>(); + extendFields.keySet().forEach(key -> { + fields.forEach(obj -> { + //鍒ゆ柇key鍊间笌fields琛ㄥ瓧娈垫槸鍚︾浉鍚� + if (obj.getFields().equals(key)) { + FieldsItem fieldsItem = new FieldsItem(); + fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId()) + .setShiperId(matnr.getShipperId()) + .setValue(extendFields.get(key).toString()) + .setUuid(uuid16); + + fieldsItems.add(fieldsItem); + //鍞竴鏍囪瘑鍏ュ簱 + item.setFieldsIndex(uuid16); + } + }); + }); + if (!fieldsItemService.saveBatch(fieldsItems)) { + throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒"); + } + } + } allOrders.add(item); + }); if (!warehouseAreasItemService.saveBatch(allOrders)) { @@ -196,7 +237,7 @@ if (Objects.isNull(params.getAsnCode())) { throw new CoolException("閫氱煡鍗曚笉鑳戒负绌猴紒锛�"); } - AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() + List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) .eq(!Objects.isNull(params.getBarcode()) ,AsnOrderItem::getBarcode, params.getBarcode())); @@ -232,49 +273,67 @@ } /** - * 鑾峰彇ReceiptDetlsDto + * @author Ryan + * @description 鑾峰彇鎵�鏈夊惎鐢ㄥ姩鎬佸瓧娈� + * @param + * @return + * @time 2025/3/12 09:23 */ - private R getAsnOrderItem(AsnOrderItem asnOrderItem) { - ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); + @Override + public List<Fields> getDynamicFields() { + return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); + } - detlsDto.setAsnCode(asnOrderItem.getAsnCode()) - .setMatnk(asnOrderItem.getMatnk()) - .setBarcode(asnOrderItem.getBarcode()) - .setPoCode(asnOrderItem.getPoCode()) - .setPurQty(asnOrderItem.getAnfme()) - .setSplrBatch(asnOrderItem.getSplrBatch()); + /** + * 鑾峰彇ReceiptDetlsDtos + */ + private R getAsnOrderItem(List<AsnOrderItem> items) { + List<ReceiptDetlsDto> detlsDtos = new ArrayList<>(); + items.forEach(asnOrderItem -> { + ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); - Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId()); - if (Objects.isNull(matnr)) { - throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒"); - } - //SET 鐗╂枡鏈�澶у瓨鏀炬暟閲� - detlsDto.setMaxQty(matnr.getMaxQty()) - .setMatnrId(matnr.getId()) - .setStockUnit(matnr.getStockUnit()); - QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() - .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId())); - if (!Objects.isNull(inspect)) { - //set 璐ㄦ缁撴灉 - detlsDto.setInspect(inspect.getStatus$()); - } - //鑾峰彇褰撳墠搴撳瓨淇℃伅 - StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>() - .eq(StockItem::getAsnItemId, asnOrderItem.getId()) - .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId())); - //SET 褰撳墠搴撳瓨鏁伴噺 - if (Objects.isNull(stockItem)) { - detlsDto.setStockQty(0.0); - } else { - detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); - } + detlsDto.setAsnCode(asnOrderItem.getAsnCode()) + .setMatnk(asnOrderItem.getMatnk()) + .setBarcode(asnOrderItem.getBarcode()) + .setPoCode(asnOrderItem.getPoCode()) + .setPurQty(asnOrderItem.getAnfme()) + .setSplrBatch(asnOrderItem.getSplrBatch()); - //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭� - PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); - //SET 骞冲彴琛屽彿 - detlsDto.setPlatformId(purchaseItem.getPlatItemId()); + Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId()); + if (Objects.isNull(matnr)) { + throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒"); + } + //SET 鐗╂枡鏈�澶у瓨鏀炬暟閲� + detlsDto.setMaxQty(matnr.getMaxQty()) + .setMatnrId(matnr.getId()) + .setStockUnit(matnr.getStockUnit()); + QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() + .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId())); + if (!Objects.isNull(inspect)) { + //set 璐ㄦ缁撴灉 + detlsDto.setInspect(inspect.getStatus$()); + } + //鑾峰彇褰撳墠搴撳瓨淇℃伅 + StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>() + .eq(StockItem::getAsnItemId, asnOrderItem.getId()) + .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId())); + //SET 褰撳墠搴撳瓨鏁伴噺 + if (Objects.isNull(stockItem)) { + detlsDto.setStockQty(0.0); + } else { + detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); + } - return R.ok(detlsDto); + //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭� + PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); + //SET 骞冲彴琛屽彿 + detlsDto.setPlatformId(purchaseItem.getPlatItemId()); + + detlsDtos.add(detlsDto); + }); + + + return R.ok(detlsDtos); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java index 7fc4da5..addfeef 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java @@ -22,9 +22,9 @@ // generator.username="sa"; // generator.password="Zoneyung@zy56$"; - generator.table="sys_fields_item"; - generator.tableDesc="鎵╁睍瀛楁鏄庣粏琛�"; - generator.packagePath="com.vincent.rsf.server.system"; + generator.table="man_qly_inspect"; + generator.tableDesc="璐ㄦ淇℃伅"; + generator.packagePath="com.vincent.rsf.server.manager"; generator.build(); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java new file mode 100644 index 0000000..c9f0206 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java @@ -0,0 +1,58 @@ +package com.vincent.rsf.server.common.utils; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.common.SpringUtils; +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.context.annotation.Configuration; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Ryan + * @version 1.0 + * @title FieldsUtils + * @description + * @create 2025/3/12 12:33 + */ + +public class FieldsUtils { + + /** + * @author Ryan + * @description 閫氳繃瀛楁鍞竴鏍囪瘑鑾峰彇鍔ㄦ�佸瓧娈礛ap + * @param + * @return + * @time 2025/3/12 12:50 + */ + public static Map<String, String> getFields(String uuid) { + Map<String, String> fieldsMap = new HashMap<>(); + FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); + List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); + if (fields.isEmpty()) { + return null; + } + FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); + List<FieldsItem> fieldsItems = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, uuid)); + for (Fields field : fields ) { + if (fieldsItems.isEmpty()) { + fieldsMap.put(field.getFields(), null); + continue; + } + fieldsItems.forEach(fieldsItem -> { + if (fieldsItem.getFieldsId().equals(field.getId())) { + fieldsMap.put(field.getFields(), fieldsItem.getValue()); + } + }); + } + + return fieldsMap; + } + +} 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 02f32e6..8e070ac 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 @@ -60,9 +60,7 @@ @ApiOperation("淇濆瓨") public R save(@RequestBody AsnOrder asnOrder) { asnOrder.setCreateBy(getLoginUserId()); - asnOrder.setCreateTime(new Date()); asnOrder.setUpdateBy(getLoginUserId()); - asnOrder.setUpdateTime(new Date()); if (!asnOrderService.save(asnOrder)) { return R.error("Save Fail"); } @@ -133,5 +131,11 @@ } } + @PostMapping("/asnOrder") + @ApiOperation("ASN瀵煎叆鎺ュ彛") + @PreAuthorize("hasAuthority('manager:asnOrder:update')") + public R importExcel() { + return R.ok(); + } } 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 118c505..a4a54c6 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 @@ -56,9 +56,8 @@ @PostMapping("/asnOrderItem/save") public R save(@RequestBody AsnOrderItem asnOrderItem) { asnOrderItem.setCreateBy(getLoginUserId()); - asnOrderItem.setCreateTime(new Date()); asnOrderItem.setUpdateBy(getLoginUserId()); - asnOrderItem.setUpdateTime(new Date()); +// asnOrderItemService.getFieldsExtend if (!asnOrderItemService.save(asnOrderItem)) { return R.error("Save Fail"); } 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 3b4fc39..29842a3 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 @@ -137,13 +137,11 @@ @PreAuthorize("hasAuthority('manager:matnr:save')") @ApiOperation(value = "excel琛ㄦ牸瀵煎叆鐗╂枡淇℃伅") @PostMapping("/matnr/import") - public R listImport(@RequestParam MultipartFile file) throws Exception { + public R listImport(MultipartFile file) throws Exception { if (Objects.isNull(file)) { throw new CoolException("鏂囦欢涓嶈兘涓虹┖锛侊紒"); } - matnrService.importExcels(file); - - return R.ok(); + return matnrService.importExcels(file); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java index f2e71f2..7bd0a7c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java @@ -12,6 +12,7 @@ import com.vincent.rsf.server.manager.entity.WarehouseAreasItem; import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; import com.vincent.rsf.server.system.controller.BaseController; +import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -19,6 +20,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; +@Api(tags = "搴撳尯搴撳瓨鏄庣粏") @RestController public class WarehouseAreasItemController extends BaseController { @@ -36,10 +38,11 @@ @PreAuthorize("hasAuthority('manager:warehouseAreasItem:list')") @PostMapping("/warehouseAreasItem/list") public R list(@RequestBody Map<String, Object> map) { - return R.ok().add(warehouseAreasItemService.list()); + return R.ok(warehouseAreasItemService.getList()); +// return R.ok().add(warehouseAreasItemService.list()); } - @PreAuthorize("hasAuthority('manager:warehouseAreasItem:list')") + @PreAuthorize("hasAuthority('manager:warehouseAreasItem:list' )") @PostMapping({"/warehouseAreasItem/many/{ids}", "/warehouseAreasItems/many/{ids}"}) public R many(@PathVariable Long[] ids) { return R.ok().add(warehouseAreasItemService.listByIds(Arrays.asList(ids))); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java index 226114d..f1e98da 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java @@ -6,14 +6,10 @@ import lombok.experimental.Accessors; 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; @@ -21,7 +17,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 @Accessors(chain = true) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java index b4af411..d127f14 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java @@ -9,6 +9,7 @@ import com.vincent.rsf.server.manager.service.CompanysService; import com.vincent.rsf.server.manager.service.MatnrGroupService; import com.vincent.rsf.server.manager.service.ShipperService; +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -27,6 +28,7 @@ @Data @TableName("man_matnr") +@Accessors(chain = true) @ApiModel(value = "Matnr", description = "鐗╂枡鎵�鏈夊熀纭�灞炴��") public class Matnr implements Serializable { @@ -67,6 +69,12 @@ private Long groupId; /** + * 鍒嗙粍鍔╄鐮� + */ + @ApiModelProperty(value = "鍒嗙粍鍔╄鐮�") + private String groupCode; + + /** * 瑙勫垯浠g爜 */ @ApiModelProperty(value= "瑙勫垯浠g爜") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java index 01005f3..d0b12a5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java @@ -1,6 +1,7 @@ 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; @@ -10,10 +11,7 @@ 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; @@ -23,9 +21,11 @@ import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Date; +import java.util.Map; @Data @Accessors(chain = true) +@ApiModel(value = "WarehouseAreasItem", description = "搴撳尯搴撳瓨淇℃伅") @TableName("man_warehouse_areas_item") public class WarehouseAreasItem implements Serializable { @@ -55,6 +55,9 @@ */ @ApiModelProperty(value= "鐗╂枡鏍囪瘑") private Long matnrId; + + @ApiModelProperty(value = "鎵╁睍瀛楁鍞竴鏍囪瘑") + private String fieldsIndex; /** * 鐗╂枡鍚嶇О @@ -179,6 +182,10 @@ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; + @ApiModelProperty("鎵╁睍瀛楁") + @TableField(exist = false) + private Map<String, String> extendFields; + /** * 澶囨敞 */ 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 7ecf8b2..8ea3665 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 @@ -30,9 +30,9 @@ @ExcelComment(example = "鍗庝负鎵嬫満") private String name; - @Excel(name = "璐т富缂栫爜") - @ExcelComment(example = "PO12625") - private String shipperCode; + @Excel(name = "鍒嗙被鍔╄鐮�") + @ExcelComment(example = "256874556") + private String groupCode; @Excel(name = "鍒嗙被鍚嶇О") @ExcelComment(example = "绉诲姩璁惧") @@ -79,7 +79,7 @@ private String purUnit; @Excel(name = "ABC绫�") - @ExcelComment(notNull = false, example = "A") + @ExcelComment(notNull = false, example = "0") private String stockLevel; @Excel(name = "瀹夊叏搴撳瓨閲�") @@ -107,11 +107,11 @@ private String barcode; @Excel(name = "鏁堟湡棰勮闃堝��") - @ExcelComment(notNull = false, example = "2025-01-25 14:25:36") + @ExcelComment(notNull = false, example = "90") private String validWarn; @Excel(name = "鏄惁鍏嶆") - @ExcelComment(notNull = false, example = "鍚�") + @ExcelComment(notNull = false, example = "0") private String flagCheck; private Integer rowNum; 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 cf99f59..bf9ce37 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 @@ -92,7 +92,6 @@ throw new CoolException("ASN鍗曟嵁淇濆瓨澶辫触锛侊紒"); } List<AsnOrderItem> orderItems = new ArrayList<>(); - String uuid16 = CommonUtil.randomUUID16(); items.forEach(item -> { AsnOrderItem orderItem = new AsnOrderItem(); Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, item.getMatnrCode())); @@ -115,12 +114,6 @@ .setPurUnit(item.getUnit()) .setMatnk(matnr.getName()) .setMatnrId(matnr.getId() + ""); - //鍒ゆ柇PO鍗曟槸鍚﹀凡璁剧疆鍔ㄦ�佸瓧娈电储寮� - if (Objects.isNull(item.getFieldsIndex())) { - orderItem.setFieldsIndex(uuid16); - } else { - orderItem.setFieldsIndex(item.getFieldsIndex()); - } orderItems.add(orderItem); }); if (!asnOrderItemService.saveBatch(orderItems)) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java index d17885a..435af53 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java @@ -1,12 +1,11 @@ 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.Matnr; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; - public interface MatnrService extends IService<Matnr> { - void importExcels(MultipartFile file) throws Exception; + R importExcels(MultipartFile file) throws Exception; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseAreasItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseAreasItemService.java index 594363f..3018867 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseAreasItemService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseAreasItemService.java @@ -3,6 +3,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.server.manager.entity.WarehouseAreasItem; +import java.util.List; +import java.util.Map; + public interface WarehouseAreasItemService extends IService<WarehouseAreasItem> { + List<WarehouseAreasItem> getList(); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java index 8ffcc4f..ccfd8ca 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java @@ -2,33 +2,81 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +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.ExcelUtil; +import com.vincent.rsf.server.manager.entity.MatnrGroup; import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; import com.vincent.rsf.server.manager.mapper.MatnrMapper; import com.vincent.rsf.server.manager.entity.Matnr; +import com.vincent.rsf.server.manager.service.MatnrGroupService; import com.vincent.rsf.server.manager.service.MatnrService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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 java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; @Service("matnrService") public class MatnrServiceImpl extends ServiceImpl<MatnrMapper, Matnr> implements MatnrService { + @Autowired + private MatnrGroupService matnrGroupService; + /** + * @return + * @throws * @author Ryan * @description 鐗╂枡鏁版嵁瀵煎叆鎺ュ鐞嗗疄鐜� - * @throws - * @return * @time 2025/3/3 13:08 */ @Override @Transactional(rollbackFor = Exception.class) - public void importExcels(MultipartFile file) throws Exception { + public R importExcels(MultipartFile file) throws Exception { //璇诲彇涓婁紶鏂囦欢鍐呭 ExcelImportResult<MatnrsTemplate> result = ExcelImportUtil.importExcelMore(file.getInputStream(), MatnrsTemplate.class, ExcelUtil.getDefaultImportParams()); - //TODO 鐗╂枡鍐欏叆澶勭悊 + if (result.getList().isEmpty()) { + throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒"); + } + List<Matnr> matnrs = new ArrayList<>(); + result.getList().forEach(template -> { + Matnr matnr = new Matnr(); + matnr.setBarcode(template.getBarcode()) + .setCode(template.getErpCode()) + .setDescrible(template.getDescrible()) + .setColor(template.getColor()) + .setFlagCheck(Short.parseShort(template.getFlagCheck())) + .setWeight(Double.parseDouble(template.getWeight())) + .setValidWarn(Integer.parseInt(template.getValidWarn())) + .setValid(Integer.parseInt(template.getValid())) + .setUnit(template.getUnit()) + .setStockUnit(template.getPurUnit()) + .setSpec(template.getSpec()) + .setStagn(Integer.parseInt(template.getStagn())) + .setModel(template.getModel()) + .setGroupCode(template.getGroupCode()) + .setPurUnit(template.getPurUnit()) + .setStockLevel(Short.parseShort(template.getStockLevel())) + .setSafeQty(Double.parseDouble(template.getSafeQty())) + .setMinQty(Double.parseDouble(template.getMinQty())); + if (Objects.isNull(template.getGroupCode()) && Objects.isNull(template.getGroupName())) { + MatnrGroup matnrGroups = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>() + .eq(!Objects.isNull(template.getGroupCode()), MatnrGroup::getCode, template.getGroupCode()) + .eq(!Objects.isNull(template.getGroupName()),MatnrGroup::getName, template.getName())); + matnr.setGroupId(matnrGroups.getId()); + } + + matnrs.add(matnr); + }); + + if (!this.saveBatch(matnrs)) { + throw new CoolException("瀵煎叆澶辫触锛侊紒"); + } + return R.ok("瀵煎叆鎴愬姛锛侊紒"); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseAreasItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseAreasItemServiceImpl.java index 430cd8e..bc7d6c3 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseAreasItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseAreasItemServiceImpl.java @@ -1,12 +1,27 @@ package com.vincent.rsf.server.manager.service.impl; +import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.manager.mapper.WarehouseAreasItemMapper; import com.vincent.rsf.server.manager.entity.WarehouseAreasItem; import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Objects; + @Service("warehouseAreasItemService") public class WarehouseAreasItemServiceImpl extends ServiceImpl<WarehouseAreasItemMapper, WarehouseAreasItem> implements WarehouseAreasItemService { + @Override + public List<WarehouseAreasItem> getList() { + List<WarehouseAreasItem> areasItems = this.list(); + for (WarehouseAreasItem areasItem : areasItems) { + if (Objects.isNull(areasItem.getFieldsIndex())) { + continue; + } + areasItem.setExtendFields(FieldsUtils.getFields(areasItem.getFieldsIndex())); + } + return areasItems; + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Fields.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Fields.java index b0c0f07..3b1d374 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Fields.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Fields.java @@ -21,6 +21,7 @@ @Data @TableName("sys_fields") +@ApiModel(value = "Fields", description = "鍔ㄦ�佸瓧娈�") public class Fields implements Serializable { private static final long serialVersionUID = 1L; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FieldsItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FieldsItem.java index 4f0d218..eedc181 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FieldsItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/entity/FieldsItem.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; + +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -22,6 +24,7 @@ import java.util.Date; @Data +@Accessors(chain = true) @TableName("sys_fields_item") public class FieldsItem implements Serializable { -- Gitblit v1.9.1