Forráskód Böngészése

1.导入签收模板数据

13651387864 3 éve
szülő
commit
245ea79767

+ 31 - 0
suishenbang-framework/src/main/java/com/dgtly/framework/config/ThreadConfig.java

@@ -1,6 +1,7 @@
 package com.dgtly.framework.config;
 
 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.AsyncConfigurer;
 import org.springframework.scheduling.annotation.EnableAsync;
@@ -29,4 +30,34 @@ public class ThreadConfig implements AsyncConfigurer {
     }
 
 
+    @Bean("deliverOrderBaseExecutor")
+    public Executor deliverOrderBaseExecutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
+        threadPoolTaskExecutor.setCorePoolSize(4);
+        threadPoolTaskExecutor.setMaxPoolSize(4);
+        threadPoolTaskExecutor.setQueueCapacity(100);
+        threadPoolTaskExecutor.setThreadNamePrefix("deliverOrderBaseExecutor-");
+        return threadPoolTaskExecutor;
+    }
+
+    @Bean("tmsLogisticsStatusExecutor")
+    public Executor tmsLogisticsStatusExecutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
+        threadPoolTaskExecutor.setCorePoolSize(4);
+        threadPoolTaskExecutor.setMaxPoolSize(4);
+        threadPoolTaskExecutor.setQueueCapacity(100);
+        threadPoolTaskExecutor.setThreadNamePrefix("tmsLogisticsStatusExecutor-");
+        return threadPoolTaskExecutor;
+    }
+
+
+    @Bean("tmsLogisticsStatusDeleteExcutor")
+    public Executor tmsLogisticsStatusDeleteExcutor() {
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
+        threadPoolTaskExecutor.setCorePoolSize(4);
+        threadPoolTaskExecutor.setMaxPoolSize(4);
+        threadPoolTaskExecutor.setQueueCapacity(100);
+        threadPoolTaskExecutor.setThreadNamePrefix("tmsLogisticsStatusDeleteExcutor-");
+        return threadPoolTaskExecutor;
+    }
 }

+ 51 - 24
suishenbang-order/src/main/java/com/dgtly/order/controller/OrderBaseController.java

@@ -1,13 +1,17 @@
 package com.dgtly.order.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.dgtly.common.annotation.Log;
 import com.dgtly.common.core.domain.AjaxResult;
+import com.dgtly.common.enums.BusinessType;
 import com.dgtly.common.exception.base.BaseException;
 import com.dgtly.common.utils.MapDataUtil;
 import com.dgtly.common.utils.poi.ExcelUtil;
 import com.dgtly.order.domain.MetaHanaSalesOrder;
 import com.dgtly.order.domain.OrderDetailModel;
 import com.dgtly.order.service.IMetaHanaSalesOrderService;
