From 55331431565cffc4328bbbe83533e1e11da3ffd6 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 15 八月 2025 13:33:59 +0800 Subject: [PATCH] 基础物料同步接口 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 159 +++++++++++----------------------------------------- 1 files changed, 34 insertions(+), 125 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java index 1e3daf7..46eb8f1 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java @@ -1,23 +1,17 @@ package com.vincent.rsf.server.api.service.impl; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; + import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.vincent.rsf.common.domain.CommonReponse; import com.vincent.rsf.framework.exception.CoolException; -import com.vincent.rsf.server.api.config.RemotesInfoProperties; -import com.vincent.rsf.server.api.entity.dto.PoItemsDto; -import com.vincent.rsf.server.api.entity.enums.OrderType; -import com.vincent.rsf.server.api.entity.params.ErpInspectItem; -import com.vincent.rsf.server.api.entity.params.ErpInspectParams; -import com.vincent.rsf.server.manager.entity.AsnOrder; -import com.vincent.rsf.server.manager.entity.AsnOrderItem; +import com.vincent.rsf.server.api.controller.params.BaseMatParms; +import com.vincent.rsf.server.manager.entity.Matnr; +import com.vincent.rsf.server.manager.entity.MatnrGroup; +import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.entity.PurchaseItem; -import com.vincent.rsf.server.manager.service.AsnOrderItemService; -import com.vincent.rsf.server.manager.service.AsnOrderService; +import com.vincent.rsf.server.manager.service.MatnrGroupService; import com.vincent.rsf.server.manager.service.PurchaseItemService; import com.vincent.rsf.server.manager.service.PurchaseService; +import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.api.controller.params.OrderParams; import com.vincent.rsf.server.system.entity.Fields; @@ -29,18 +23,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; import java.util.*; -import java.util.stream.Collectors; /** * @author Ryan @@ -58,19 +44,13 @@ @Autowired private PurchaseItemService purchaseItemService; @Autowired - private AsnOrderService asnOrderService; - @Autowired - private AsnOrderItemService asnOrderItemService; - @Autowired - private RestTemplate restTemplate; - @Autowired - private RemotesInfoProperties remotesInfoProperties; - @Autowired - private RemotesInfoProperties.ApiInfo apiInfo; - @Autowired private FieldsService fieldsService; @Autowired private FieldsItemService fieldsItemService; + @Autowired + private MatnrGroupService matnrGroupService; + @Autowired + private MatnrServiceImpl matnrService; @Override @Transactional(rollbackFor = Exception.class) @@ -83,7 +63,7 @@ BeanUtils.copyProperties(ors, purchase); String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); purchase.setCode(wkVal) - .setType(OrderType.ORDER_PURCHASE_IN.type); + .setType(OrderType.ORDER_IN.type); if (!purchaseService.save(purchase)) { throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); } @@ -116,105 +96,34 @@ } /** - * @author Ryan - * @description 涓婃姤璐ㄦ鍒楄〃 - * @params [items 鍒楄〃] - * @return boolean - * @time 2025/3/7 09:12 + * 鐗╂枡淇℃伅鍚屾 + * @param matnrs */ @Override - @Transactional(rollbackFor = Exception.class) - public boolean reportInspectNotify(List<PoItemsDto> items) { - if (items.isEmpty()) { - throw new CoolException("涓婃姤鍐呭涓虹┖锛侊紒"); - } - List<ErpInspectParams> inspectParams = new ArrayList<>(); - Map<String, List<PoItemsDto>> listMap = items.stream().collect(Collectors.groupingBy(PoItemsDto::getPurchaseId)); - listMap.keySet().forEach(key -> { - Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getId, Long.valueOf(key))); - if (Objects.isNull(purchase)) { - throw new CoolException("閲囪喘鍗曚俊鎭湁璇紒锛�"); - } - ErpInspectParams params = new ErpInspectParams(); - List<ErpInspectItem> inspectItems = new ArrayList<>(); - //璧嬪�糴rp涓诲崟缂栫爜,缂栧彿 - params.setPoId(purchase.getPlatId()) - .setPoCode(purchase.getPlatCode()); - List<PoItemsDto> dtos = listMap.get(key); - if (dtos.isEmpty()) { - throw new CoolException("鍗曟嵁淇℃伅閿欒锛侊紒"); - } - dtos.forEach(dto -> { - ErpInspectItem inspect= new ErpInspectItem(); - BeanUtils.copyProperties(dto, inspect); - //璧嬪�糴rp鏄庣粏缂栫爜 - inspect.setPoItemId(dto.getPlatItemId()); - inspectItems.add(inspect); - }); - params.setChildren(inspectItems); - inspectParams.add(params); - - }); - - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - //鑾峰彇涓婃姤璐ㄦ鎺ュ彛 - String url = remotesInfoProperties.getBaseUrl() + apiInfo.getNotifyInspect(); - // 璁剧疆璇锋眰鍙傛暟 - params.add("params", JSONObject.toJSONString(inspectParams)); - log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", url, JSONObject.toJSONString(inspectParams)); - HttpHeaders headers = new HttpHeaders(); - headers.add("Content-Type", "application/json"); - HttpEntity httpEntity = new HttpEntity<>(params, headers); - // 璇锋眰 - ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); - log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange); - if (Objects.isNull(exchange.getBody()) || exchange.getBody() == null) { - throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒"); - } else { - CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody()); - if (reponse.getCode() == 0) { - //淇敼asn涓婃姤鐘舵�� - Set<String> itemSets = items.stream().map(PoItemsDto::getId).collect(Collectors.toSet()); - Set<Long> longSet = new HashSet<>(); - itemSets.forEach(set -> { - longSet.add(Long.parseLong(set)); - }); - - List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getPoDetlId, longSet)); - if (asnOrderItems.isEmpty()) { - throw new CoolException("ASN鍗曟嵁涓嶅瓨鍦紒锛�"); + public void syncMatnrs(List<BaseMatParms> matnrs) { + List<Matnr> syncMatnrs = new ArrayList<>(); + if (!matnrs.isEmpty()) { + matnrs.forEach(matnr -> { + Matnr mat = new Matnr(); + if (Objects.isNull(matnr.getMatnr())) { + throw new RuntimeException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒"); } - List<Long> list = asnOrderItems.stream().map(AsnOrderItem::getId).collect(Collectors.toList()); - - /************************** 淇敼ASN鏄庣粏鍗曠姸鎬� ******************************/ - - - if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().in(AsnOrderItem::getId, list).set(AsnOrderItem::getStatus, 1))) { - throw new CoolException("ASN鏄庣粏鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�"); - } - - /************************** 淇敼ASN涓诲崟鏁版嵁 ******************************/ - //鑾峰彇ASN鏄庣粏璁㈠崟鏍囪瘑 - List<Long> ids = asnOrderItems.stream().map(AsnOrderItem::getAsnId).collect(Collectors.toList()); - //ASN鏄庣粏鍗曟嵁鍒嗙粍 - Map<Long, List<AsnOrderItem>> asnIds = asnOrderItems.stream().collect(Collectors.groupingBy(AsnOrderItem::getAsnId)); - ids.forEach(id -> { - int count = asnOrderService.count(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, id)); - if (count == asnIds.get(id).size()) { - if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 1))) { - throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); - } - } else { - if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 2))) { - throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); - } + BeanUtils.copyProperties(matnr, mat); + mat.setCode(matnr.getMatnr()).setName(matnr.getMaktx()); + if (!Objects.isNull(matnr.getGroupName())) { + MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getName, matnr.getGroupName()), false); + if (Objects.isNull(matnrGroup)) { + mat.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId()); } - }); - return true; - } else { - throw new CoolException(reponse.getMsg()); + } + syncMatnrs.add(mat); + }); + + if (!matnrService.saveOrUpdateBatch(syncMatnrs)) { + throw new CoolException("鐗╂枡淇℃伅淇濆瓨鎴愬姛锛侊紒"); } } } + } -- Gitblit v1.9.1