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

更新客户订单

DLC 1 éve
szülő
commit
fd87e3e957

+ 28 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProductDetailDao.java

@@ -2,8 +2,36 @@ package com.rongwei.bscommon.sys.dao;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsCustomerManagementDo;
 import com.rongwei.bsentity.domain.ApsProductDetailDo;
+import com.rongwei.bsentity.domain.ApsProductionOrderDo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 public interface ApsProductDetailDao extends BaseMapper<ApsProductDetailDo> {
 
+
+    @Select({" <script>",
+            "select * from aps_production_order where DELETED='0' and CUSTOMORDERNO in",
+            " <foreach collection=\"orderNos\" item=\"orderno\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
+            "  #{orderno}",
+            "</foreach>",
+            "</script>"})
+    List<ApsProductionOrderDo> getProductionOrders(@Param("orderNos") List<String> orderNos);
+
+    @Select({" <script>",
+            "select d.* from aps_product_detail d\n" +
+            "left join aps_production_order o on o.DELETED='0' and o.ID=d.MAINID\n" +
+            "where d.DELETED='0' and IFNULL(d.CUSTOMORDERDETAILID,'')!='' and o.CUSTOMORDERNO in",
+            " <foreach collection=\"orderNos\" item=\"orderno\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
+            "  #{orderno}",
+            "</foreach>",
+            "</script>"})
+    List<ApsProductDetailDo> getProductDetails(@Param("orderNos") List<String> orderNos);
+
+    @Select("select ID,CUSTOMERNAME,DELIVERYTIME from aps_customer_management where DELETED='0'")
+    List<ApsCustomerManagementDo> getCustomerData();
+
 }

+ 17 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/SlaveOracleDao.java

@@ -13,15 +13,28 @@ public interface SlaveOracleDao {
 
     /**
      * 获取创新数据库的客户订单
+     *
      * @return
      */
-    @Select("select * from V_NC_ORDER where ORDERNO=#{ncOrderNo}")
-    VNcOrderVo getVNcOrderVo(@Param("ncOrderNo") String ncOrderNo);
+
+    @Select({" <script>",
+            "select * from V_NC_ORDER where ORDERNO in",
+            " <foreach collection=\"orderNos\" item=\"orderno\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
+            "  #{orderno}",
+            "</foreach>",
+            "</script>"})
+    List<VNcOrderVo> getVNcOrderVo(@Param("orderNos") List<String> orderNos);
 
     /**
      * 获取创新数据库的客户订单明细
+     *
      * @return
      */
-    @Select("select * from V_NC_ORDER_DETAIL where ORDERNO=#{ncOrderNo}")
-    List<VNcOrderDetailVo> getVNcOrderDetailVo(@Param("ncOrderNo") String ncOrderNo);
+    @Select({" <script>",
+            "select * from V_NC_ORDER_DETAIL where ORDERNO in",
+            " <foreach collection=\"orderNos\" item=\"orderno\" index=\"index\" open=\"(\" close=\")\" separator=\",\"> ",
+            "  #{orderno}",
+            "</foreach>",
+            "</script>"})
+    List<VNcOrderDetailVo> getVNcOrderDetailVo(@Param("orderNos") List<String> orderNos);
 }

+ 5 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProductDetailService.java

@@ -2,8 +2,11 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsProductDetailDo;
+import com.rongwei.bsentity.domain.ApsProductionOrderDo;
+import com.rongwei.bsentity.domain.VNcOrderVo;
 import com.rongwei.rwcommon.base.R;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -17,4 +20,6 @@ import java.util.Map;
 public interface ApsProductDetailService extends IService<ApsProductDetailDo> {
 
     R getCustomOrderData(Map<String, Object> params);
+
+    R updateCustomOrder(List<String> orderNos);
 }

+ 2 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/SlaveSourceService.java