+import com.dgtly.system.domain.SysBatchSignInfo;
+import com.dgtly.system.service.ISysBatchSignForService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -24,6 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import com.dgtly.common.core.controller.BaseController;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -48,6 +53,8 @@ public class OrderBaseController extends BaseController {
 
     @Value(value = "${ruoyi.cloudPath}")
     private String cloudPath;
+    @Autowired
+    private ISysBatchSignForService sysBatchSignForService;
 
 
     @RequiresPermissions("order:orderbase:view")
@@ -64,7 +71,7 @@ public class OrderBaseController extends BaseController {
     @ResponseBody
     public Object list(MetaHanaSalesOrder order) {
         startPage();
-        List<MetaHanaSalesOrder> list= metaHanaSalesOrderService.selectDistinctMetaHanaSalesOrder(order);
+        List<MetaHanaSalesOrder> list = metaHanaSalesOrderService.selectDistinctMetaHanaSalesOrder(order);
 
         return getDataTable(list);
     }
@@ -75,20 +82,20 @@ public class OrderBaseController extends BaseController {
      */
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") String id, ModelMap mmap) {
-        String url = cloudPath + "order"+"/order/meta-hana-sales-order/orderLineDetail?orderNumber=" + id;
+        String url = cloudPath + "order" + "/order/meta-hana-sales-order/orderLineDetail?orderNumber=" + id;
         //String url = "http://10.32.2.212:8000/" + "order"+"/order/meta-hana-sales-order/orderLineDetail?orderNumber=" + id;
-        String str= "";
-        try{
+        String str = "";
+        try {
             str = restTemplate.getForObject(url, String.class);
             JSONObject json = JSONObject.parseObject(str);
-            if(json.getInteger("code")==200){
-                OrderDetailModel order = json.getObject("data",OrderDetailModel.class);
-                mmap.put("orderBase",order);
-            }else{
-                throw new BaseException("order",json.getString("message"));
+            if (json.getInteger("code") == 200) {
+                OrderDetailModel order = json.getObject("data", OrderDetailModel.class);
+                mmap.put("orderBase", order);
+            } else {
+                throw new BaseException("order", json.getString("message"));
             }
-        }catch(Exception e){
-            logger.error("查询基础订单详情报错"+url,e);
+        } catch (Exception e) {
+            logger.error("查询基础订单详情报错" + url, e);
             throw e;
         }
 
@@ -98,11 +105,10 @@ public class OrderBaseController extends BaseController {
     @RequiresPermissions("order:orderbase:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(MetaHanaSalesOrder order)
-    {
+    public AjaxResult export(MetaHanaSalesOrder order) {
         List<MetaHanaSalesOrder> list = metaHanaSalesOrderService.selectDistinctMetaHanaSalesOrder(order);
-        if(list.size() >= 10000){
-            return new AjaxResult(301,"数据大于 10000 条Excel将无法打开,请过滤查询条件");
+        if (list.size() >= 10000) {
+            return new AjaxResult(301, "数据大于 10000 条Excel将无法打开,请过滤查询条件");
         }
         ExcelUtil<MetaHanaSalesOrder> util = new ExcelUtil<MetaHanaSalesOrder>(MetaHanaSalesOrder.class);
         return util.exportExcel(list, "订单数据");
@@ -110,32 +116,53 @@ public class OrderBaseController extends BaseController {
 
     /**
      * 批量刷新确认期望到货时间
+     *
      * @return
      */
     @RequiresPermissions("order:orderbase:refreshArrivalTime")
     @GetMapping("/refreshArrivalTime")
     @ResponseBody
-    public AjaxResult refreshArrivalTime()
-    {
+    public AjaxResult refreshArrivalTime() {
         AjaxResult rest = new AjaxResult();
-        String url = cloudPath + "order"+"/order/meta-hana-sales-order/dealHistoryData";
-        String str= "";
-        try{
+        String url = cloudPath + "order" + "/order/meta-hana-sales-order/dealHistoryData";
+        String str = "";
+        try {
             str = restTemplate.getForObject(url, String.class);
             JSONObject json = JSONObject.parseObject(str);
-            if(json.getInteger("code")==200){
+            if (json.getInteger("code") == 200) {
                 rest.setCode(0);
                 rest.setMsg("刷新成功");
             } else {
                 rest.setCode(-1);
                 rest.setMsg("刷新失败");
             }
-        }catch(Exception e){
-            logger.error("批量刷新确认期望到货时间"+url,e);
+        } catch (Exception e) {
+            logger.error("批量刷新确认期望到货时间" + url, e);
             throw e;
         }
         return rest;
     }
-}
 
+    /**
+     * 批量导入
+     */
+    @Log(title = "批量签收", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    @ResponseBody
+    public AjaxResult importData(MultipartFile file) throws Exception {
+        ExcelUtil<SysBatchSignInfo> util = new ExcelUtil<>(SysBatchSignInfo.class);
+        List<SysBatchSignInfo> list = util.importExcel(file.getInputStream());
+        if (list != null && list.size() > 0) {
+            int num = sysBatchSignForService.updateData(list);
+            if (num == 1) {
+                return AjaxResult.success("导入成功");
+            } else {
+                return AjaxResult.error("导入失败");
+            }
+        } else {
+            return AjaxResult.success("Excel没有数据");
+        }
 
+    }
+
+}

+ 16 - 0
suishenbang-order/src/main/resources/templates/order/orderbase/orderbase.html

@@ -94,6 +94,9 @@
                 <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="order:orderbase:export">
                     <i class="fa fa-download"></i> 导出
                 </a>
+                <a class="btn btn-info" onclick="$.table.importExcel()">
+                    <i class="fa fa-upload"></i> 导入
+                </a>
                 <a class="btn btn-danger" onclick="refreshArrivalTime()" shiro:hasPermission="order:orderbase:refreshArrivalTime">
                     <i class="fa fa-refresh"></i> 批量刷新确认期望到货时间
                 </a>
@@ -115,6 +118,7 @@
                 createUrl: prefix + "/add",
                 updateUrl: prefix + "/edit/{id}",
                 exportUrl: prefix + "/export",
+                importUrl: prefix + "/importData",
                 modalName: "订单基础信息",
                 columns: [{
                     checkbox: false
@@ -189,6 +193,7 @@
                 autoclose: true
             });
         });
+
         function refreshArrivalTime () {
             $.modal.confirm("批量刷新确认期望到货时间吗?", function() {
                 $.operate.get(prefix + "/refreshArrivalTime", function(result) {
@@ -203,4 +208,15 @@
         };
     </script>
 </body>
+<!-- 导入区域 -->
+<script id="importTpl" type="text/template">
+    <form enctype="multipart/form-data" class="mt20 mb10">
+        <div class="col-xs-offset-1">
+            <input type="file" id="file" name="file"/>
+            <font color="red" class="pull-left mt10">
+                提示:仅允许导入“xls”或“xlsx”格式文件!
+            </font>
+        </div>
+    </form>
+</script>
 </html>

+ 243 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/DeliverOrderBase.java

@@ -0,0 +1,243 @@
+package com.dgtly.system.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+public class DeliverOrderBase {
+
+	private Long id;
+
+	private String createBy;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date createTime;
+
+	private String updateBy;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date updateTime;
+
+	private String isDelete;
+
+	private String OrderNumber;
+
+	private String orderCreationTime;
+
+	private String deliveryNumber;
+
+	private String shipmentNumber;
+
+	private String belongTo;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date confirmTime;
+
+	private String confirmBy;
+
+	private String confirmNotice;
+
+	private String pushDisWarehouse;
+
+	private String evaluationStatus;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date evaluationTime;
+
+	private String evaluationBy;
+
+	private Integer evaluationServiceAttitude;
+
+	private Integer evaluationDamageCondition;
+
+	private Integer evaluationArriveTime;
+
+	private Integer evaluationHandlingConditions;
+
+	private String evaluation;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCreateBy() {
+		return createBy;
+	}
+
+	public void setCreateBy(String createBy) {
+		this.createBy = createBy;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateBy() {
+		return updateBy;
+	}
+
+	public void setUpdateBy(String updateBy) {
+		this.updateBy = updateBy;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getIsDelete() {
+		return isDelete;
+	}
+
+	public void setIsDelete(String isDelete) {
+		this.isDelete = isDelete;
+	}
+
+	public String getOrderNumber() {
+		return OrderNumber;
+	}
+
+	public void setOrderNumber(String orderNumber) {
+		OrderNumber = orderNumber;
+	}
+
+	public String getOrderCreationTime() {
+		return orderCreationTime;
+	}
+
+	public void setOrderCreationTime(String orderCreationTime) {
+		this.orderCreationTime = orderCreationTime;
+	}
+
+	public String getDeliveryNumber() {
+		return deliveryNumber;
+	}
+
+	public void setDeliveryNumber(String deliveryNumber) {
+		this.deliveryNumber = deliveryNumber;
+	}
+
+	public String getShipmentNumber() {
+		return shipmentNumber;
+	}
+
+	public void setShipmentNumber(String shipmentNumber) {
+		this.shipmentNumber = shipmentNumber;
+	}
+
+	public String getBelongTo() {
+		return belongTo;
+	}
+
+	public void setBelongTo(String belongTo) {
+		this.belongTo = belongTo;
+	}
+
+	public Date getConfirmTime() {
+		return confirmTime;
+	}
+
+	public void setConfirmTime(Date confirmTime) {
+		this.confirmTime = confirmTime;
+	}
+
+	public String getConfirmBy() {
+		return confirmBy;
+	}
+
+	public void setConfirmBy(String confirmBy) {
+		this.confirmBy = confirmBy;
+	}
+
+	public String getConfirmNotice() {
+		return confirmNotice;
+	}
+
+	public void setConfirmNotice(String confirmNotice) {
+		this.confirmNotice = confirmNotice;
+	}
+
+	public String getPushDisWarehouse() {
+		return pushDisWarehouse;
+	}
+
+	public void setPushDisWarehouse(String pushDisWarehouse) {
+		this.pushDisWarehouse = pushDisWarehouse;
+	}
+
+	public String getEvaluationStatus() {
+		return evaluationStatus;
+	}
+
+	public void setEvaluationStatus(String evaluationStatus) {
+		this.evaluationStatus = evaluationStatus;
+	}
+
+	public Date getEvaluationTime() {
+		return evaluationTime;
+	}
+
+	public void setEvaluationTime(Date evaluationTime) {
+		this.evaluationTime = evaluationTime;
+	}
+
+	public String getEvaluationBy() {
+		return evaluationBy;
+	}
+
+	public void setEvaluationBy(String evaluationBy) {
+		this.evaluationBy = evaluationBy;
+	}
+
+	public Integer getEvaluationServiceAttitude() {
+		return evaluationServiceAttitude;
+	}
+
+	public void setEvaluationServiceAttitude(Integer evaluationServiceAttitude) {
+		this.evaluationServiceAttitude = evaluationServiceAttitude;
+	}
+
+	public Integer getEvaluationDamageCondition() {
+		return evaluationDamageCondition;
+	}
+
+	public void setEvaluationDamageCondition(Integer evaluationDamageCondition) {
+		this.evaluationDamageCondition = evaluationDamageCondition;
+	}
+
+	public Integer getEvaluationArriveTime() {
+		return evaluationArriveTime;
+	}
+
+	public void setEvaluationArriveTime(Integer evaluationArriveTime) {
+		this.evaluationArriveTime = evaluationArriveTime;
+	}
+
+	public Integer getEvaluationHandlingConditions() {
+		return evaluationHandlingConditions;
+	}
+
+	public void setEvaluationHandlingConditions(Integer evaluationHandlingConditions) {
+		this.evaluationHandlingConditions = evaluationHandlingConditions;
+	}
+
+	public String getEvaluation() {
+		return evaluation;
+	}
+
+	public void setEvaluation(String evaluation) {
+		this.evaluation = evaluation;
+	}
+}

+ 18 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/SysBatchSignInfo.java

@@ -0,0 +1,18 @@
+package com.dgtly.system.domain;
+
+import com.dgtly.common.annotation.Excel;
+import com.dgtly.common.core.domain.BaseEntity;
+
+public class SysBatchSignInfo {
+
+    @Excel(name = "交货单", type = Excel.Type.IMPORT)
+    private String code;
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getCode() {
+        return code;
+    }
+}

+ 216 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/TmsLogisticsStatus.java

@@ -0,0 +1,216 @@
+package com.dgtly.system.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+public class TmsLogisticsStatus {
+
+	private Long id;
+
+	private String createBy;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date createTime;
+
+	private String updateBy;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date updateTime;
+
+	private String isDelete;
+
+	private String orderNumber;
+
+	private String orderCreationTime;
+
+	private String deliveryNumber;
+
+	private String tmsShipmentNumber;
+
+	private String customerCode;
+
+	private String status;
+
+	private String driverName;
+
+	private String carNumber;
+
+	private String driverPhone;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date assignTime;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date getGoodsTime;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date factoryTime;
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date arrivalGoodsTime;
+
+	private String transferOrder;
+
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCreateBy() {
+		return createBy;
+	}
+
+	public void setCreateBy(String createBy) {
+		this.createBy = createBy;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateBy() {
+		return updateBy;
+	}
+
+	public void setUpdateBy(String updateBy) {
+		this.updateBy = updateBy;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getIsDelete() {
+		return isDelete;
+	}
+
+	public void setIsDelete(String isDelete) {
+		this.isDelete = isDelete;
+	}
+
+	public String getOrderNumber() {
+		return orderNumber;
+	}
+
+	public void setOrderNumber(String orderNumber) {
+		this.orderNumber = orderNumber;
+	}
+
+	public String getOrderCreationTime() {
+		return orderCreationTime;
+	}
+
+	public void setOrderCreationTime(String orderCreationTime) {
+		this.orderCreationTime = orderCreationTime;
+	}
+
+	public String getDeliveryNumber() {
+		return deliveryNumber;
+	}
+
+	public void setDeliveryNumber(String deliveryNumber) {
+		this.deliveryNumber = deliveryNumber;
+	}
+
+	public String getTmsShipmentNumber() {
+		return tmsShipmentNumber;
+	}
+
+	public void setTmsShipmentNumber(String tmsShipmentNumber) {
+		this.tmsShipmentNumber = tmsShipmentNumber;
+	}
+
+	public String getCustomerCode() {
+		return customerCode;
+	}
+
+	public void setCustomerCode(String customerCode) {
+		this.customerCode = customerCode;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getDriverName() {
+		return driverName;
+	}
+
+	public void setDriverName(String driverName) {
+		this.driverName = driverName;
+	}
+
+	public String getCarNumber() {
+		return carNumber;
+	}
+
+	public void setCarNumber(String carNumber) {
+		this.carNumber = carNumber;
+	}
+
+	public String getDriverPhone() {
+		return driverPhone;
+	}
+
+	public void setDriverPhone(String driverPhone) {
+		this.driverPhone = driverPhone;
+	}
+
+	public Date getAssignTime() {
+		return assignTime;
+	}
+
+	public void setAssignTime(Date assignTime) {
+		this.assignTime = assignTime;
+	}
+
+	public Date getGetGoodsTime() {
+		return getGoodsTime;
+	}
+
+	public void setGetGoodsTime(Date getGoodsTime) {
+		this.getGoodsTime = getGoodsTime;
+	}
+
+	public Date getFactoryTime() {
+		return factoryTime;
+	}
+
+	public void setFactoryTime(Date factoryTime) {
+		this.factoryTime = factoryTime;
+	}
+
+	public Date getArrivalGoodsTime() {
+		return arrivalGoodsTime;
+	}
+
+	public void setArrivalGoodsTime(Date arrivalGoodsTime) {
+		this.arrivalGoodsTime = arrivalGoodsTime;
+	}
+
+	public String getTransferOrder() {
+		return transferOrder;
+	}
+
+	public void setTransferOrder(String transferOrder) {
+		this.transferOrder = transferOrder;
+	}
+}

+ 28 - 0
suishenbang-system/src/main/java/com/dgtly/system/mapper/SysBatchSignForMapper.java

@@ -0,0 +1,28 @@
+package com.dgtly.system.mapper;
+
+
+import com.dgtly.system.domain.DeliverOrderBase;
+import com.dgtly.system.domain.TmsLogisticsStatus;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 批量签收
+ * 
+ * @author mxy
+ * @date 2021-04-29
+ */
+public interface SysBatchSignForMapper {
+
+
+    public void delete(List<String> listData);
+
+
+    void saveTmsLogisticsStatus(@Param("list") List<TmsLogisticsStatus> list);
+
+    void saveDeliverOrderBaseList(@Param("list") List<DeliverOrderBase> list2);
+
+    List<Map<String, String>> selectByDeliveryNumber(@Param("list") List<String> listData);
+}

+ 21 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/ISysBatchSignForService.java

@@ -0,0 +1,21 @@
+package com.dgtly.system.service;
+
+
+import com.dgtly.system.domain.SysBatchSignInfo;
+
+import java.util.List;
+
+/**
+ * 批量签收
+ *
+ * @author mxy
+ */
+public interface ISysBatchSignForService {
+
+    /**
+     * 批量签收业务处理
+     * @param list
+     * @return
+     */
+    int updateData(List<SysBatchSignInfo> list);
+}

+ 160 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysBatchSignForServiceImpl.java

@@ -0,0 +1,160 @@
+package com.dgtly.system.service.impl;
+
+import com.dgtly.common.core.text.Convert;
+import com.dgtly.common.utils.DateUtils;
+import com.dgtly.system.domain.AssRelcustomerinfo;
+import com.dgtly.system.domain.DeliverOrderBase;
+import com.dgtly.system.domain.SysBatchSignInfo;
+import com.dgtly.system.domain.TmsLogisticsStatus;
+import com.dgtly.system.mapper.AssRelcustomerinfoMapper;
+import com.dgtly.system.mapper.SysBatchSignForMapper;
+import com.dgtly.system.service.IAssRelcustomerinfoService;
+import com.dgtly.system.service.ISysBatchSignForService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
+
+/**
+ * 批量签收
+ *
+ * @author mxy
+ * @date 2021-04-29
+ */
+@Service
+public class SysBatchSignForServiceImpl implements ISysBatchSignForService {
+
+    @Autowired
+    @Qualifier("deliverOrderBaseExecutor")
+    private Executor deliverOrderBaseExecutor;
+    @Autowired
+    @Qualifier("tmsLogisticsStatusExecutor")
+    private Executor tmsLogisticsStatusExecutor;
+    @Autowired
+    @Qualifier("tmsLogisticsStatusDeleteExcutor")
+    private Executor tmsLogisticsStatusDeleteExcutor;
+
+    @Autowired
+    private SysBatchSignForMapper sysBatchSignForMapper;
+
+
+    @Override
+    public int updateData(List<SysBatchSignInfo> list) {
+
+        //3个任务
+        //根据交货单号删除tms_logistics_status
+        //构建数据添加数据到tms_logistics_status
+        //构建数据添加数据到deliver_order_base
+        //异步线程
+        List<String> listData = new ArrayList<>();
+        list.forEach(s-> listData.add(s.getCode()));
+
+        CompletableFuture.allOf(
+                tmsLogisticsStatusDelete(listData),
+                tmsLogisticsStatusModel(listData)
+        ).join();
+
+        System.out.println("前面都执行完了,这个才能执行");
+
+        return 1;
+    }
+
+
+
+    //构建数据
+    private CompletableFuture<Void> tmsLogisticsStatusModel(List<String> listData) {
+        return CompletableFuture.runAsync(() ->{
+        List<TmsLogisticsStatus> list = new ArrayList<TmsLogisticsStatus>();
+        List<DeliverOrderBase> list2 = new ArrayList<DeliverOrderBase>();
+        List<Map<String,String>> list3 = sysBatchSignForMapper.selectByDeliveryNumber(listData);
+        for(int i=0;i<listData.size();i++){
+
+            //通过deliveryNumber查询数据
+            String deliverNum = listData.get(i);
+            DeliverOrderBase deliverOrderBase = new DeliverOrderBase();
+            TmsLogisticsStatus tmsLogisticsStatus = new TmsLogisticsStatus();
+            List<Map<String,String>> filter = list3.stream()
+                                                  .filter(map -> deliverNum.equals(map.get("deliverNum")))
+                                                  .collect(Collectors.toList());
+            if(filter !=null&&filter.size()>0){
+                tmsLogisticsStatus.setOrderNumber(filter.get(0).get("docNumber"));
+                tmsLogisticsStatus.setCustomerCode(filter.get(0).get("customerCode"));
+                deliverOrderBase.setOrderNumber(filter.get(0).get("docNumber"));
+                deliverOrderBase.setOrderCreationTime(filter.get(0).get("createDate"));
+                deliverOrderBase.setBelongTo(filter.get(0).get("customerCode"));
+            }else{
+                tmsLogisticsStatus.setOrderNumber("");
+                tmsLogisticsStatus.setCustomerCode("");
+                deliverOrderBase.setOrderNumber("");
+                deliverOrderBase.setOrderCreationTime("");
+                deliverOrderBase.setBelongTo("");
+            }
+
+            tmsLogisticsStatus.setCreateBy("SSB");
+            tmsLogisticsStatus.setCreateTime(new Date());
+            tmsLogisticsStatus.setUpdateBy("SSB");
+            tmsLogisticsStatus.setUpdateTime(new Date());
+            tmsLogisticsStatus.setIsDelete("0");
+
+            tmsLogisticsStatus.setOrderCreationTime("");
+            tmsLogisticsStatus.setDeliveryNumber(listData.get(i));
+            tmsLogisticsStatus.setTmsShipmentNumber(listData.get(i));
+
+            tmsLogisticsStatus.setStatus("3");
+            tmsLogisticsStatus.setDriverName("SSB");
+            tmsLogisticsStatus.setCarNumber("随身帮");
+            tmsLogisticsStatus.setDriverPhone("13888888888");
+            tmsLogisticsStatus.setAssignTime(new Date());
+            tmsLogisticsStatus.setGetGoodsTime(new Date());
+            tmsLogisticsStatus.setFactoryTime(new Date());
+            tmsLogisticsStatus.setArrivalGoodsTime(new Date());
+            tmsLogisticsStatus.setTransferOrder("n");
+            list.add(tmsLogisticsStatus);
+
+
+
+            deliverOrderBase.setCreateBy("SSB");
+            deliverOrderBase.setCreateTime(new Date());
+            deliverOrderBase.setUpdateBy("SSB");
+            deliverOrderBase.setUpdateTime(new Date());
+            deliverOrderBase.setIsDelete("0");
+
+            deliverOrderBase.setDeliveryNumber(listData.get(i));
+            deliverOrderBase.setShipmentNumber(listData.get(i));
+
+            deliverOrderBase.setConfirmTime(new Date());
+            deliverOrderBase.setConfirmBy("SSB");
+            deliverOrderBase.setConfirmNotice("n");
+            deliverOrderBase.setPushDisWarehouse("n");
+            deliverOrderBase.setEvaluationStatus("n");
+            deliverOrderBase.setEvaluationTime(null);
+            deliverOrderBase.setEvaluationBy(null);
+            deliverOrderBase.setEvaluationServiceAttitude(null);
+            deliverOrderBase.setEvaluationDamageCondition(null);
+            deliverOrderBase.setEvaluationArriveTime(null);
+            deliverOrderBase.setEvaluationHandlingConditions(null);
+            deliverOrderBase.setEvaluation(null);
+            list2.add(deliverOrderBase);
+        }
+        //插入数据
+        sysBatchSignForMapper.saveTmsLogisticsStatus(list);
+        sysBatchSignForMapper.saveDeliverOrderBaseList(list2);
+
+        },tmsLogisticsStatusExecutor);
+    }
+
+    //执行删除
+    private CompletableFuture<Void> tmsLogisticsStatusDelete(List<String> listData) {
+        return CompletableFuture.runAsync(() ->{
+            sysBatchSignForMapper.delete(listData);
+        },tmsLogisticsStatusDeleteExcutor);
+
+    }
+}

+ 83 - 0
suishenbang-system/src/main/resources/mapper/system/SysBatchSignForMapper.xml

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dgtly.system.mapper.SysBatchSignForMapper">
+
+
+
+    <insert id="saveTmsLogisticsStatus" parameterType="com.dgtly.system.domain.TmsLogisticsStatus">
+        insert into
+        tms_logistics_status(
+            create_by,create_time,update_by,update_time,is_delete,order_number,
+            order_creation_time,delivery_number,tms_shipment_number,customer_code,
+            status,driver_name,car_number,driver_phone,assign_time,get_goods_time,
+            factory_time,arrival_goods_time,transfer_order
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},
+            #{item.isDelete},#{item.orderNumber},#{item.orderCreationTime},
+            #{item.deliveryNumber},#{item.tmsShipmentNumber},#{item.customerCode},
+            #{item.status},#{item.driverName},#{item.carNumber},#{item.driverPhone},
+            #{item.assignTime},#{item.getGoodsTime},#{item.factoryTime},
+            #{item.arrivalGoodsTime},#{item.transferOrder}
+            )
+        </foreach>
+    </insert>
+
+
+
+    <insert id="saveDeliverOrderBaseList" parameterType="com.dgtly.system.domain.DeliverOrderBase">
+        insert into
+        deliver_order_base(
+                create_by,create_time,update_by,update_time,
+                is_delete,order_number,order_creation_time,delivery_number,
+                shipment_number,belong_to,confirm_time,confirm_by,confirm_notice,
+                push_dis_warehouse,evaluation_status,evaluation_time,evaluation_by,
+                evaluation_service_attitude,evaluation_damage_condition,evaluation_arrive_time,
+                evaluation_handling_conditions,evaluation
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.createBy},#{item.createTime},#{item.updateBy},
+            #{item.updateTime},#{item.isDelete},#{item.OrderNumber},
+            #{item.orderCreationTime},#{item.deliveryNumber},#{item.shipmentNumber},
+            #{item.belongTo},#{item.confirmTime},#{item.confirmBy},
+            #{item.confirmNotice},#{item.pushDisWarehouse},#{item.evaluationStatus},
+            #{item.evaluationTime},#{item.evaluationBy},#{item.evaluationServiceAttitude},
+            #{item.evaluationDamageCondition},#{item.evaluationArriveTime},#{item.evaluationHandlingConditions},
+            #{item.evaluation}
+            )
+        </foreach>
+
+    </insert>
+
+
+    <delete id="delete">
+      delete from tms_logistics_status where delivery_number in
+      <foreach collection="list" item="item" open="(" close=")" separator="," index="">
+        #{item}
+    </foreach>
+
+
+  </delete>
+
+
+    <select id="selectByDeliveryNumber" resultType="java.util.Map" parameterType="java.util.List">
+        select
+            IFNULL(DOC_NUMBER,'') as docNumber,
+            IFNULL(CUSTOMER_CODE,'') as customerCode,
+            IFNULL(CREATE_DATE_DELIVER,'') as createDate,
+            IFNULL(DELIVER_NUMBER,'') as deliverNum
+        from meta_hana_deliver_order WHERE DELIVER_NUMBER IN
+        <foreach collection="list" item="valueList" open="(" close=")" separator=",">
+            #{valueList}
+        </foreach>
+        GROUP BY DELIVER_NUMBER
+    </select>
+
+
+</mapper>