diff --git a/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java b/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java index e14a7b5b56ba588575244599ad56fb0c92b3c9e1..b30b7e17244f1261794107ca75512713c2711896 100644 --- a/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java +++ b/performance-api/src/main/java/com/clx/performance/enums/AppEnum.java @@ -4,9 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; -import java.util.List; import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; public enum AppEnum { ; @@ -15,7 +13,7 @@ public enum AppEnum { @AllArgsConstructor public enum UniqueIdentifier { - SMART_WEIGHT(1, "鍦虹珯-smart-weight"), + LMS_MANAGE(1, "鐗╂祦瀛愮郴缁�-lms-manage"), PURCHASE_MANAGE(2, "渚涘簲閾�-purchase-manage"), ; diff --git a/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java b/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..cce0ceebf4a3dbae2fcd4570fc68e005cdc793c9 --- /dev/null +++ b/performance-api/src/main/java/com/clx/performance/enums/InputOutputEnum.java @@ -0,0 +1,32 @@ +package com.clx.performance.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Optional; + +public enum InputOutputEnum { + ; + + @Getter + @AllArgsConstructor + public enum Type { + INPUT(1, "杩涘満"), + OUTPUT(2, "鍑哄満"), + ; + + private final Integer code; + private final String msg; + + public static Optional<Type> getByCode(int code) { + return Arrays.stream(values()).filter(e -> e.code == code).findFirst(); + } + + public static String getMsgByCode(int code) { + return getByCode(code).map(Type::getMsg).orElse(null); + } + } + + +} diff --git a/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java b/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..7adddabc3e4be049c00b9febea40b6dc56194843 --- /dev/null +++ b/performance-api/src/main/java/com/clx/performance/enums/SaleBuyEnum.java @@ -0,0 +1,32 @@ +package com.clx.performance.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Optional; + +public enum SaleBuyEnum { + ; + + @Getter + @AllArgsConstructor + public enum Type { + SALE(1, "閿€鍞�"), + BUY(2, "閲囪喘"), + ; + + private final Integer code; + private final String msg; + + public static Optional<Type> getByCode(int code) { + return Arrays.stream(values()).filter(e -> e.code == code).findFirst(); + } + + public static String getMsgByCode(int code) { + return getByCode(code).map(Type::getMsg).orElse(null); + } + } + + +} diff --git a/performance-web/pom.xml b/performance-web/pom.xml index 1c40ea3c39220097eadbab8f0000207c3055be01..189c4dcdb97429f30d352ec682439de83631dc59 100644 --- a/performance-web/pom.xml +++ b/performance-web/pom.xml @@ -99,8 +99,8 @@ </dependency> <dependency> - <groupId>com.smart</groupId> - <artifactId>smart-weight-sdk</artifactId> + <groupId>com.scm</groupId> + <artifactId>lms-manage-sdk</artifactId> </dependency> diff --git a/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java b/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java index 5ad6ae2e5efd052a58ef9af5690b9b4951c94c05..662513f844cb6beb0237fd1f1e2bb794df25e8ce 100644 --- a/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java +++ b/performance-web/src/main/java/com/clx/performance/job/PushOrderChildExpectTimeJob.java @@ -104,7 +104,11 @@ public class PushOrderChildExpectTimeJob { } if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.TRADE_PLATFORM.getCode())){ syncSmbExpectList.add(dto); - }else{ + //闆嗙叅瀹濈殑杩愬崟棰勮鏃堕棿涔熻鍚屾缁欓┈涓婃潵渚涘簲閾撅紝椹笂鏉ヤ緵搴旈摼鍚屾缁欏満绔� + syncNewOwnerClientExpectList.add(dto); + + } + if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())){ syncNewOwnerClientExpectList.add(dto); } } diff --git a/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java b/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java index 0125cd028ef5b6d7e161252833317d888d1f5f12..2bca46d86c74500a5656702df7cdbf2702d289c8 100644 --- a/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java +++ b/performance-web/src/main/java/com/clx/performance/job/WeighingOderPictureJob.java @@ -1,21 +1,16 @@ package com.clx.performance.job; -import com.clx.performance.config.LoadAppConfig; -import com.clx.performance.config.PerformanceSmartCompanyNoConfig; import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildWeighPictureDao; -import com.clx.performance.enums.AppEnum; import com.clx.performance.enums.OrderChildEnum; -import com.clx.performance.model.App; +import com.clx.performance.enums.SaleBuyEnum; import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChildWeighPicture; +import com.clx.performance.service.OrderChildService; import com.clx.performance.struct.OrderChildWeighPictureStruct; import com.msl.common.job.JobLog; -import com.msl.common.open.OpenClient; -import com.msl.common.open.RequestConfig; -import com.msl.common.result.Result; -import com.smart.weight.action.WeighingSignatureAction; -import com.smart.weight.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeightChildSignatureDto; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -44,10 +39,7 @@ public class WeighingOderPictureJob{ private OrderChildWeighPictureDao pictureDao; @Autowired - private PerformanceSmartCompanyNoConfig companyNoConfig; - - @Autowired - private LoadAppConfig loadAppConfig; + private OrderChildService orderChildService; /** @@ -78,34 +70,21 @@ public class WeighingOderPictureJob{ //鏌ヨ杩愬崟涓嬬殑鐢靛瓙纾呭崟鏁版嵁 if(CollectionUtils.isNotEmpty(orderChilds)){ - App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode());//瀵规帴鍦虹珯閰嶇疆淇℃伅 - //缁勮閰嶇疆淇℃伅 - RequestConfig config = new RequestConfig() - .setAppId(app.getAppNo()) - .setAppKey(app.getAppKey()) - .setGatewayUrl(app.getCallback()); //闆嗗悎瀵硅薄 List<OrderChildWeighPicture> pictures = new ArrayList<>(); for(OrderChild orderChild:orderChilds){ - //閫氳繃杩愬崟鍙风爜鏌ヨ鐢靛瓙纾呭崟鍥剧墖 - WeighingSignatureAction weightAction = new WeighingSignatureAction(); - weightAction.setChildNo(orderChild.getChildNo()); - weightAction.setCustomerRelationNo(String.valueOf(companyNoConfig.getCompanyNo())); - log.info("job璇锋眰鐢靛瓙纾呭崟鍙傛暟,{}",weightAction); - Result<List<WeighingSignatureDto>> weighSignature = OpenClient.doAction(config, weightAction); - log.info("job璇锋眰鐢靛瓙纾呭崟杩斿洖缁撴灉,{}",weighSignature); + //閫氳繃杩愬崟鍙锋煡璇㈢數瀛愮鍗曞浘鐗� + WeightChildSignatureDto weighingSignature = orderChildService.getWeighingSignature(orderChild.getChildNo(), SaleBuyEnum.Type.BUY.getCode()); //鏁版嵁澶勭悊 - if(!Objects.equals(weighSignature.getCode(),0)){ + if(Objects.isNull(weighingSignature) || CollectionUtils.isEmpty(weighingSignature.getWeighingSignatureList())){ continue; } - List<WeighingSignatureDto> weighSignatures = weighSignature.getData(); - if (CollectionUtils.isNotEmpty(weighSignatures)) { - for(WeighingSignatureDto weighingSignatureDto:weighSignatures){ - OrderChildWeighPicture picture = pictureStruct.convert(weighingSignatureDto); - picture.setChildNo(orderChild.getChildNo());//瀵硅薄杞崲 - pictures.add(picture); - } + List<WeighingSignatureDto> weighingSignatureList = weighingSignature.getWeighingSignatureList(); + for(WeighingSignatureDto weighingSignatureDto:weighingSignatureList){ + OrderChildWeighPicture picture = pictureStruct.convert(weighingSignatureDto); + picture.setChildNo(orderChild.getChildNo());//瀵硅薄杞崲 + pictures.add(picture); } } diff --git a/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java b/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java index a65471fa783a4ae89f708fca078724caa5609e86..1c91a0fb2818e4c4a5aaeae2e1276cf04e7226a0 100644 --- a/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java +++ b/performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java @@ -9,6 +9,7 @@ import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.model.settle.OrderChildSyncTransportRecord; import com.clx.performance.model.settle.SettlementOwner; import com.clx.performance.model.settle.SettlementOwnerDetail; +import com.clx.performance.service.broker.OrderChildBrokerMqService; import com.clx.performance.service.settle.SettlementMqService; import com.msl.common.job.JobLog; import com.xxl.job.core.context.XxlJobHelper; @@ -36,6 +37,7 @@ public class SettlementJob { private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDao settlementOwnerDao; private final OrderChildSyncTransportRecordDao orderChildSyncTransportRecordDao; + private final OrderChildBrokerMqService orderChildBrokerMqService; /** * 鍚屾鏃犺溅鎵胯繍杩愬崟寮€绁ㄧ被鍨� @@ -129,4 +131,61 @@ public class SettlementJob { } } + + /** + * 缃戠粶璐ц繍杩愬崟鏇存柊(娴嬭瘯) + */ + @XxlJob("settlementBrokerOrderChildUpdateTest") + public void settlementBrokerOrderChildUpdateTest() { + try { + List<String> childNoList=null; + + String jobParam= XxlJobHelper.getJobParam(); + log.info("缃戠粶璐ц繍杩愬崟鏇存柊, param:{}", jobParam); + if (StringUtils.isNotBlank(jobParam)) { + childNoList = JSON.parseArray(jobParam, String.class); + } + if (childNoList == null || childNoList.isEmpty()) { + return; + } + + for (String childNo : childNoList) { + + // 鍙戦€乵q (杩愬崟鏇存柊) + orderChildBrokerMqService.orderChildUpdate(childNo); + } + } catch (Exception e) { + log.warn("缃戠粶璐ц繍杩愬崟鏇存柊澶辫触锛宮sg:{}", ExceptionUtils.getStackTrace(e)); + JobLog.error("缃戠粶璐ц繍杩愬崟鏇存柊澶辫触", e); + } + } + + /** + * 缃戠粶璐ц繍杩愬崟鍚屾(娴嬭瘯) + */ + @XxlJob("settlementBrokerOrderChildSyncTest") + public void settlementBrokerOrderChildSyncTest() { + try { + List<String> childNoList=null; + + String jobParam= XxlJobHelper.getJobParam(); + log.info("缃戠粶璐ц繍杩愬崟鍚屾, param:{}", jobParam); + if (StringUtils.isNotBlank(jobParam)) { + childNoList = JSON.parseArray(jobParam, String.class); + } + if (childNoList == null || childNoList.isEmpty()) { + return; + } + + for (String childNo : childNoList) { + + // 鍙戦€乵q (杩愬崟鍚屾) + orderChildBrokerMqService.orderChildSync(childNo); + } + } catch (Exception e) { + log.warn("缃戠粶璐ц繍杩愬崟鍚屾澶辫触锛宮sg:{}", ExceptionUtils.getStackTrace(e)); + JobLog.error("缃戠粶璐ц繍杩愬崟鍚屾澶辫触", e); + } + } + } diff --git a/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java b/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java index 5305eb0af5e0d2f79ce023dc5bf4f5f959695684..2c33a2ca6c9bb5e3d988e22aa74fcde9dee1690e 100644 --- a/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java +++ b/performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java @@ -74,6 +74,7 @@ public class OrderGoodsDtsListener { if(Objects.equals(updateType,DtsOperationTypeEnum.UPDATE.getCode()) && (!Objects.equals(before.getOrderGoodsStatus(),after.getOrderGoodsStatus()) || !Objects.equals(before.getSeniorLogisticsManagerId(),after.getSeniorLogisticsManagerId()) + || !Objects.equals(before.getExtractWeight(),after.getExtractWeight()) || !Objects.equals(before.getPendingOrderFreight(),after.getPendingOrderFreight()) )){ isSend = true; diff --git a/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java b/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java index ceb646f95ca8b7f77b2ae0974b58c2d235aee549..12c4a68f40abc2a0115b4eb89840c710707eab36 100644 --- a/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java +++ b/performance-web/src/main/java/com/clx/performance/mapper/OrderGoodsMapper.java @@ -39,6 +39,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { @Update(" update order_goods set " + " already_transport_weight = already_transport_weight - #{residueWeight}," + + " extract_weight = already_transport_weight," + "order_goods_status = #{orderGoodsStatus} " + " where id = #{id}") void updateOrderGoodsWeightAlreadyAndStatus(@Param("id") Integer id, @Param("residueWeight") BigDecimal residueWeight, @Param("orderGoodsStatus") Integer orderGoodsStatus); diff --git a/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java b/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java index 2f2ac571d6fdbe3a86d3f15ff2cb05814b6009b3..4c4e83df053ff16ccfb9f8ce248d0d34a7fdc4e9 100644 --- a/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java +++ b/performance-web/src/main/java/com/clx/performance/service/OrderChildService.java @@ -13,7 +13,7 @@ import com.clx.performance.vo.app.owner.OwnerOrderChildVO; import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.child.UpdateCarrierBatchCancelVO; import com.msl.common.base.PageParam; -import com.smart.weight.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeightChildSignatureDto; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import java.math.BigDecimal; @@ -121,5 +121,5 @@ public interface OrderChildService { UpdateCarrierBatchCancelVO updateCarrierBatchCancel(OrderChildCarrierBatchCancelParam param); - List<WeighingSignatureDto> getWeighingSignature(String childNo); + WeightChildSignatureDto getWeighingSignature(String childNo,Integer type); } diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java index de434dd87965f3682dcee89551d93db050480398..f3d140966984b0103f35b0d1d3fc07eab32c1b67 100644 --- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java +++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java @@ -93,8 +93,9 @@ import com.purchase.manage.action.SupplyChainSupervisionLoadAction; import com.purchase.manage.action.SupplyChainSupervisionLoadTruckAction; import com.purchase.manage.dto.SupervisionLoadInfoDto; import com.purchase.manage.dto.SupervisionLoadTruckInfoDto; -import com.smart.weight.action.WeighingSignatureAction; -import com.smart.weight.dto.WeighingSignatureDto; +import com.scm.lms.manage.action.LmsWeighingSignatureAction; +import com.smart.business.sdk.request.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeightChildSignatureDto; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.ocr.v20181119.OcrClient; @@ -2186,7 +2187,6 @@ public class OrderChildServiceImpl implements OrderChildService { result.setPoundRemark(orderChildPoundAuditDao.getPoundAuditDetail(childNo).orNull().getRemark()); } - //棣栨鍥炴樉杩囩鐢靛瓙纾呭崟锛屽叾浠栨儏鍐靛洖鏄剧敤鎴蜂笂浼犵殑鍥剧墖 List<OrderChildImage> imageList = orderChildImageDao.listLoadAndUnload(childNo).orElse(new ArrayList<>()); result.setLoadImageList(imageList.stream().filter( item -> Objects.equals(item.getType(), OrderChildImage.Type.LOAD.getCode())).map( @@ -2195,11 +2195,6 @@ public class OrderChildServiceImpl implements OrderChildService { item -> Objects.equals(item.getType(), OrderChildImage.Type.UNLOAD.getCode())).map( item -> item.getImage()).collect(Collectors.toList())); - if(CollectionUtils.isEmpty(result.getUnloadImageList())){ - result.setUnloadImageList(getWeighingSignature(childNo).stream().filter( - item -> Objects.equals(item.getType(), 2)).map( - item -> item.getOriginalImg()).collect(Collectors.toList()));//鑾峰彇鐢靛瓙纾呭崟鍥剧墖 - } result.setArriveSendTime(orderChild.getArriveSendTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getArriveSendTime())); result.setFirstLoadTime(orderChild.getFirstLoadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getFirstLoadTime())); @@ -2208,6 +2203,32 @@ public class OrderChildServiceImpl implements OrderChildService { result.setLoadTime(orderChild.getLoadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getLoadTime())); result.setUnloadTime(orderChild.getUnloadTime()==null?null:convertLocalDateTimeToDefaultString(orderChild.getUnloadTime())); + //棣栨鍥炴樉杩囩鐢靛瓙纾呭崟锛屽叾浠栨儏鍐靛洖鏄剧敤鎴蜂笂浼犵殑鍥剧墖 + WeightChildSignatureDto weighingSignature = getWeighingSignature(childNo,SaleBuyEnum.Type.BUY.getCode());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖 绫诲瀷锛�1-閿€鍞紝2-閲囪喘 + if(Objects.nonNull(weighingSignature)){ + if(CollectionUtils.isEmpty(result.getUnloadImageList())){//鍗歌溅鍥剧墖 + if(CollectionUtils.isNotEmpty(weighingSignature.getWeighingSignatureList())){//鏈夌數瀛愮鍗� + result.setUnloadImageList(weighingSignature.getWeighingSignatureList().stream().filter( + item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map( + item -> item.getOriginalImg()) + .collect(Collectors.toList()));//鑾峰彇鍑哄満鐢靛瓙纾呭崟鍥剧墖 鍚庢湡浼樺寲浼樺厛鑾峰彇鐩栫珷鍥剧墖 鐩墠鐢靛瓙绛剧珷鏄痯df + } + + } + if(Objects.isNull(result.getUnloadTare())){//鍗歌溅鐨噸 + result.setUnloadTare(weighingSignature.getTare()); + } + if(Objects.isNull(result.getUnloadNet())){//鍗歌溅鍑€閲� + result.setUnloadNet(weighingSignature.getNet()); + } + if(Objects.isNull(result.getUnloadRough())){//鍗歌溅姣涢噸 + result.setUnloadRough(weighingSignature.getRough()); + } + if(StringUtils.isBlank(result.getUnloadTime())){//鍗歌溅鏃堕棿 + result.setUnloadTime(weighingSignature.getOutTime() ==null?null:convertLocalDateTimeToDefaultString(weighingSignature.getOutTime())); + } + } + return result; } @@ -2665,8 +2686,8 @@ public class OrderChildServiceImpl implements OrderChildService { FeignAddressVO data = addressFeign.getSendAndReceiveAddress(orderChild.getSendAddressId(), orderChild.getReceiveAddressId()).getData(); FeignAddressVO.Address sendAddress = data.getSendAddress(); FeignAddressVO.Address receiveAddress = data.getReceiveAddress(); - carrierOrderChildDetailVO.setSendDetailAddress(sendAddress.getProvince()+sendAddress.getCity()+sendAddress.getCounty()+sendAddress.getAddress()); - carrierOrderChildDetailVO.setReceiveDetailAddress(receiveAddress.getProvince()+receiveAddress.getCity()+receiveAddress.getCounty()+receiveAddress.getAddress()); + carrierOrderChildDetailVO.setSendDetailAddress(sendAddress.getAddress()); + carrierOrderChildDetailVO.setReceiveDetailAddress(receiveAddress.getAddress()); return carrierOrderChildDetailVO; } @@ -3506,11 +3527,15 @@ public class OrderChildServiceImpl implements OrderChildService { return null; } - List<String> images = getWeighingSignature(param.getChildNo()).stream().filter( - item -> Objects.equals(item.getType(), 2)).map( - item -> item.getOriginalImg()).collect(Collectors.toList());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖 - if(CollectionUtils.isNotEmpty(images)){ - return null; + WeightChildSignatureDto weighingSignature = getWeighingSignature(param.getChildNo(),SaleBuyEnum.Type.BUY.getCode());//鑾峰彇鐢靛瓙纾呭崟鍥剧墖 + if(Objects.nonNull(weighingSignature) && CollectionUtils.isNotEmpty(weighingSignature.getWeighingSignatureList())){//鍑哄満鍥剧墖 + List<String> images = weighingSignature.getWeighingSignatureList().stream().filter( + item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map( + item -> StringUtils.isNotBlank(item.getSignImg())? item.getSignImg():item.getOriginalImg()) + .collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(images)){ + return null; + } } try{ @@ -3781,28 +3806,30 @@ public class OrderChildServiceImpl implements OrderChildService { /** * 閫氳繃杩愬崟鍙疯幏鍙栫數瀛愮鍗曠浉鍏充俊鎭� * @param childNo + * @param type 1 閿€鍞� 2 閲囪喘 * @return */ - public List<WeighingSignatureDto> getWeighingSignature(String childNo){ - App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode());//瀵规帴鍦虹珯閰嶇疆淇℃伅 + public WeightChildSignatureDto getWeighingSignature(String childNo,Integer type){ + App app = loadAppConfig.getApp(AppEnum.UniqueIdentifier.LMS_MANAGE.getCode());//瀵规帴鐗╂祦瀛愮郴缁熼厤缃俊鎭� //缁勮閰嶇疆淇℃伅 RequestConfig config = new RequestConfig() .setAppId(app.getAppNo()) .setAppKey(app.getAppKey()) .setGatewayUrl(app.getCallback()); //閫氳繃杩愬崟鍙风爜鏌ヨ鐢靛瓙纾呭崟鍥剧墖 - WeighingSignatureAction weightAction = new WeighingSignatureAction(); + LmsWeighingSignatureAction weightAction = new LmsWeighingSignatureAction(); weightAction.setChildNo(childNo); weightAction.setCustomerRelationNo(String.valueOf(companyNoConfig.getCompanyNo())); + weightAction.setType(type); log.info("鎺ュ彛璇锋眰鐢靛瓙纾呭崟鍙傛暟,{}",weightAction); - Result<List<WeighingSignatureDto>> weighSignature = OpenClient.doAction(config, weightAction); + Result<WeightChildSignatureDto> weighSignature = OpenClient.doAction(config, weightAction); log.info("鎺ュ彛璇锋眰鐢靛瓙纾呭崟杩斿洖缁撴灉,{}",weighSignature); //鏁版嵁澶勭悊 if(Objects.equals(weighSignature.getCode(),0)){ - List<WeighingSignatureDto> weighSignatures = weighSignature.getData(); + WeightChildSignatureDto weighSignatures = weighSignature.getData(); return weighSignatures; } - return new ArrayList<>(); + return new WeightChildSignatureDto(); } } diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java index 060159835ecb45dd1ac152ca72d098e6aefa38ce..02907e6a2e9f0f88df3ac407308cabb241333f36 100644 --- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java +++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderChildWeighPictureServiceImpl.java @@ -1,14 +1,17 @@ package com.clx.performance.service.impl; +import com.clx.performance.enums.InputOutputEnum; +import com.clx.performance.enums.SaleBuyEnum; import com.clx.performance.param.app.OrderChildWeighPictureParam; import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildWeighPictureService; import com.clx.performance.vo.app.PictureVo; -import com.smart.weight.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeightChildSignatureDto; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -26,14 +29,15 @@ public class OrderChildWeighPictureServiceImpl implements OrderChildWeighPictur @Override public PictureVo getWeighPictures(OrderChildWeighPictureParam param) { //鐢靛瓙纾呭崟鍥剧墖 - List<WeighingSignatureDto> images = orderChildService.getWeighingSignature(param.getChildNo()); + WeightChildSignatureDto unloadImages = orderChildService.getWeighingSignature(param.getChildNo(), SaleBuyEnum.Type.BUY.getCode()); PictureVo vo = new PictureVo(); - vo.setLoadImages(images.stream().filter( - item -> Objects.equals(item.getType(), 1)).map( - item -> item.getOriginalImg()).collect(Collectors.toList())); - vo.setUnloadImages(images.stream().filter( - item -> Objects.equals(item.getType(), 2)).map( - item -> item.getOriginalImg()).collect(Collectors.toList())); + + if (Objects.nonNull(unloadImages) && CollectionUtils.isNotEmpty(unloadImages.getWeighingSignatureList())){ + vo.setUnloadImages(unloadImages.getWeighingSignatureList().stream().filter( + item -> Objects.equals(item.getType(), InputOutputEnum.Type.OUTPUT.getCode())).map( + item -> StringUtils.isNotBlank(item.getSignImg())? item.getSignImg():item.getOriginalImg()).collect(Collectors.toList())); + } + return vo; } } diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java index 999cf0d47e9b01de576abfeccb0601e5bb191884..340b5dccc67d7fe1b3393ef0b7528912f2c3c7c8 100644 --- a/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java +++ b/performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java @@ -211,8 +211,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea @Override public IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param) { - + long start2 = System.currentTimeMillis(); IPage<OrderGoodsVO> page = orderGoodsDao.pageOrderGoodsList(param); + long start3 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂2,{}",start3-start2); if(CollectionUtils.isNotEmpty(page.getRecords())){ List<String> fleetNoList = new ArrayList<>(); List<String> orderNoList = new ArrayList<>(); @@ -223,22 +225,27 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea } orderNoList.add(record.getOrderNo()); } - + long start5 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂3,{}",start5-start3); if(CollectionUtils.isNotEmpty(fleetNoList)){ List<OrderGoodsBindTruckNumDTO> bindTruckNumList = orderGoodsTruckBindDao.queryOrderGoodsTruckNum(fleetNoList); Map<String, Integer> map = bindTruckNumList.stream().collect( Collectors.toMap(OrderGoodsBindTruckNumDTO::getOrderGoodsNo,OrderGoodsBindTruckNumDTO :: getTruckNum)); page.getRecords().forEach(item->item.setDispatchedOrders(map.get(item.getOrderGoodsNo()))); } + long start6 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂4,{}",start6-start5); Optional<Map<String, FeignOrderInfoVO>> orderListOption = orderService.queryListOrderByOrderNoList(orderNoList); if(!orderListOption.isPresent()){ log.warn("閫氳繃璁㈠崟鍙锋壒閲忔煡璇㈣鍗曚俊鎭け璐ワ紝澶辫触鍘熷洜"); throw new ServiceSystemException(ResultEnum.DATA_ERROR,"鏌ヨ璐у崟瀵瑰簲鐨勮鍗曚俊鎭け璐�"); } - + long start7 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂5,{}",start7-start6); List<OrderGoods> orderGoods = orderGoodsDao.listInField(OrderGoods::getOrderNo, orderNoList); - + long start8 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂6,{}",start8-start7); Map<String, BigDecimal> orderExtractWeightMap = new HashMap<>(); for (OrderGoods orderGood : orderGoods) { @@ -248,6 +255,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea orderExtractWeightMap.put(orderNo,Objects.nonNull(orderExtractWeightMap.get(orderNo))? orderExtractWeightMap.get(orderNo).add(weight): weight); } + long start9 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂7,{}",start9-start8); Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get(); page.getRecords().forEach(item->{ FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo()); @@ -259,6 +268,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea } item.setResidueTransportWeight(calcOrderGoodsResidueWeight(item.getExtractWeight(),item.getAlreadyTransportWeight())); }); + long start11 = System.currentTimeMillis(); + log.info("鎵ц鑰楁椂8,{}",start11-start9); } return page; } diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java index e39cfd9d52b72483fcf52399cf46c979808df944..b2ee7912cdd41643ff9c1fafb9d7561c5c42d5a7 100644 --- a/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java +++ b/performance-web/src/main/java/com/clx/performance/service/impl/PerformanceProgressServiceImpl.java @@ -19,10 +19,7 @@ import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.PerformanceProgressDao; import com.clx.performance.dao.PerformanceProgressLogDao; import com.clx.performance.dto.gd.GdRouteDTO; -import com.clx.performance.enums.OrderChildEnum; -import com.clx.performance.enums.OrderEnum; -import com.clx.performance.enums.PerformanceProgressEnum; -import com.clx.performance.enums.ResultEnum; +import com.clx.performance.enums.*; import com.clx.performance.extranal.user.AddressService; import com.clx.performance.extranal.user.OrderService; import com.clx.performance.model.OrderChild; @@ -452,7 +449,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi //鏈€鍚庝竴涓寕鍗曚腑鐨勮揣鍗曠殑鎸傚崟鏃堕棿涓烘渶鏃╃殑鎸傚崟鏃堕棿 firstPendingTime = item.getPendingOrderTime(); - pendingWeight = pendingWeight.add(item.getExtractWeight()); + pendingWeight = pendingWeight.add(calcPendingWeight(item)); } PerformanceProgress update = new PerformanceProgress(); @@ -463,6 +460,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi update.setPendingWeight(pendingWeight); performanceProgressDao.updateEntityByKey(update); } + + //璁$畻灞ョ害杩涘害琛ㄨ揣鍗曠殑鎸傚崟鍚ㄦ暟 + private BigDecimal calcPendingWeight(OrderGoods item){ + if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())){ + return Objects.nonNull(item.getAlreadyTransportWeight())?item.getAlreadyTransportWeight():BigDecimal.ZERO; + } + return item.getExtractWeight(); + } + + + //灞ョ害杩涘害琛�----杩愬崟閮ㄥ垎 @Override public void dealPerformanceProgress4OrderChild(OrderChild data) { diff --git a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java index 29e6546f038f4f58342b161931e1b20e35d8390f..42fac6f03d79d34409e7ab44d284cd041fbb9c6f 100644 --- a/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java +++ b/performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java @@ -252,7 +252,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { orderChildInfo.setSourceOrderNo(orderChild.getOrderNo()); orderChildInfo.setSourceSettlementNo(settlementOwnerDetail.getSettlementNo()); - orderChildInfo.setFreight(orderChild.getFreightPrice().multiply(orderChild.getUnloadNet()) + orderChildInfo.setFreight(orderChild.getFreightPrice() + .multiply(orderChild.getUnloadNet().min(orderChild.getLoadNet())) .setScale(0, RoundingMode.HALF_UP).intValue()); orderChildInfo.setDriverFreight(orderChild.getFreight().intValue()); orderChildInfo.setDriverFreightPrice(orderChild.getFreightPrice().intValue()); diff --git a/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java b/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java index bab3ad43cd48f05d5eeb3507f6c5a96bb07801a5..8c46868a8bcd69e75237c8fa888632176b088281 100644 --- a/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java +++ b/performance-web/src/main/java/com/clx/performance/struct/OrderChildWeighPictureStruct.java @@ -3,7 +3,7 @@ package com.clx.performance.struct; import com.clx.performance.model.OrderChildWeighPicture; import com.msl.common.utils.DateStructUtil; import com.msl.common.utils.DateUtils; -import com.smart.weight.dto.WeighingSignatureDto; +import com.smart.business.sdk.request.dto.WeighingSignatureDto; import org.mapstruct.Mapper; @Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class}) diff --git a/performance-web/src/main/java/com/msl/common/open/OpenClient.java b/performance-web/src/main/java/com/msl/common/open/OpenClient.java new file mode 100644 index 0000000000000000000000000000000000000000..0aef6345c3bb8334303f8089f55a66a6f5bd1297 --- /dev/null +++ b/performance-web/src/main/java/com/msl/common/open/OpenClient.java @@ -0,0 +1,123 @@ +package com.msl.common.open; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.google.common.reflect.TypeToken; +import com.google.gson.*; +import com.msl.common.open.action.Action; +import com.msl.common.open.message.Message; +import com.msl.common.result.Result; +import com.msl.common.utils.EncryptUtil; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Type; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * @author wanglq + * Date 2024/4/25 + * Time 20:31 + */ +@Slf4j +@SuppressWarnings("all") +public class OpenClient { + + /** + * 鎵цaction + * + * @param action action + * @param <T> 杩斿洖绫诲瀷 + * @return 缁撴灉 + */ + public static <T> Result<T> doAction(RequestConfig config, Action<T> action) { + return doPost(config, action, "Action"); + } + + /** + * 鍙戦€佹秷鎭� + * + * @param message 娑堟伅 + * @param <T> 杩斿洖绫诲瀷 + * @return 缁撴灉 + */ + public static <T> Result<T> sendMessage(RequestConfig config, Message<T> message) { + return doPost(config, message, "Message"); + } + + /** + * 杩斿洖涓氬姟缁撴灉杞崲 + * + * @param result 涓氬姟缁撴灉 + * @param targetClass 鐩爣绫诲瀷 + * @param <T> 鐩爣绫诲瀷 + * @return 缁撴灉瀹炰綋 + */ + private static <T> Result<T> covertResult(String result, Type targetClass) { + Gson gson = new GsonBuilder() + .registerTypeAdapter(LocalDateTime.class, new CustomLocalDateTimeDeserializer()) + .create(); + // 浣跨敤TypeToken鏉ヨ幏鍙栧甫鏈夋硾鍨嬩俊鎭殑Type + Type type = new TypeToken<Result<T>>() { + }.getType(); + Result<T> resultObject = gson.fromJson(result, type); + + // 濡傛灉鐩爣绫诲瀷涓嶄负绌猴紝鍒欏皾璇曞皢data灞炴€ц浆鎹负鐩爣绫诲瀷 + if (targetClass != null && resultObject.getData() != null) { + T dataObject = gson.fromJson(gson.toJson(resultObject.getData()), targetClass); + resultObject.setData(dataObject); + } + return resultObject; + } + + /** + * 鎵цpost璇锋眰 + * + * @param openDto 璇锋眰鍙傛暟 + * @since 1.1.0 + */ + private static <T> Result<T> doPost(RequestConfig config, Process<T> process, String type) { + try { + String str = JSON.toJSONString(process); + ProcessId processId = process.processId(); + log.info("OpenClient鍙戦€� {}<{}> 璇锋眰鍙傛暟锛歿}", type, processId.show(), str); + + //鏋勯€犲姞瀵嗗疄浣� + OpenDto openDto = OpenDto.buildEncrypt(config.getAppId(), str, config.getAppKey(), System.currentTimeMillis()) + .setNamespace(processId.namespace()) + .setOperate(processId.identity()); + + //鎵ц璇锋眰 + return HttpExecutor.post(config.getGatewayUrl(), null, + openDto) + //鍙嶅簭鍖� + .map(r -> JSON.parseObject(r, new TypeReference<OpenDto>() { + })) + //鏁版嵁瑙e瘑 + .mapTry(dto -> EncryptUtil.decrypt(dto.getData(), config.getAppKey())) + .peek(s -> log.info("{}<{}> 杩斿洖缁撴灉锛歿}", type, processId.show(), s)) + //涓氬姟缁撴灉瀹炰綋杞崲 + .map(s -> { + Result<T> r = covertResult(s, process.returnType()); + return r; + }).orElse(Result.fail()); + } catch (Exception e) { + throw new RuntimeException("OpenClient璇锋眰澶辫触", e); + } + } + + public static class CustomLocalDateTimeDeserializer implements JsonDeserializer<LocalDateTime> { + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public LocalDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + try { + return LocalDateTime.parse(json.getAsString(), formatter); + } catch (DateTimeParseException e) { + throw new JsonParseException("Date parse error", e); + } + } + } + +}