From 97304f6bb74875063755e53721d44b2f2a587cc5 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 15 三月 2025 17:32:41 +0800 Subject: [PATCH] #修改 1. mybatis Map驼峰不转换问题修复 2. 字段修改导致接口显示问题修复 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 13 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 30 ++-- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/AsnOrderAndItemsParams.java | 28 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java | 3 rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml | 36 ++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 16 +- /dev/null | 12 -- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java | 95 +++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 42 +++--- rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java | 25 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 32 +++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java | 10 + rsf-server/src/main/resources/application.yml | 1 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java | 12 ++ 16 files changed, 301 insertions(+), 57 deletions(-) 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 a5b525b..426cf07 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 @@ -35,7 +35,7 @@ private String poCode; @ApiModelProperty("鐗╂枡鍚嶇О") - private String matnk; + private String maktx; @ApiModelProperty("渚涘簲鍟嗘壒娆�") private String splrBatch; 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 798c9d7..527cf7b 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 @@ -204,7 +204,6 @@ .setShiperId(matnr.getShipperId()) .setValue(extendFields.get(key).toString()) .setUuid(uuid16); - fieldsItems.add(fieldsItem); //鍞竴鏍囪瘑鍏ュ簱 item.setFieldsIndex(uuid16); @@ -294,7 +293,7 @@ ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); detlsDto.setAsnCode(asnOrderItem.getAsnCode()) - .setMatnk(asnOrderItem.getMaktx()) + .setMaktx(asnOrderItem.getMaktx()) .setBarcode(asnOrderItem.getBarcode()) .setPoCode(asnOrderItem.getPoCode()) .setPurQty(asnOrderItem.getAnfme()) @@ -325,14 +324,17 @@ detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); } - //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭� - PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); - //SET 骞冲彴琛屽彿 - detlsDto.setPlatformId(purchaseItem.getPlatItemId()); + if (!Objects.isNull(asnOrderItem.getPoDetlId())) { + //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭� + PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); + if (Objects.isNull(purchaseItem)) { + //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/config/MybatisPlusConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java index d955fd9..3f58834 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java @@ -1,5 +1,8 @@ package com.vincent.rsf.server.common.config; +import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; +import com.baomidou.mybatisplus.core.MybatisConfiguration; +import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; @@ -12,6 +15,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.transaction.annotation.EnableTransactionManagement; import java.util.Arrays; @@ -22,6 +26,7 @@ * @since 2018-02-22 11:29:28 */ @Configuration +@EnableTransactionManagement public class MybatisPlusConfig { @Bean @@ -78,4 +83,24 @@ return new LongValue(1); } + + /** + * 瑙e喅Map鏄犲皠闈為┘宄� + * @return + */ + @Bean + public ConfigurationCustomizer mybatisConfigurationCustomizer(){ + return new ConfigurationCustomizer() { + /** + * Customize the given a {@link MybatisConfiguration} object. + * + * @param configuration the configuration object to customize + */ + @Override + public void customize(MybatisConfiguration configuration) { + configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory()); + } + }; + } + } 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 8453c56..0f8d3ec 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 @@ -10,6 +10,7 @@ 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.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.manager.service.AsnOrderService; import com.vincent.rsf.server.system.constant.SerialRuleCode; @@ -54,6 +55,7 @@ } @PreAuthorize("hasAuthority('manager:asnOrder:list')") + @OperationLog("琛ㄥ崟鏌ヨ") @GetMapping("/asnOrder/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(asnOrderService.getById(id)); @@ -159,4 +161,15 @@ } return asnOrderService.generateBarcode(orders); } + + + @PostMapping("/asnOrder/items/save") + @ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�") + @PreAuthorize("hasAuthority('manager:asnOrder:save')") + public R orderAndItem(@RequestBody AsnOrderAndItemsParams params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return asnOrderService.saveOrderAndItems(params); + } } 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 dff2932..d192832 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 @@ -1,28 +1,20 @@ 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; import com.vincent.rsf.server.common.domain.KeyValVo; 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; @@ -30,10 +22,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; -import java.util.stream.Collectors; @Api(tags = "ASN鍗曟槑缁�") @RestController @@ -43,11 +33,12 @@ private AsnOrderItemService asnOrderItemService; @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") + @ApiOperation("鍒嗛〉鑾峰彇鍒楄〃") @PostMapping("/asnOrderItem/page") public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<AsnOrderItem, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrderItem.class); - return R.ok().add(asnOrderItemService.page(pageParam, pageParam.buildWrapper(true))); + return R.ok().add(asnOrderItemService.listByAsnId(pageParam, pageParam.buildWrapper(true))); } @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") @@ -84,6 +75,19 @@ return R.ok("Save Success"); } + + @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") + @ApiOperation("鑾峰彇ASN鍗曟槑缁嗕俊鎭�") + @PostMapping("/asnOrderItem/all/list") + public R listByAsnId(@RequestBody Map<String, Object> map) { + if (Objects.isNull(map)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return R.ok(); +// return asnOrderItemService.listByAsnId(map); + } + + @PreAuthorize("hasAuthority('manager:asnOrderItem:update')") @OperationLog("Update ASN鍗曟嵁") @@ -123,7 +127,7 @@ @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") @PostMapping("/asnOrderItem/export") - @ApiOperation("鏀惰揣閫氱煡鍗曟槑缁�") + @ApiOperation("瀵煎嚭鏀惰揣閫氱煡鍗曟槑缁�") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class); List<AsnOrderTemplate> list = new ArrayList<>(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java index 112b6f7..f32b867 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java @@ -109,4 +109,5 @@ ExcelUtil.build(ExcelUtil.create(qlyInspectService.list(), QlyInspect.class), response); } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/AsnOrderAndItemsParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/AsnOrderAndItemsParams.java new file mode 100644 index 0000000..411eade --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/AsnOrderAndItemsParams.java @@ -0,0 +1,28 @@ +package com.vincent.rsf.server.manager.controller.params; + +import com.vincent.rsf.server.manager.entity.AsnOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author Ryan + * @version 1.0 + * @title AsnOrderAndItemsParams + * @description + * @create 2025/3/15 08:52 + */ +@Data +@ApiModel(value = "AsnOrderAndItemsParams", description = "涓诲崟鏄庣粏") +public class AsnOrderAndItemsParams implements Serializable { + + @ApiModelProperty("涓诲崟淇℃伅") + private AsnOrder orders; + + @ApiModelProperty("鏄庣粏") + private List<Map<String, Object>> items; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java index 48b4de4..25d621b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java @@ -1,12 +1,24 @@ package com.vincent.rsf.server.manager.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; + +import java.util.Map; @Mapper @Repository public interface AsnOrderItemMapper extends BaseMapper<AsnOrderItem> { + IPage<Map<String, Object>> resultForMap(PageParam<AsnOrderItem, BaseParam> pages, @Param(Constants.WRAPPER) QueryWrapper<AsnOrderItem> buildWrapper); + +// List<Map<String, Object>> resultForMap(long pageParam, @Param(Constants.WRAPPER) QueryWrapper<AsnOrderItem> ew); + } 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 c677466..3b15e3a 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 @@ -1,12 +1,14 @@ package com.vincent.rsf.server.manager.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; -import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -15,4 +17,8 @@ R excelImport(MultipartFile file, HashMap<String, Object> hashMap) throws Exception; 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/AsnOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java index 3ea6b5d..5f9e5c8 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 @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.entity.AsnOrder; import java.util.List; @@ -14,4 +15,6 @@ R generateBarcode(List<AsnOrder> orders); List<AsnOrder> getListByMatnr(Map<String, String> params); + + R saveOrderAndItems(AsnOrderAndItemsParams params); } 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 60596bb..c9e55fa 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 @@ -4,9 +4,12 @@ import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; 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.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; 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; @@ -15,10 +18,9 @@ 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 com.vincent.rsf.server.system.utils.ExtendFieldsUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +38,7 @@ @Autowired private FieldsService fieldsService; + @Autowired private FieldsItemService fieldsItemService; @@ -69,28 +72,23 @@ @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("鍗曟嵁鏄庣粏鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒"); - } - } + //淇濆瓨鎵╁睍瀛楁 + ExtendFieldsUtils.saveFields(params); AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class); - if (!this.save(asnOrderItem)) { + if (!this.saveOrUpdate(asnOrderItem)) { throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); } return true; } + + @Override + public IPage<Map<String, Object>> listByAsnId(PageParam<AsnOrderItem, BaseParam> pageParam, QueryWrapper<AsnOrderItem> buildWrapper) { + IPage<Map<String, Object>> hsahMap = this.baseMapper.resultForMap(pageParam, buildWrapper); + if (hsahMap.getRecords().isEmpty()) { + return hsahMap.setRecords(new ArrayList<>()); + } + hsahMap.setRecords(ExtendFieldsUtils.getExtendFields(hsahMap.getRecords())); + return hsahMap; + + } } 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 99da85e..098d817 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 @@ -6,6 +6,7 @@ import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.api.service.ReportMsgService; +import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; @@ -98,4 +99,35 @@ return this.listByIds(longList); } + + @Override + public R saveOrderAndItems(AsnOrderAndItemsParams params) { + if (Objects.isNull(params.getOrders())) { + throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖"); + } + AsnOrder orders = params.getOrders(); + + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, orders); + if (Objects.isNull(ruleCode)) { + throw new CoolException("鏀惰揣閫氱煡鍗曠紪鐮佺敓鎴愬け璐ワ紒锛�"); + } + orders.setCode(ruleCode); + if (!this.save(orders)) { + throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒"); + } + if (params.getItems().isEmpty()) { + throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕笉鑳戒负瀵掗鑺傦紒锛�"); + } + params.getItems().forEach(item -> { + item.put("asnId", orders.getId()); + item.put("asnCode", orders.getCode()); + item.put("poCode", orders.getPoCode()); + + if (!asnOrderItemService.fieldsSave(item)) { + throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + + }); + return R.ok("淇濆瓨鎴愬姛!!"); + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java new file mode 100644 index 0000000..8972eff --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java @@ -0,0 +1,95 @@ +package com.vincent.rsf.server.system.utils; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.common.SpringUtils; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.utils.CommonUtil; +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 java.util.*; + +/** + * @author Ryan + * @version 1.0 + * @title ExtendFieldsUtils + * @description + * @create 2025/3/15 12:40 + */ +public class ExtendFieldsUtils { + + /** + * @author Ryan + * @description 鏄庣粏鍗曟嵁淇濆瓨鎵╁睍瀛楁 + * @param + * @return + * @time 2025/3/15 13:36 + */ + public static Boolean saveFields(Map<String, Object> params) { + FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); + 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); + } + params.put("fieldsIndex", uuid16); + } + FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); + if (!fieldsItemService.saveBatch(fieldsItems)) { + throw new CoolException("鍗曟嵁鏄庣粏鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒"); + } + } + return true; + } + + + /** + * @author Ryan + * @description 鑾峰彇鎵╁睍瀛楁key-value鍊� + * @param + * @return + * @time 2025/3/15 15:05 + */ + public static List<Map<String, Object>> getExtendFields(List<Map<String, Object>> params) { + FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); + List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>() + .eq(Fields::getStatus, 1) + .eq(Fields::getFlagEnable, 1)); + FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class); + List<Map<String, Object>> result = new ArrayList<>(); + for (Map<String, Object> param : params) { + result.add(param); + if (Objects.isNull(param.get("fieldsIndex"))) { + continue; + } + List<FieldsItem> itemList = fieldsItemService + .list(new LambdaQueryWrapper<FieldsItem>() + .eq(FieldsItem::getUuid, param.get("fieldsIndex"))); + if (itemList.isEmpty()) { + continue; + } + fields.forEach(fds -> { + for (FieldsItem fieldsItem : itemList) { + if (!Objects.isNull(fieldsItem.getFieldsId()) && fieldsItem.getFieldsId().equals(fds.getId())) { + param.put(fds.getFields(), fieldsItem.getValue()); + } + } + }); + } + + return result; + } +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/test/controller/QlyInspectController.java b/rsf-server/src/main/java/com/vincent/rsf/server/test/controller/QlyInspectController.java deleted file mode 100644 index 573f495..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/test/controller/QlyInspectController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.vincent.rsf.server.test.controller; - -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.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.test.entity.QlyInspect; -import com.vincent.rsf.server.test.service.QlyInspectService; -import com.vincent.rsf.server.system.controller.BaseController; -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 java.util.*; - -@RestController -public class QlyInspectController extends BaseController { - - @Autowired - private QlyInspectService qlyInspectService; - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @PostMapping("/qlyInspect/page") - public R page(@RequestBody Map<String, Object> map) { - BaseParam baseParam = buildParam(map, BaseParam.class); - PageParam<QlyInspect, BaseParam> pageParam = new PageParam<>(baseParam, QlyInspect.class); - return R.ok().add(qlyInspectService.page(pageParam, pageParam.buildWrapper(true))); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @PostMapping("/qlyInspect/list") - public R list(@RequestBody Map<String, Object> map) { - return R.ok().add(qlyInspectService.list()); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @PostMapping({"/qlyInspect/many/{ids}", "/qlyInspects/many/{ids}"}) - public R many(@PathVariable Long[] ids) { - return R.ok().add(qlyInspectService.listByIds(Arrays.asList(ids))); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @GetMapping("/qlyInspect/{id}") - public R get(@PathVariable("id") Long id) { - return R.ok().add(qlyInspectService.getById(id)); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:save')") - @OperationLog("Create 璐ㄦ淇℃伅") - @PostMapping("/qlyInspect/save") - public R save(@RequestBody QlyInspect qlyInspect) { - qlyInspect.setCreateBy(getLoginUserId()); - qlyInspect.setCreateTime(new Date()); - qlyInspect.setUpdateBy(getLoginUserId()); - qlyInspect.setUpdateTime(new Date()); - if (!qlyInspectService.save(qlyInspect)) { - return R.error("Save Fail"); - } - return R.ok("Save Success").add(qlyInspect); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:update')") - @OperationLog("Update 璐ㄦ淇℃伅") - @PostMapping("/qlyInspect/update") - public R update(@RequestBody QlyInspect qlyInspect) { - qlyInspect.setUpdateBy(getLoginUserId()); - qlyInspect.setUpdateTime(new Date()); - if (!qlyInspectService.updateById(qlyInspect)) { - return R.error("Update Fail"); - } - return R.ok("Update Success").add(qlyInspect); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:remove')") - @OperationLog("Delete 璐ㄦ淇℃伅") - @PostMapping("/qlyInspect/remove/{ids}") - public R remove(@PathVariable Long[] ids) { - if (!qlyInspectService.removeByIds(Arrays.asList(ids))) { - return R.error("Delete Fail"); - } - return R.ok("Delete Success").add(ids); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @PostMapping("/qlyInspect/query") - public R query(@RequestParam(required = false) String condition) { - List<KeyValVo> vos = new ArrayList<>(); - LambdaQueryWrapper<QlyInspect> wrapper = new LambdaQueryWrapper<>(); - if (!Cools.isEmpty(condition)) { - wrapper.like(QlyInspect::getId, condition); - } - qlyInspectService.page(new Page<>(1, 30), wrapper).getRecords().forEach( - item -> vos.add(new KeyValVo(item.getId(), item.getId())) - ); - return R.ok().add(vos); - } - - @PreAuthorize("hasAuthority('test:qlyInspect:list')") - @PostMapping("/qlyInspect/export") - public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { - ExcelUtil.build(ExcelUtil.create(qlyInspectService.list(), QlyInspect.class), response); - } - -} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/test/entity/QlyInspect.java b/rsf-server/src/main/java/com/vincent/rsf/server/test/entity/QlyInspect.java deleted file mode 100644 index 13d8af9..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/test/entity/QlyInspect.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.vincent.rsf.server.test.entity; - -import com.baomidou.mybatisplus.annotation.TableLogic; -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; -import com.vincent.rsf.framework.common.SpringUtils; -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_inspect") -public class QlyInspect implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * ID - */ - @ApiModelProperty(value= "ID") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 缂栫爜 - */ - @ApiModelProperty(value= "缂栫爜") - private String code; - - /** - * 涓氬姟绫诲瀷 - */ - @ApiModelProperty(value= "涓氬姟绫诲瀷") - private String wkType; - - /** - * 鍚堟牸鏁伴噺 - */ - @ApiModelProperty(value= "鍚堟牸鏁伴噺") - private Double safeQty; - - /** - * 閫佽揣鏁伴噺 - */ - @ApiModelProperty(value= "閫佽揣鏁伴噺") - private Double dlyQty; - - /** - * 鏀惰揣鏁伴噺 - */ - @ApiModelProperty(value= "鏀惰揣鏁伴噺") - private Double rcptQty; - - /** - * 璐ㄦ鏁伴噺 - */ - @ApiModelProperty(value= "璐ㄦ鏁伴噺") - private Double isptQty; - - /** - * 鐘舵�� 1: 璐ㄦ瀹屾垚 0: 寰呰川妫� 2: 璐ㄦ涓� 3: 鍏抽棴 - */ - @ApiModelProperty(value= "鐘舵�� 1: 璐ㄦ瀹屾垚 0: 寰呰川妫� 2: 璐ㄦ涓� 3: 鍏抽棴 ") - private Integer status; - - /** - * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� - */ - @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") - @TableLogic - private Integer deleted; - - /** - * 绉熸埛 - */ - @ApiModelProperty(value= "绉熸埛") - private Integer tenantId; - - /** - * 娣诲姞浜哄憳 - */ - @ApiModelProperty(value= "娣诲姞浜哄憳") - private Long createBy; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - private Long updateBy; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - public QlyInspect() {} - - public QlyInspect(String code,String wkType,Double safeQty,Double dlyQty,Double rcptQty,Double isptQty,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { - this.code = code; - this.wkType = wkType; - this.safeQty = safeQty; - this.dlyQty = dlyQty; - this.rcptQty = rcptQty; - this.isptQty = isptQty; - this.status = status; - this.deleted = deleted; - this.tenantId = tenantId; - this.createBy = createBy; - this.createTime = createTime; - this.updateBy = updateBy; - this.updateTime = updateTime; - this.memo = memo; - } - -// QlyInspect qlyInspect = new QlyInspect( -// null, // 缂栫爜[闈炵┖] -// null, // 涓氬姟绫诲瀷 -// null, // 鍚堟牸鏁伴噺 -// null, // 閫佽揣鏁伴噺 -// null, // 鏀惰揣鏁伴噺 -// null, // 璐ㄦ鏁伴噺 -// null, // 鐘舵�乕闈炵┖] -// null, // 鏄惁鍒犻櫎[闈炵┖] -// null, // 绉熸埛 -// null, // 娣诲姞浜哄憳 -// null, // 娣诲姞鏃堕棿[闈炵┖] -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿[闈炵┖] -// null // 澶囨敞 -// ); - - public String getStatus$(){ - if (null == this.status){ return null; } - switch (this.status){ - case 1: - return "璐ㄦ瀹屾垚"; - case 0: - return "寰呰川妫�"; - case 2: - return "璐ㄦ涓�"; - case 3: - return "鍏抽棴"; - default: - return String.valueOf(this.status); - } - } - - public String getCreateBy$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.getById(this.createBy); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getNickname()); - } - return null; - } - - public String getCreateTime$(){ - if (Cools.isEmpty(this.createTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); - } - - public String getUpdateBy$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.getById(this.updateBy); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getNickname()); - } - return null; - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - - - public Boolean getStatusBool(){ - if (null == this.status){ return null; } - switch (this.status){ - case 1: - return true; - case 0: - return false; - default: - return null; - } - } - -} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/test/mapper/QlyInspectMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/test/mapper/QlyInspectMapper.java deleted file mode 100644 index 0df2c7a..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/test/mapper/QlyInspectMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.vincent.rsf.server.test.mapper; - -import com.vincent.rsf.server.test.entity.QlyInspect; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface QlyInspectMapper extends BaseMapper<QlyInspect> { - -} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/test/service/QlyInspectService.java b/rsf-server/src/main/java/com/vincent/rsf/server/test/service/QlyInspectService.java deleted file mode 100644 index 023eeeb..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/test/service/QlyInspectService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.vincent.rsf.server.test.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.vincent.rsf.server.test.entity.QlyInspect; - -public interface QlyInspectService extends IService<QlyInspect> { - -} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/test/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/test/service/impl/QlyInspectServiceImpl.java deleted file mode 100644 index db841c4..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/test/service/impl/QlyInspectServiceImpl.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.vincent.rsf.server.test.service.impl; - -import com.vincent.rsf.server.test.mapper.QlyInspectMapper; -import com.vincent.rsf.server.test.entity.QlyInspect; -import com.vincent.rsf.server.test.service.QlyInspectService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -@Service("qlyInspectService") -public class QlyInspectServiceImpl extends ServiceImpl<QlyInspectMapper, QlyInspect> implements QlyInspectService { - -} diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml index 94a4edf..e416c3e 100644 --- a/rsf-server/src/main/resources/application.yml +++ b/rsf-server/src/main/resources/application.yml @@ -26,6 +26,7 @@ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true cache-enabled: true +# object-wrapper-factory: com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory global-config: :banner: false db-config: diff --git a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml index 8aced59..15f722f 100644 --- a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml +++ b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml @@ -2,4 +2,40 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper"> + <select id="resultForMap" resultType="java.util.Map"> + SELECT + id, + asn_id, + asn_code, + plat_item_id, + po_detl_id, + po_code, + fields_index, + matnr_id, + matnr_code, + maktx, + anfme, + stock_unit, + pur_qty, + pur_unit, + qty, + splr_code, + splr_batch, + splr_name, + qrcode, + track_code, + barcode, + pack_name, + nty_status, + `status` deleted, + tenant_id, + create_by, + create_time, + update_by, + update_time, + memo + FROM + man_asn_order_item + ${ew.customSqlSegment} + </select> </mapper> -- Gitblit v1.9.1