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