From eb49564ab17c6695d8928d5a63a57c58b3cfd79c Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 11 十二月 2024 18:21:30 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java | 206 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 198 insertions(+), 8 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java index 68245b6..17f07a1 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java @@ -12,8 +12,15 @@ import com.doumee.core.wms.model.response.WmsBaseDataResponse; import com.doumee.core.wms.model.response.WmsBaseResponse; import com.doumee.core.wms.model.response.WmsInventoryDataResponse; +import com.doumee.core.wx.wxPlat.WxPlatConstants; +import com.doumee.core.wx.wxPlat.WxPlatNotice; import com.doumee.dao.business.*; +import com.doumee.dao.business.dao.SmsConfigMapper; +import com.doumee.dao.business.dao.SmsEmailMapper; import com.doumee.dao.business.model.*; + +import com.doumee.dao.system.SystemUserMapper; +import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.impl.SmsEmailServiceImpl; import com.doumee.service.business.third.EmayService; import com.doumee.service.business.third.WmsService; @@ -23,8 +30,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * WMS骞冲彴瀵规帴Service瀹炵幇 @@ -43,6 +53,8 @@ @Autowired private MemberMapper memberMapper; @Autowired + private SystemUserMapper systemUserMapper; + @Autowired private PlatformJobMapper platformJobMapper; @Autowired private PlatformWmsDetailMapper platformWmsDetailMapper; @@ -58,6 +70,8 @@ private EmayService emayService; @Autowired private RetentionMapper retentionMapper; + @Autowired + private WxNoticeConfigMapper wxNoticeConfigMapper; /** * 鍏ュ簱閫氱煡浠诲姟涓氬姟澶勭悊 * @param job 鍙傛暟 @@ -83,10 +97,22 @@ } WmsOrderPlatformRequest param = new WmsOrderPlatformRequest(); param.setData(new ArrayList<>()); - WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest(); - o.setCarrierBillCode(job.getBillCode()); - o.setRailwayNo(job.getPlatformWmsCode()); - param.getData().add(o); + + List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda() + .eq(PlatformWmsDetail::getJobId,job.getId()) + .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){ + for (PlatformWmsDetail platformWmsDetail:platformWmsDetailList) { + if(StringUtils.isNotBlank(platformWmsDetail.getIocode())){ + WmsOrderPlatformInfoRequest o = new WmsOrderPlatformInfoRequest(); + o.setCarrierBillCode(platformWmsDetail.getIocode()); + o.setRailwayNo(job.getPlatformWmsCode()); + param.getData().add(o); + } + } + } + String url = type == 0?systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_INBOUND_PLATFROM_URL).getCode(): systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_OUTBOUND_PLATFROM_URL).getCode();; String name = type ==0?"銆怶MS銆戝叆搴撲綔涓氬崟鍒嗛厤鏈堝彴":"銆怶MS銆戝嚭搴撲綔涓氱殑鍒嗛厤鏈堝彴"; @@ -197,9 +223,9 @@ } private static void logResult(WmsBaseResponse<WmsBaseDataResponse> res,String name) { if(StringUtils.equals(res.getData().get(0).getSuccess(), WmsBaseResponse.CODE_SUCCESS)){ - log.info("銆怶MS鎺ュ彛锛�"+name+"銆�================鎴愬姛====\n"+res); + log.info("銆怶MS鎺ュ彛锛�"+name+"銆�================鎴愬姛====\n"+ JSONObject.toJSONString(res)); }else{ - log.error("銆怶MS鎺ュ彛锛�"+name+"銆�================澶辫触====锛歕n"+ res); + log.error("銆怶MS鎺ュ彛锛�"+name+"銆�================澶辫触====锛歕n"+ JSONObject.toJSONString(res)); } } /** @@ -244,6 +270,7 @@ job.setPlateNumber(param.getPlateNumber()); job.setType(Constants.ZERO); job.setIoCreatedate(param.getCreateDate()); +// job.setOrigin(Constants.ONE); job.setJobId(model.getId()); job.setDriverPhone(param.getDriverPhone()); platformWmsJobMapper.insert(job); @@ -292,14 +319,33 @@ private void startEndNoticeToDriver(List<PlatformJob> jobList) { for(PlatformJob job : jobList){ - //-----TODO-----------浠诲悍锛屽彂閫佸徃鏈哄叕浼楀彿鍜� //鐭俊閫氱煡 if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())){ SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz, emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,job.getId(), SmsConstants.platformJobContent.platformJobNewJob,null,null ); + //鏌ヨ鍙告満淇℃伅 鍙戦�佸叕浼楀彿閫氱煡 + if(Objects.nonNull(job.getDriverId())){ + //鍙戦�佸叕浼楀彿閫氱煡 缁欐彁浜や汉 + SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() + .eq(SystemUser::getDeleted, Constants.ZERO) + .eq(SystemUser::getType, Constants.ZERO) + .eq(SystemUser::getMobile,job.getDrivierPhone()) + .last(" limit 1 ")); + if(Objects.nonNull(driver) && StringUtils.isNotBlank(driver.getOpenid())){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.sendWmsTemplateNotice(systemDictDataBiz, + wxNoticeConfigMapper,job, + WxPlatConstants.platformJobContent.platformJobNewJob, + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), + Arrays.asList(driver.getOpenid().split(",")) + ); + } + } } + + } } @@ -314,6 +360,7 @@ job.setCarCodeFront(param.getPlateNumber()); job.setDrivierPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); + job.setOrigin(Constants.ONE); //澶勭悊浣滀笟鐨勮溅杈嗐�佸徃鏈恒�佹湀鍙扮粍鍏宠仈鍏崇郴锛屽嵏璐� dealCarPlatformAndDriverInfo(job,0); // platformJobMapper.insert(job); @@ -340,6 +387,15 @@ job.setArriveDate(new Date()); job.setSingType(Constants.TWO); job.setSignDate(new Date()); + List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>(). + lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null ") + ); + if(CollectionUtils.isEmpty(signList)){ + job.setSignNum(Constants.ONE); + } else{ + int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); + job.setSignNum(maxNumber + Constants.ONE); + } } } PlatformGroup group = platformGroupMapper.selectOne(new QueryWrapper<PlatformGroup>().lambda() @@ -373,6 +429,7 @@ job.setCarCodeFront(param.getPlateNumber()); job.setDrivierPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); + job.setOrigin(Constants.ONE); //澶勭悊浣滀笟鐨勮溅杈嗐�佸徃鏈恒�佹湀鍙扮粍鍏宠仈鍏崇郴锛岃璐� dealCarPlatformAndDriverInfo(job,1); return job; @@ -390,6 +447,7 @@ return returnFailReuslt("璇锋眰鍙傛暟涓嶆纭紝鍙傛暟涓嶈兘涓虹┖"); } List<PlatformJob> jobList = new ArrayList<>(); + List<Integer> jobIdList = new ArrayList<>(); List<PlatformWmsDetail> details = new ArrayList<>(); List<String> iocodeList = new ArrayList<>(); for(WmsOutboundNoticeRequest param : list.getData()){ @@ -424,9 +482,10 @@ job.setContractNum(param.getContractNum()); job.setDriverPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); +// job.setOrigin(Constants.ONE); platformWmsJobMapper.insert(job); - jobList.add(model); } + jobIdList.add(job.getId()); if(param.getDetails()!=null && param.getDetails().size()>0){ for(WmsOutboundDetailRequest d :param.getDetails()){ PlatformWmsDetail entity = new PlatformWmsDetail(); @@ -436,6 +495,7 @@ entity.setJobId(job.getJobId()); entity.setWmsJobId(job.getId()); entity.setIoQty(d.getIoQty()); + entity.setRepertotyAddress(job.getRepertotyAddress()); entity.setWmsJobId(job.getId()); entity.setStatus(Constants.ZERO); entity.setRate(d.getRate()); @@ -452,12 +512,14 @@ .in(PlatformWmsDetail::getIocode,iocodeList) ); } + jobIdList.add(job.getId()); } } if(details.size()>0){ platformWmsDetailMapper.insert(details); } if(jobList.size()>0){ + list.setJobIdList(jobIdList); startEndNoticeToDriver(jobList); } }catch (Exception e){ @@ -492,6 +554,58 @@ .set(PlatformWmsDetail::getStatus,Constants.TWO) .in(PlatformWmsDetail::getIocode,iocodeList) .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); + + platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda() + .set(PlatformWmsJob::getStatus,Constants.TWO) + .in(PlatformWmsJob::getIocode,iocodeList) + .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)); + + List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda() + .in(PlatformWmsJob::getIocode,iocodeList) + .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){ + List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){ + Set<Integer> setJobIds = new HashSet<>(jobIds); + platformJobMapper.update(null,new UpdateWrapper<PlatformJob>() + .lambda() + .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey()) + .in(PlatformJob::getId,setJobIds) + ); + + for (Integer jobId:setJobIds + ) { + //鐭俊閫氱煡 + SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz, + emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId, + SmsConstants.platformJobContent.platformJobStopJob,null,null + ); + //鍏紬鍙烽�氱煡鍙告満 浠诲姟鍙栨秷 + PlatformJob job = platformJobMapper.selectById(jobId); + if(Objects.nonNull(job)){ + + //鍙戦�佸叕浼楀彿閫氱煡 缁欐彁浜や汉 + SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() + .eq(SystemUser::getDeleted, Constants.ZERO) + .eq(SystemUser::getType, Constants.ZERO) + .eq(SystemUser::getMobile,job.getDrivierPhone()) + .last(" limit 1 ")); + if(Objects.nonNull(driver) && StringUtils.isNotBlank(driver.getOpenid())){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.sendWmsCancelTemplateNotice(systemDictDataBiz, + wxNoticeConfigMapper,job, + WxPlatConstants.platformJobContent.platformJobCancel, + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), + Arrays.asList(driver.getOpenid().split(",")) + ); + } + } + + } + } + } + }catch (Exception e){ log.error("銆怶MS銆戝鐞嗗叆搴撳彇娑堥�氱煡涓氬姟===============涓氬姟澶勭悊寮傚父"+e.getMessage()); return returnFailReuslt("涓氬姟澶勭悊寮傚父"); @@ -523,6 +637,55 @@ .set(PlatformWmsDetail::getStatus,Constants.TWO) .in(PlatformWmsDetail::getIocode,iocodeList) .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); + + platformWmsJobMapper.update(null,new UpdateWrapper<PlatformWmsJob>().lambda() + .set(PlatformWmsJob::getStatus,Constants.TWO) + .in(PlatformWmsJob::getIocode,iocodeList) + .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)); + + List<PlatformWmsJob> platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper<PlatformWmsJob>().lambda() + .in(PlatformWmsJob::getIocode,iocodeList) + .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){ + List<Integer> jobIds = platformWmsJob.stream().filter(i->Objects.nonNull(i.getJobId())).map(i->i.getJobId()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIds)){ + Set<Integer> setJobIds = new HashSet<>(jobIds); + platformJobMapper.update(null,new UpdateWrapper<PlatformJob>() + .lambda() + .set(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey()) + .in(PlatformJob::getId,setJobIds) + ); + for (Integer jobId:setJobIds + ) { + SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz, + emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,jobId, + SmsConstants.platformJobContent.platformJobStopJob,null,null + ); + + //鍏紬鍙烽�氱煡鍙告満 浠诲姟鍙栨秷 + PlatformJob job = platformJobMapper.selectById(jobId); + if(Objects.nonNull(job)){ //鍙戦�佸叕浼楀彿閫氱煡 缁欐彁浜や汉 + SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() + .eq(SystemUser::getDeleted, Constants.ZERO) + .eq(SystemUser::getType, Constants.ZERO) + .eq(SystemUser::getMobile,job.getDrivierPhone()) + .last(" limit 1 ")); + if(Objects.nonNull(driver) && StringUtils.isNotBlank(driver.getOpenid())){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.sendWmsCancelTemplateNotice(systemDictDataBiz, + wxNoticeConfigMapper,job, + WxPlatConstants.platformJobContent.platformJobCancel, + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), + Arrays.asList(driver.getOpenid().split(",")) + ); + } + } + } + } + } + + }catch (Exception e){ log.error("銆怶MS銆戝嚭搴撳彇娑堥�氱煡浠诲姟涓氬姟澶勭悊===============涓氬姟澶勭悊寮傚父"+e.getMessage()); return returnFailReuslt("涓氬姟澶勭悊寮傚父"); @@ -530,6 +693,33 @@ return returnSuccessReuslt(null); } /** + * 澶勭悊浣滀笟琛屾暟鎹殑杩愯緭鎬婚噺淇℃伅 + * @param jobList 鍙傛暟 + * @return + */ + @Override + public void computjobTotalNum(List<Integer> jobList) { + if(jobList==null || jobList.size()==0){ + return; + } + for(Integer jobId : jobList){ + BigDecimal num = new BigDecimal(0); + List<PlatformWmsDetail> details = platformWmsDetailMapper.selectList( new QueryWrapper<PlatformWmsDetail>().lambda() + .eq(PlatformWmsDetail::getJobId,jobId) + .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); + if(details!=null && details.size()>0){ + for(PlatformWmsDetail d :details){ + num.add(Constants.formatBigdecimal(d.getIoQty())); + } + platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda() + .set(PlatformJob::getTotalNum,num) + .eq(PlatformJob::getOrigin, Constants.ZERO) + .eq(PlatformJob::getId, jobId)); + } + + } + } + /** * 浣滀笟瀹屾垚閫氱煡浠诲姟涓氬姟澶勭悊 * @param list 鍙傛暟 * @return -- Gitblit v1.9.3