@@ -10,8 +10,8 @@ import java.util.List;
 public interface SlaveSourceService {
 
     @DS("slave")
-    VNcOrderVo getVNcOrderVo(String ncOrderNo);
+    List<VNcOrderVo> getVNcOrderVo(List<String> orderNos);
 
     @DS("slave")
-    List<VNcOrderDetailVo> getVNcOrderDetailVo(String ncOrderNo);
+    List<VNcOrderDetailVo> getVNcOrderDetailVo(List<String> orderNos);
 }

+ 141 - 6
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductDetailServiceImpl.java

@@ -1,16 +1,22 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.ApsProductDetailDao;
 import com.rongwei.bscommon.sys.service.ApsProductDetailService;
+import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
 import com.rongwei.bscommon.sys.service.SlaveSourceService;
-import com.rongwei.bsentity.domain.ApsProductDetailDo;
-import com.rongwei.bsentity.domain.VNcOrderVo;
+import com.rongwei.bsentity.domain.*;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -26,21 +32,150 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
     @Autowired
     private SlaveSourceService slaveSourceService;
 
+    @Autowired
+    private ApsProductionOrderService apsProductionOrderService;
+
+    @Autowired
+    private ApsProductDetailService apsProductDetailService;
+
+    @Autowired
+    private ApsProductDetailDao apsProductDetailDao;
+
     /*
     获取客户订单
      */
     @Override
     public R getCustomOrderData(Map<String, Object> params) {
         R r = new R();
-        String ncOrderNo = params.get("CUSTOMORDERNO").toString();
-        VNcOrderVo vNcOrderVo = slaveSourceService.getVNcOrderVo(ncOrderNo);
-        if (vNcOrderVo == null) {
+        List<String> orderNos = new ArrayList<>();
+        orderNos.add(params.get("CUSTOMORDERNO").toString());
+        List<VNcOrderVo> vNcOrderVos = slaveSourceService.getVNcOrderVo(orderNos);
+        if (vNcOrderVos.size() == 0) {
             return R.error("客户订单系统没有找到该订单");
         } else {
-            vNcOrderVo.setVNcOrderDetailVoList(slaveSourceService.getVNcOrderDetailVo(ncOrderNo));
+            VNcOrderVo vNcOrderVo = vNcOrderVos.get(0);
+            List<ApsCustomerManagementDo> customDatas = apsProductDetailDao.getCustomerData();
+            ApsCustomerManagementDo apsCustomerManagementDo = customDatas.stream().filter(cus -> cus.getCustomername().equals(vNcOrderVo.getCustomname())).findAny().orElse(null);
+            if (apsCustomerManagementDo != null) {
+                vNcOrderVo.setCustomid(apsCustomerManagementDo.getId());
+                vNcOrderVo.setDeliverytime(apsCustomerManagementDo.getDeliverytime());
+            }
+            vNcOrderVo.setVNcOrderDetailVoList(slaveSourceService.getVNcOrderDetailVo(orderNos));
             r.setCode("200");
             r.setData(vNcOrderVo);
             return r;
         }
     }
+
+    /*
+    更新客户订单
+     */
+    @Override
+    public R updateCustomOrder(List<String> orderNos) {
+        StringBuffer noOrderNos = new StringBuffer();//不存在客户订单系统里的客户订单号
+        List<String> hasOrderNos = new ArrayList<>();//存在客户订单系统里的客户订单号
+
+        //客户订单系统的数据
+        List<VNcOrderVo> vNcOrderVoList = slaveSourceService.getVNcOrderVo(orderNos);
+        List<VNcOrderDetailVo> vNcOrderDetailVos = slaveSourceService.getVNcOrderDetailVo(orderNos);
+        for (String orderno : orderNos) {
+            if (vNcOrderVoList.stream().filter(nco -> nco.getOrderno().equals(orderno)).collect(Collectors.toList()).size() == 0) {
+                noOrderNos.append(orderno + ",");
+            } else {
+                hasOrderNos.add(orderno);
+            }
+        }
+
+        //本系统的订单信息
+        List<ApsProductionOrderDo> apsProductionOrderDos = apsProductDetailDao.getProductionOrders(hasOrderNos);
+        List<ApsProductDetailDo> apsProductDetailDos = apsProductDetailDao.getProductDetails(hasOrderNos);
+        List<ApsProductionOrderDo> apsProductionOrderDoList = new ArrayList<>();
+        List<ApsProductDetailDo> apsProductDetailDoList = new ArrayList<>();
+        List<String> delProductDetailIdList = new ArrayList<>();
+        List<ApsCustomerManagementDo> customDatas = apsProductDetailDao.getCustomerData();
+        for (ApsProductionOrderDo apsProductionOrderDo : apsProductionOrderDos) {
+            //主表
+            VNcOrderVo vNcOrderVo = vNcOrderVoList.stream().filter(nco -> nco.getOrderno().equals(apsProductionOrderDo.getCustomorderno())).findAny().orElse(null);
+            ApsCustomerManagementDo apsCustomerManagementDo = customDatas.stream().filter(cus -> cus.getCustomername().equals(vNcOrderVo.getCustomname())).findAny().orElse(null);
+            if (apsCustomerManagementDo != null) {
+                apsProductionOrderDo.setCustomid(apsCustomerManagementDo.getId());
+                apsProductionOrderDo.setCustomname(apsCustomerManagementDo.getCustomername());
+                apsProductionOrderDo.setDeliverytime(apsCustomerManagementDo.getDeliverytime());
+            } else {
+                apsProductionOrderDo.setCustomid("");
+                apsProductionOrderDo.setCustomname("");
+                apsProductionOrderDo.setDeliverytime(null);
+            }
+
+            apsProductionOrderDo.setOrderdate(vNcOrderVo.getOrderdate());
+            apsProductionOrderDo.setRemark(vNcOrderVo.getRemark());
+            apsProductionOrderDo.setDeliverydate(vNcOrderVo.getDeliverydate());
+            apsProductionOrderDo.setBelongfactory(vNcOrderVo.getBelongfactory());
+
+            //明细
+            //客户订单系统的明细数据
+            List<VNcOrderDetailVo> vNcOrderDetailVoList = vNcOrderDetailVos.stream().filter(vod -> vod.getOrderno().equals(apsProductionOrderDo.getCustomorderno())).collect(Collectors.toList());
+            for (ApsProductDetailDo apsProductDetailDo : apsProductDetailDos) {
+                VNcOrderDetailVo vNcOrderDetailVo = vNcOrderDetailVoList.stream().filter(vodl -> vodl.getId().equals(apsProductDetailDo.getCustomorderdetailid())).findAny().orElse(null);
+                if (vNcOrderDetailVo != null) {
+                    //存在则更新
+                    apsProductDetailDo.setMaterialcode(vNcOrderDetailVo.getMaterialcode());
+                    apsProductDetailDo.setMaterialname(vNcOrderDetailVo.getMaterialname());
+                    apsProductDetailDo.setSpecialfication(vNcOrderDetailVo.getSpecialfication());
+                    apsProductDetailDo.setAlloy(vNcOrderDetailVo.getAlloy());
+                    apsProductDetailDo.setAlloystatus(vNcOrderDetailVo.getAlloystatus());
+                    apsProductDetailDo.setThickness(vNcOrderDetailVo.getThickness());
+                    apsProductDetailDo.setProwidth(vNcOrderDetailVo.getProwidth());
+                    apsProductDetailDo.setProlength(vNcOrderDetailVo.getProlength());
+                    apsProductDetailDo.setTotalordercount(vNcOrderDetailVo.getTotalordercount());
+                    apsProductDetailDo.setRollnum(vNcOrderDetailVo.getRollnum());
+                    apsProductDetailDo.setNumberunit(vNcOrderDetailVo.getNumberunit());
+                    apsProductDetailDo.setRemark(vNcOrderDetailVo.getRemark());
+
+                    apsProductDetailDoList.add(apsProductDetailDo);
+                } else {
+                    //不存在则删除
+                    delProductDetailIdList.add(apsProductDetailDo.getId());
+                }
+
+                vNcOrderDetailVoList.remove(vNcOrderDetailVo);
+            }
+
+            //客户系统新增的明细
+            for (VNcOrderDetailVo vNcOrderDetailVo : vNcOrderDetailVoList) {
+                ApsProductDetailDo apsProductDetailDo = BeanUtil.toBean(vNcOrderDetailVo, ApsProductDetailDo.class);
+                apsProductDetailDo.setId(SecurityUtil.getUUID());
+                apsProductDetailDo.setProductstatus("10");
+                apsProductDetailDo.setMainid(apsProductionOrderDo.getId());
+                apsProductDetailDo.setCustomorderdetailid(vNcOrderDetailVo.getId());
+
+                apsProductDetailDoList.add(apsProductDetailDo);
+            }
+
+            apsProductionOrderDoList.add(apsProductionOrderDo);
+        }
+
+        boolean bool1 = true;
+        boolean bool2 = true;
+        boolean bool3 = true;
+        if (apsProductionOrderDoList.size() > 0) {
+            bool1 = apsProductionOrderService.saveOrUpdateBatch(apsProductionOrderDoList);
+        }
+        if (apsProductDetailDoList.size() > 0) {
+            bool2 = apsProductDetailService.saveOrUpdateBatch(apsProductDetailDoList);
+        }
+        if (delProductDetailIdList.size() > 0) {
+            bool3 = apsProductDetailService.removeByIds(delProductDetailIdList);
+        }
+
+        if (bool1 && bool2 && bool3) {
+            if (StringUtils.isBlank(noOrderNos.toString())) {
+                return R.ok("更新成功");
+            } else {
+                return R.ok("客户订单:" + noOrderNos + "系统没有找到该订单,其他订单更新成功");
+            }
+        } else {
+            return R.error("获取客户订单系统订单失败,请联系管理员");
+        }
+    }
 }

