package com.doumee.service.business.impl.thrid; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.utils.Constants; import com.doumee.core.utils.HttpsUtil; import com.doumee.core.utils.SmsConstants; import com.doumee.core.wms.model.request.*; import com.doumee.core.wms.model.response.WmsBaseDataResponse; import com.doumee.core.wms.model.response.WmsBaseResponse; 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.MemberMapper; import com.doumee.dao.business.dao.SmsConfigMapper; import com.doumee.dao.business.dao.SmsEmailMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.model.Member; 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; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service @Slf4j public class WmsServiceImpl implements WmsService { @Autowired private PlatformWmsJobMapper platformWmsJobMapper; @Autowired private PlatformGroupMapper platformGroupMapper; @Autowired private CarsMapper carsMapper; @Autowired private MemberMapper memberMapper; @Autowired private SystemUserMapper systemUserMapper; @Autowired private PlatformJobMapper platformJobMapper; @Autowired private PlatformWmsDetailMapper platformWmsDetailMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private WmsInterfaceLogMapper wmsInterfaceLogMapper; @Autowired private SmsConfigMapper smsConfigMapper; @Autowired private SmsEmailMapper smsEmailMapper; @Autowired private EmayService emayService; @Autowired private RetentionMapper retentionMapper; @Autowired private WxNoticeConfigMapper wxNoticeConfigMapper; /** * 入库通知任务业务处理 * @param job 参数 * @return */ @Override public WmsBaseResponse orderPlatformBind(PlatformJob job) { if(StringUtils.isBlank(job.getBillCode()) || StringUtils.isBlank(job.getPlatformWmsCode())){ return null; } int type = 0; if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){ //如果是装货(出库) type =1 ; }else if(Constants.equalsInteger(job.getType(),Constants.ZERO) || Constants.equalsInteger(job.getType(),Constants.TWO)){ //如果是装货(出库) type =0 ; }else{ return null; } WmsOrderPlatformRequest param = new WmsOrderPlatformRequest(); param.setData(new ArrayList<>()); List platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper().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?"【WMS】入库作业单分配月台":"【WMS】出库作业的分配月台"; WmsBaseResponse response = sendHttpRequest(url,name,JSONObject.toJSONString(param),new TypeReference< WmsBaseResponse>(){}); PlatformJob update = new PlatformJob(); update.setId(job.getId()); update.setWmsSendDate(new Date()); if(Objects.isNull(job.getWmsSendNum())){ job.setWmsSendNum(1); }else{ update.setWmsSendNum(job.getWmsSendNum() + 1); } update.setWmsSendPlatformCode(job.getPlatformWmsCode()); if(response!=null && response.getData() !=null && response.getData().size()>0 && StringUtils.equals(response.getData().get(0).getSuccess(),WmsBaseResponse.CODE_SUCCESS)){ //如果成功 update.setWmsSendStatus(Constants.ONE); update.setWmsSendInfo("通知WMS作业单分配月台成功"); }else{ //如果失败 update.setWmsSendStatus(Constants.TWO); update.setWmsSendInfo("通知WMS作业单分配月台失败:"+(response!=null?JSONObject.toJSONString(response):"接口调用失败")); } platformJobMapper.updateById(update); return response; } /** * 入库通知任务业务处理 * @return */ @Override public WmsBaseResponse getInventoryList(){ String url = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_GET_INVENTORYLIST_URL).getCode() ; String name = "【WMS】库存查询" ; WmsBaseResponse response = sendHttpRequest(url,name,JSONObject.toJSONString(new JSONObject()),new TypeReference< WmsBaseResponse>(){}); if(response!=null && response.getData() !=null && response.getData().size()>0 && StringUtils.equals(response.getData().get(0).getSuccess(),WmsBaseResponse.CODE_SUCCESS)){ //如果请求成功 }else{ //如果失败 if(response ==null){ response = new WmsBaseResponse(); response.setData(new ArrayList<>()); } if(response.getData() == null){ response.setData(new ArrayList<>()); } } return response; } @Override public void saveInterfaceLog(String url,String name,String param,Integer success,String respone,int type){ if(wmsInterfaceLogMapper ==null){ return; } WmsInterfaceLog log = new WmsInterfaceLog(); log.setCreateDate(new Date()); log.setUrl(url); log.setEditDate(log.getCreateDate()); log.setPlat(Constants.ZERO); log.setName(name); log.setIsdeleted(Constants.ZERO); log.setRequest(param); log.setType(type); log.setSuccess(success); log.setRepose(respone); wmsInterfaceLogMapper.insert(log); } /** * 发起wms接口请求 * @param url * @param name * @param param * @param typeReference * @return * @param */ public WmsBaseResponse sendHttpRequest(String url, String name, String param,TypeReference> typeReference){ log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param)); if ( StringUtils.isNotBlank(url)) { String res = null; int success = 0; try { Map headers = new HashMap<>(); res = HttpsUtil.postJson(url,param); WmsBaseResponse result = JSONObject.parseObject(res, typeReference.getType()); logResult(result,name); if(result!=null && result.getData() !=null ){ }else{ success =1; } return result; }catch (Exception e){ success = 1; e.printStackTrace(); log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param)); }finally { saveInterfaceLog(url,name,param,success,res,Constants.ZERO); } } return null; } private static void logResult(WmsBaseResponse res,String name) { if(StringUtils.equals(res.getData().get(0).getSuccess(), WmsBaseResponse.CODE_SUCCESS)){ log.info("【WMS接口:"+name+"】================成功====\n"+ JSONObject.toJSONString(res)); }else{ log.error("【WMS接口:"+name+"】================失败====:\n"+ JSONObject.toJSONString(res)); } } /** * 入库通知任务业务处理 * @param list 参数 * @return */ @Override @Transactional public WmsBaseResponse inboundNotice(WmsBaseRequest list) { try{ if(list ==null || list.getData()==null|| list.getData().size() ==0){ return returnFailReuslt("请求参数不正确,参数不能为空"); } List jobList = new ArrayList<>(); List jobIdList = new ArrayList<>(); List details = new ArrayList<>(); List iocodeList = new ArrayList<>(); for(WmsInboundNoticeRequest param : list.getData()){ if(StringUtils.isBlank(param.getIoCode()) || StringUtils.isBlank(param.getCarrierBillCode())|| StringUtils.isBlank(param.getPlateNumber())|| StringUtils.isBlank(param.getDriverPhone())){ return returnFailReuslt("请求参数不正确,参数不合法!"); } //根据承运单号查询任务信息 PlatformWmsJob job = platformWmsJobMapper.selectOne(new QueryWrapper().lambda() .eq(PlatformWmsJob::getCarryBillCode,param.getCarrierBillCode()) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) .last("limit 1" )); if(job == null){ PlatformJob model =dealJobBizInbound(param); job = new PlatformWmsJob(); job.setCreateDate(new Date()); job.setIsdeleted(Constants.ZERO); job.setIsNew(Constants.ONE); job.setStatus(Constants.ONE); job.setCarryBillCode(param.getCarrierBillCode()); job.setIocode(param.getIoCode()); job.setCarrierName(param.getCarrierName()); job.setDriverName(param.getDriverName()); 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); jobList.add(model); } jobIdList.add(job.getId()); if(param.getDetails()!=null && param.getDetails().size()>0){ for(WmsInboundDetailRequest d :param.getDetails()){ PlatformWmsDetail entity = new PlatformWmsDetail(); entity.setCreateDate(new Date()); entity.setIsdeleted(Constants.ZERO); entity.setIocode(d.getIoCode()); entity.setJobId(job.getJobId()); entity.setWmsJobId(job.getId()); entity.setIoQty(d.getIoQty()); entity.setStatus(Constants.ZERO); entity.setRate(d.getRate()); entity.setMaterialName(d.getMaterialName()); entity.setInRepertotyCode(d.getInRepertotyCode()); iocodeList.add(d.getIoCode()); details.add(entity); } if(job.getIsNew() != 1&& iocodeList.size()>0){ //先清理同一个承运单号下重复推送的iocode数据,以最后一次推送为主 platformWmsDetailMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsDetail::getIsdeleted,Constants.ONE) .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) .eq(PlatformWmsDetail::getWmsJobId,job.getId()) .in(PlatformWmsDetail::getIocode,iocodeList) ); } } } if(details.size()>0){ platformWmsDetailMapper.insert(details); } if(jobList.size()>0){ list.setJobIdList(jobIdList); startEndNoticeToDriver(jobList); } }catch (Exception e){ log.error("【WMS】处理入库取消通知业务===============业务处理异常"+e.getMessage()); return returnFailReuslt("业务处理异常"); } return returnSuccessReuslt(null); } private void startEndNoticeToDriver(List jobList) { for(PlatformJob job : jobList){ //短信通知 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().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(",")) ); } } } } } private PlatformJob dealJobBizInbound(WmsInboundNoticeRequest param) { PlatformJob job = new PlatformJob(); job.setCreateDate(new Date()); job.setIsdeleted(Constants.ZERO); job.setType(Constants.platformJobType.wxcxh);//默认是外协车卸货 job.setStatus(Constants.PlatformJobStatus.WAIT_CONFIRM.getKey());//默认待确认状态 job.setBillCode(param.getCarrierBillCode()); job.setCarrierName(param.getCarrierName()); job.setCarCodeFront(param.getPlateNumber()); job.setDrivierPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); job.setOrigin(Constants.ONE); //处理作业的车辆、司机、月台组关联关系,卸货 dealCarPlatformAndDriverInfo(job,0); // platformJobMapper.insert(job); return job; } private void dealCarPlatformAndDriverInfo(PlatformJob job,int type) { //查询车辆是否自有车,以及jobNum表示但求作业数量(非已离园的作业数) Cars car = carsMapper.selectOne(new QueryWrapper() .select("*,(select count(1) from platform_job b where b.plate_num='"+job.getCarCodeFront()+"' and b.status in("+ Constants.PlatformJobStatus.LEAVED.getKey()+")) as jobNum") .lambda() .eq(Cars::getIsdeleted,Constants.ZERO) .eq(Cars::getType,Constants.ONE) .eq(Cars::getCode,job.getCarCodeFront())); if(car !=null){ //如果是自有物流车 job.setType(type==0?Constants.platformJobType.zycxh:Constants.platformJobType.zyczh);//自有车卸货/装货 job.setCarCodeBack(job.getCarCodeFront());//自有车默认前后车牌一样 if(retentionMapper.selectCount(new QueryWrapper().lambda().eq(Retention::getType,Constants.THREE) .eq(Retention::getCarNo,car.getCode()))>Constants.ZERO && car.getJobNum() == 0){ //如果车辆在园 job.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());//在园无作业状态,则自动【已签到】处理 job.setArriveDate(new Date()); job.setSingType(Constants.TWO); job.setSignDate(new Date()); List signList = platformJobMapper.selectList(new QueryWrapper(). 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().lambda() .eq(PlatformGroup::getIsdeleted,Constants.ZERO) .eq(PlatformGroup::getType,type==0?Constants.ZERO:Constants.ONE) .last("limit 1") );//查询卸货月台组编码 job.setPlatformGroupId(group!=null?group.getId():null); Member driver = memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper() .selectAll(Member.class) .selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .eq(Member::getIsdeleted,Constants.ZERO) .eq(Member::getPhone,job.getDrivierPhone()) .last("limit 1") );//查询装货月台组编码 if(driver!=null){ job.setDriverId(driver.getId()); job.setCompanyId(driver.getCompanyId()); job.setCompanyNamePath(driver.getCompanyNamePath()); } platformJobMapper.insert(job); } private PlatformJob dealJobBizOutbound(WmsOutboundNoticeRequest param) { PlatformJob job = new PlatformJob(); job.setCreateDate(new Date()); job.setIsdeleted(Constants.ZERO); job.setType(Constants.platformJobType.wxczh);//默认是外协车装好 job.setStatus(Constants.PlatformJobStatus.WAIT_CONFIRM.getKey());//默认待确认状态 job.setBillCode(param.getCarrierBillCode()); job.setCarrierName(param.getCarrierName()); job.setCarCodeFront(param.getPlateNumber()); job.setDrivierPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); job.setOrigin(Constants.ONE); //处理作业的车辆、司机、月台组关联关系,装货 dealCarPlatformAndDriverInfo(job,1); return job; } /** * 出库通知任务业务处理 * @param list 参数 * @return */ @Override public WmsBaseResponse outboundNotice(WmsBaseRequest list) { try{ if(list ==null ||list.getData()==null || list.getData().size() ==0){ return returnFailReuslt("请求参数不正确,参数不能为空"); } List jobList = new ArrayList<>(); List jobIdList = new ArrayList<>(); List details = new ArrayList<>(); List iocodeList = new ArrayList<>(); for(WmsOutboundNoticeRequest param : list.getData()){ if(StringUtils.isBlank(param.getIoCode()) || StringUtils.isBlank(param.getCarrierBillCode())|| StringUtils.isBlank(param.getPlateNumber())|| StringUtils.isBlank(param.getDriverPhone())){ return returnFailReuslt("请求参数不正确,参数不合法!"); } //根据承运单号查询任务信息 PlatformWmsJob job = platformWmsJobMapper.selectOne(new QueryWrapper().lambda() .eq(PlatformWmsJob::getCarryBillCode,param.getCarrierBillCode()) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) .last("limit 1" )); if(job == null){ PlatformJob model =dealJobBizOutbound(param); job = new PlatformWmsJob(); job.setCreateDate(new Date()); job.setIsdeleted(Constants.ZERO); job.setStatus(Constants.ZERO); job.setIsNew(Constants.ONE); job.setCarryBillCode(param.getCarrierBillCode()); job.setIocode(param.getIoCode()); job.setCarrierName(param.getCarrierName()); job.setPlateNumber(param.getPlateNumber()); job.setDriverName(param.getDriverName()); job.setType(Constants.ONE); job.setIoCreatedate(param.getCreateDate()); job.setJobId(model.getId()); job.setRepertotyAddress(param.getRepertotyAddress()); job.setContractNum(param.getContractNum()); job.setDriverPhone(param.getDriverPhone()); job.setDriverName(param.getDriverName()); // job.setOrigin(Constants.ONE); platformWmsJobMapper.insert(job); } jobIdList.add(job.getId()); if(param.getDetails()!=null && param.getDetails().size()>0){ for(WmsOutboundDetailRequest d :param.getDetails()){ PlatformWmsDetail entity = new PlatformWmsDetail(); entity.setCreateDate(new Date()); entity.setIsdeleted(Constants.ZERO); entity.setIocode(d.getIoCode()); 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()); entity.setMaterialName(d.getMaterialName()); iocodeList.add(d.getIoCode()); details.add(entity); } if(job.getIsNew() != 1 && iocodeList.size()>0){ //先清理同一个承运单号下重复推送的iocode数据,以最后一次推送为主 platformWmsDetailMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsDetail::getIsdeleted,Constants.ONE) .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) .eq(PlatformWmsDetail::getWmsJobId,job.getId()) .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){ log.error("【WMS】处理入库取消通知业务===============业务处理异常"+e.getMessage()); return returnFailReuslt("业务处理异常"); } return returnSuccessReuslt(null); } /** * 入库取消通知任务业务处理 * @param list 参数 * @return */ @Override public WmsBaseResponse cancelInbound(WmsBaseRequest list) { //-----------------处理入库取消通知业务-------------------- try { if(list ==null||list.getData()==null || list.getData().size() ==0 || list.getData().get(0).getIoCode() == null){ return returnFailReuslt("请求参数不正确,参数不能为空"); } List iocodeList = new ArrayList<>(); for(WmsActionNoticeRequest param :list.getData()){ if(StringUtils.isNotBlank(param.getIoCode())){ iocodeList.add(param.getIoCode()); } } if(iocodeList.size() ==0 ){ return returnFailReuslt("请求参数iocode不正确,参数不能为空"); } //取消全部数据状态为 【已取消】 platformWmsDetailMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsDetail::getStatus,Constants.TWO) .in(PlatformWmsDetail::getIocode,iocodeList) .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); platformWmsJobMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsJob::getStatus,Constants.TWO) .in(PlatformWmsJob::getIocode,iocodeList) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)); List platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper().lambda() .in(PlatformWmsJob::getIocode,iocodeList) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){ List 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 setJobIds = new HashSet<>(jobIds); platformJobMapper.update(null,new UpdateWrapper() .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().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("【WMS】处理入库取消通知业务===============业务处理异常"+e.getMessage()); return returnFailReuslt("业务处理异常"); } return returnSuccessReuslt(null); } /** * 出库取消通知任务业务处理 * @param list 参数 * @return */ @Override public WmsBaseResponse cancelOutbound(WmsBaseRequest list) { try { if(list ==null||list.getData()==null || list.getData().size() ==0 ){ return returnFailReuslt("请求参数不正确,参数不能为空"); } List iocodeList = new ArrayList<>(); for(WmsActionNoticeRequest param :list.getData()){ if(StringUtils.isNotBlank(param.getIoCode())){ iocodeList.add(param.getIoCode()); } } if(iocodeList.size() ==0 ){ return returnFailReuslt("请求参数iocode不正确,参数不能为空"); } //取消全部数据状态为 【已取消】 platformWmsDetailMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsDetail::getStatus,Constants.TWO) .in(PlatformWmsDetail::getIocode,iocodeList) .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); platformWmsJobMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsJob::getStatus,Constants.TWO) .in(PlatformWmsJob::getIocode,iocodeList) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO)); List platformWmsJob = platformWmsJobMapper.selectList(new QueryWrapper().lambda() .in(PlatformWmsJob::getIocode,iocodeList) .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsJob)){ List 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 setJobIds = new HashSet<>(jobIds); platformJobMapper.update(null,new UpdateWrapper() .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().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("【WMS】出库取消通知任务业务处理===============业务处理异常"+e.getMessage()); return returnFailReuslt("业务处理异常"); } return returnSuccessReuslt(null); } /** * 处理作业行数据的运输总量信息 * @param jobList 参数 * @return */ @Override public void computjobTotalNum(List jobList) { if(jobList==null || jobList.size()==0){ return; } for(Integer jobId : jobList){ BigDecimal num = new BigDecimal(0); List details = platformWmsDetailMapper.selectList( new QueryWrapper().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().lambda() .set(PlatformJob::getTotalNum,num) .eq(PlatformJob::getOrigin, Constants.ZERO) .eq(PlatformJob::getId, jobId)); } } } /** * 作业完成通知任务业务处理 * @param list 参数 * @return */ @Override public WmsBaseResponse doneTask(WmsBaseRequest list) { try { if(list ==null||list.getData()==null || list.getData().size() ==0){ return returnFailReuslt("请求参数不正确,参数不能为空"); } List iocodeList = new ArrayList<>(); for(WmsActionNoticeRequest param :list.getData()){ if(StringUtils.isNotBlank(param.getIoCode())){ iocodeList.add(param.getIoCode()); } } if(iocodeList.size() ==0 ){ return returnFailReuslt("请求参数iocode不正确,参数不能为空"); } //取消全部数据状态为 【已完成】 platformWmsDetailMapper.update(null,new UpdateWrapper().lambda() .set(PlatformWmsDetail::getStatus,Constants.ONE) .in(PlatformWmsDetail::getIocode,iocodeList) .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)); }catch (Exception e){ log.error("【WMS】作业完成通知任务业务处理===============业务处理异常"+e.getMessage()); return returnFailReuslt("业务处理异常"); } return returnSuccessReuslt(null); } /** * 封装错误返回对象 * @param msg * @return */ private WmsBaseResponse returnFailReuslt(String msg) { WmsBaseResponse response = new WmsBaseResponse(); response.setCode(-1); response.setData(new ArrayList<>()); WmsBaseDataResponse rData = new WmsBaseDataResponse(); rData.setMsgDescr(msg); rData.setSuccess("-1"); response.getData().add(rData); return response; } /** * 封装成功返回对象 * @param msg * @return */ private WmsBaseResponse returnSuccessReuslt(String msg) { WmsBaseResponse response = new WmsBaseResponse(); response.setCode(1); response.setData(new ArrayList<>()); WmsBaseDataResponse rData = new WmsBaseDataResponse(); rData.setMsgDescr(StringUtils.defaultString(msg,"操作成功")); rData.setSuccess("1"); response.getData().add(rData); return response; } }