From 4d0bbb93c6e5be3515157326089eff6ee4581ccc Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 13 八月 2024 17:41:53 +0800 Subject: [PATCH] 最新版本 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java | 205 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 196 insertions(+), 9 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java index 08b14c1..2560fdc 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/wms/WmsServiceImpl.java @@ -1,19 +1,27 @@ package com.doumee.service.business.impl.wms; -import com.doumee.core.wms.model.request.WmsActionNoticeRequest; -import com.doumee.core.wms.model.request.WmsInboundNoticeRequest; -import com.doumee.core.wms.model.request.WmsOutboundNoticeRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.doumee.core.utils.Constants; +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.dao.business.CarsMapper; +import com.doumee.dao.business.PlatformJobMapper; import com.doumee.dao.business.PlatformWmsDetailMapper; import com.doumee.dao.business.PlatformWmsJobMapper; +import com.doumee.dao.business.model.Cars; +import com.doumee.dao.business.model.PlatformJob; +import com.doumee.dao.business.model.PlatformWmsDetail; import com.doumee.dao.business.model.PlatformWmsJob; import com.doumee.service.business.WmsService; 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 java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -26,6 +34,10 @@ @Autowired private PlatformWmsJobMapper platformWmsJobMapper; @Autowired + private CarsMapper carsMapper; + @Autowired + private PlatformJobMapper platformJobMapper; + @Autowired private PlatformWmsDetailMapper platformWmsDetailMapper; /** @@ -34,17 +46,130 @@ * @return */ @Override + @Transactional public WmsBaseResponse inboundNotice(List<WmsInboundNoticeRequest> list) { - //TODO-------------------澶勭悊鍏ュ簱閫氱煡涓氬姟-------------------- if(list ==null || list.size() ==0){ return returnFailReuslt("璇锋眰鍙傛暟涓嶆纭紝鍙傛暟涓嶈兘涓虹┖"); } - WmsBaseResponse response = new WmsBaseResponse(); - response.setData(new ArrayList<>()); + List<PlatformJob> jobList = new ArrayList<>(); + List<PlatformWmsDetail> details = new ArrayList<>(); + List<String> iocodeList = new ArrayList<>(); + for(WmsInboundNoticeRequest param : list){ + 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<PlatformWmsJob>().lambda() + .eq(PlatformWmsJob::getCarryBillCode,param.getCarrierBillCode()) + .eq(PlatformWmsJob::getIsdeleted, Constants.ZERO) + .last("limit 1" )); - return response; + if(job == null){ + PlatformJob model =dealJobBizInbound(param); + job = new PlatformWmsJob(); + job.setCreateDate(new Date()); + job.setIsdeleted(Constants.ZERO); + job.setIsNew(Constants.ONE); + job.setCarryBillCode(param.getCarrierBillCode()); + job.setIocode(param.getIoCode()); + job.setCarrierName(param.getCarrierName()); + job.setPlateNumber(param.getPlateNumber()); + job.setType(Constants.ONE); + job.setIoCreatedate(param.getCreateDate()); + job.setJobId(model.getId()); + job.setDriverPhone(param.getDriverPhone()); + platformWmsJobMapper.insert(job); + jobList.add(model); + } + 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.getId()); + entity.setIoQty(d.getIoQty()); + 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<PlatformWmsDetail>().lambda() + .set(PlatformWmsDetail::getIsdeleted,Constants.ONE) + .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) + .eq(PlatformWmsDetail::getJobId,job.getJobId()) + .in(PlatformWmsDetail::getIocode,iocodeList) + ); + } + } + } + if(details.size()>0){ + platformWmsDetailMapper.insert(details); + } + if(jobList.size()>0){ + startEndNoticeToDriver(jobList); + } + return returnSuccessReuslt(null); } + private void startEndNoticeToDriver(List<PlatformJob> jobList) { + for(PlatformJob job : jobList){ + //-----TODO-----------浠诲悍锛屽彂閫佸徃鏈哄叕浼楀彿鍜岀煭淇¢�氱煡 + } + } + + 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());//榛樿寰呯‘璁ょ姸鎬� + Cars car = carsMapper.selectOne(new QueryWrapper<Cars>() + .select("*,(select count(1) from platform_job b where b.plate_num='"+param.getPlateNumber()+"' and b.status in()) as jobNum") + .lambda() + .eq(Cars::getIsdeleted,Constants.ZERO) + .eq(Cars::getType,Constants.ONE) + .eq(Cars::getCode,param.getPlateNumber())); + if(car !=null){ + //濡傛灉鏄嚜鏈夌墿娴佽溅 + job.setType(Constants.platformJobType.zycxh);//鑷湁杞﹀嵏璐� + if(Constants.equalsInteger(car.getInStatus(),Constants.ONE) && car.getJobNum() == 0) { + //濡傛灉杞﹁締鍦ㄥ洯 + job.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());//鍦ㄥ洯鏃犱綔涓氱姸鎬侊紝鍒欒嚜鍔ㄣ�愬凡绛惧埌銆戝鐞� + } + } + platformJobMapper.insert(job); + return 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());//榛樿寰呯‘璁ょ姸鎬� + Cars car = carsMapper.selectOne(new QueryWrapper<Cars>() + .select("*,(select count(1) from platform_job b where b.plate_num='"+param.getPlateNumber()+"' and b.status in()) as jobNum") + .lambda() + .eq(Cars::getIsdeleted,Constants.ZERO) + .eq(Cars::getType,Constants.ONE) + .eq(Cars::getCode,param.getPlateNumber())); + if(car !=null){ + //濡傛灉鏄嚜鏈夌墿娴佽溅 + job.setType(Constants.platformJobType.zyczh);//鑷湁杞﹁璐� + if(Constants.equalsInteger(car.getInStatus(),Constants.ONE) && car.getJobNum() == 0) { + //濡傛灉杞﹁締鍦ㄥ洯 + job.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());//鍦ㄥ洯鏃犱綔涓氱姸鎬侊紝鍒欒嚜鍔ㄣ�愬凡绛惧埌銆戝鐞� + } + } + platformJobMapper.insert(job); + return job; + } /** @@ -54,11 +179,73 @@ */ @Override public WmsBaseResponse outboundNotice(List<WmsOutboundNoticeRequest> list) { - //TODO-------------------澶勭悊鍑哄簱閫氱煡涓氬姟-------------------- if(list ==null || list.size() ==0){ return returnFailReuslt("璇锋眰鍙傛暟涓嶆纭紝鍙傛暟涓嶈兘涓虹┖"); } - return null; + List<PlatformJob> jobList = new ArrayList<>(); + List<PlatformWmsDetail> details = new ArrayList<>(); + List<String> iocodeList = new ArrayList<>(); + for(WmsOutboundNoticeRequest param : list){ + 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<PlatformWmsJob>().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.setIsNew(Constants.ONE); + job.setCarryBillCode(param.getCarrierBillCode()); + job.setIocode(param.getIoCode()); + job.setCarrierName(param.getCarrierName()); + job.setPlateNumber(param.getPlateNumber()); + job.setType(Constants.ONE); + job.setIoCreatedate(param.getCreateDate()); + job.setJobId(model.getId()); + job.setDriverPhone(param.getDriverPhone()); + platformWmsJobMapper.insert(job); + jobList.add(model); + } + 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.getId()); + entity.setIoQty(d.getIoQty()); + 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<PlatformWmsDetail>().lambda() + .set(PlatformWmsDetail::getIsdeleted,Constants.ONE) + .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) + .eq(PlatformWmsDetail::getJobId,job.getJobId()) + .in(PlatformWmsDetail::getIocode,iocodeList) + ); + } + } + } + if(details.size()>0){ + platformWmsDetailMapper.insert(details); + } + if(jobList.size()>0){ + startEndNoticeToDriver(jobList); + } + return returnSuccessReuslt(null); } /** * 鍏ュ簱鍙栨秷閫氱煡浠诲姟涓氬姟澶勭悊 -- Gitblit v1.9.3