+ 4 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/SlaveSourceServiceImpl.java

@@ -18,14 +18,14 @@ public class SlaveSourceServiceImpl implements SlaveSourceService {
 
     @Override
     @DS("slave")
-    public VNcOrderVo getVNcOrderVo(String ncOrderNo) {
-        return slaveOracleDao.getVNcOrderVo(ncOrderNo);
+    public List<VNcOrderVo> getVNcOrderVo(List<String> orderNos) {
+        return slaveOracleDao.getVNcOrderVo(orderNos);
     }
 
     @Override
     @DS("slave")
-    public List<VNcOrderDetailVo> getVNcOrderDetailVo(String ncOrderNo) {
-        return slaveOracleDao.getVNcOrderDetailVo(ncOrderNo);
+    public List<VNcOrderDetailVo> getVNcOrderDetailVo(List<String> orderNos) {
+        return slaveOracleDao.getVNcOrderDetailVo(orderNos);
     }
 
 }

+ 115 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCustomerManagementDo.java

@@ -0,0 +1,115 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 客户管理
+ * @TableName aps_customer_management
+ */
+@TableName(value ="aps_customer_management")
+@Data
+public class ApsCustomerManagementDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     *
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 客户编号
+     */
+    private String customerunit;
+
+    /**
+     * 客户名称
+     */
+    private String customername;
+
+    /**
+     * 客户简称
+     */
+    private String customerabbreviation;
+
+    /**
+     * 送货地址
+     */
+    private String deliveryaddress;
+
+    /**
+     * 送货时长
+     */
+    private Integer deliverytime;
+
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String contactsmobile;
+
+    /**
+     * 仓库ID
+     */
+    private String storeid;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProductDetailDo.java

@@ -142,5 +142,10 @@ public class ApsProductDetailDo extends BaseDo {
      */
     private String materialid;
 
+    /**
+     * 客户订单明细ID
+     */
+    private String customorderdetailid;
+
     private static final long serialVersionUID = 1L;
 }

+ 9 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/VNcOrderDetailVo.java

@@ -6,6 +6,14 @@ import java.math.BigDecimal;
 
 @Data
 public class VNcOrderDetailVo {
+    /**
+     * 客户订单明细ID
+     */
+    private String id;
+    /**
+     * 客户订单号
+     */
+    private String orderno;
     /**
      * 物料编码
      */
@@ -41,7 +49,7 @@ public class VNcOrderDetailVo {
     /**
      * 订单总数量
      */
-    private Integer totalordercount;
+    private BigDecimal totalordercount;
     /**
      * 卷数
      */

+ 9 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/VNcOrderVo.java

@@ -10,11 +10,19 @@ public class VNcOrderVo {
     /**
      * 客户订单号
      */
-    private String customorderno;
+    private String orderno;
+    /**
+     * 客户ID
+     */
+    private String customid;
     /**
      * 客户名称
      */
     private String customname;
+    /**
+     * 送货时长
+     */
+    private Integer deliverytime;
     /**
      * 下单日期
      */

+ 38 - 0
cx-aps/cx-aps-entity/src/main/resources/mapper/ApsCustomerManagementMapper.xml

@@ -0,0 +1,38 @@
+<?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="generator.mapper.ApsCustomerManagementMapper">
+
+    <resultMap id="BaseResultMap" type="generator.domain.ApsCustomerManagement">
+            <id property="id" column="ID" jdbcType="VARCHAR"/>
+            <result property="tenantid" column="TENANTID" jdbcType="VARCHAR"/>
+            <result property="roption" column="ROPTION" jdbcType="VARCHAR"/>
+            <result property="deleted" column="DELETED" jdbcType="VARCHAR"/>
+            <result property="remark" column="REMARK" jdbcType="VARCHAR"/>
+            <result property="createdate" column="CREATEDATE" jdbcType="TIMESTAMP"/>
+            <result property="createuserid" column="CREATEUSERID" jdbcType="VARCHAR"/>
+            <result property="modifydate" column="MODIFYDATE" jdbcType="TIMESTAMP"/>
+            <result property="modifyuserid" column="MODIFYUSERID" jdbcType="VARCHAR"/>
+            <result property="createusername" column="CREATEUSERNAME" jdbcType="VARCHAR"/>
+            <result property="modifyusername" column="MODIFYUSERNAME" jdbcType="VARCHAR"/>
+            <result property="customerunit" column="CUSTOMERUNIT" jdbcType="VARCHAR"/>
+            <result property="customername" column="CUSTOMERNAME" jdbcType="VARCHAR"/>
+            <result property="customerabbreviation" column="CUSTOMERABBREVIATION" jdbcType="VARCHAR"/>
+            <result property="deliveryaddress" column="DELIVERYADDRESS" jdbcType="VARCHAR"/>
+            <result property="deliverytime" column="DELIVERYTIME" jdbcType="INTEGER"/>
+            <result property="contacts" column="CONTACTS" jdbcType="VARCHAR"/>
+            <result property="contactsmobile" column="CONTACTSMOBILE" jdbcType="VARCHAR"/>
+            <result property="storeid" column="STOREID" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,TENANTID,ROPTION,
+        DELETED,REMARK,CREATEDATE,
+        CREATEUSERID,MODIFYDATE,MODIFYUSERID,
+        CREATEUSERNAME,MODIFYUSERNAME,CUSTOMERUNIT,
+        CUSTOMERNAME,CUSTOMERABBREVIATION,DELIVERYADDRESS,
+        DELIVERYTIME,CONTACTS,CONTACTSMOBILE,
+        STOREID
+    </sql>
+</mapper>

+ 15 - 1
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProductDetailController.java

@@ -2,7 +2,6 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ApsProductDetailService;
-import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.rwcommon.base.R;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -41,5 +41,19 @@ public class ApsProductDetailController {
             return R.error("获取客户订单系统订单失败,请联系管理员");
         }
     }
+
+    /*
+    更新客户订单
+     */
+    @PostMapping("/updateCustomOrder")
+    public R updateCustomOrder(@RequestBody List<String> orderNos){
+        try {
+            log.info("更新客户订单;参数为:{}", orderNos);
+            return apsProductDetailService.updateCustomOrder(orderNos);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("获取客户订单系统订单失败,请联系管理员");
+        }
+    }
 }