From 67a89b8332fbc2876f0c0cd284213d0244929cc1 Mon Sep 17 00:00:00 2001
From: chenhao <852066789@qq.com>
Date: Fri, 11 Apr 2025 11:29:31 +0800
Subject: [PATCH 1/2] =?UTF-8?q?build(ruoyi-admin):=20=E6=9B=B4=E6=96=B0=20?=
 =?UTF-8?q?Druid=20=E6=95=B0=E6=8D=AE=E6=BA=90=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 修改主库数据源 URL 为 121.199.168.157:3306/unis_pms- 更新主库数据源密码为 unis@db
---
 ruoyi-admin/src/main/resources/application-druid.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 1f967466..9a1072df 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,9 +6,9 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/unis_pms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://121.199.168.157:3306/unis_pms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: sagacity
+                password:  unis@db
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

From 07daa8bcc57ba91b503370b15663e388830c4681 Mon Sep 17 00:00:00 2001
From: chenhao <852066789@qq.com>
Date: Fri, 11 Apr 2025 11:51:41 +0800
Subject: [PATCH 2/2] =?UTF-8?q?refactor(sip):=20=E4=BC=98=E5=8C=96?=
 =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0=E9=80=BB?=
 =?UTF-8?q?=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 引入操作标志字段,对订单列表进行分类处理
- 新增批量插入、更新和删除的方法,提高效率
- 优化 SQL 语句,提升可读性和性能
- 调整代码格式,提高代码的整洁度
---
 .../sip/controller/OrderInfoController.java   |   3 +-
 .../java/com/ruoyi/sip/domain/OrderList.java  |  10 +
 .../com/ruoyi/sip/mapper/OrderInfoMapper.java |  13 ++
 .../ruoyi/sip/service/IOrderInfoService.java  |   1 +
 .../service/impl/OrderInfoServiceImpl.java    |  25 ++-
 .../mapper/manage/OrderInfoMapper.xml         | 173 +++++++++++++-----
 6 files changed, 173 insertions(+), 52 deletions(-)

diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java
index 7847c867..79880722 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java
@@ -1,6 +1,8 @@
 package com.ruoyi.sip.controller;
 
 import java.util.List;
+
+import com.ruoyi.sip.domain.OrderList;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -113,7 +115,6 @@ public class OrderInfoController extends BaseController
     {
         return toAjax(orderInfoService.updateOrderInfo(orderInfo));
     }
-
     /**
      * 删除合同档案
      */
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java
index 9db2f958..25821f1d 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java
@@ -41,6 +41,8 @@ public class OrderList extends BaseEntity
     @Excel(name = "总价")
     private BigDecimal amount;
 
+
+    private String operateFlag;
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
@@ -138,6 +140,14 @@ public class OrderList extends BaseEntity
         return deletedAt;
     }
 
+    public String getOperateFlag() {
+        return operateFlag;
+    }
+
+    public void setOperateFlag(String operateFlag) {
+        this.operateFlag = operateFlag;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java
index deae9a35..ab8d1f40 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OrderInfoMapper.java
@@ -84,4 +84,17 @@ public interface OrderInfoMapper
      * @return 结果
      */
     public int deleteOrderListByOrderId(Long id);
+
+    /**
+     * 删除合同清单
+     * @param id
+     * @return
+     */
+    int logicRemoveListById(List<OrderList> orderListList);
+
+    /**
+     * 更新合同清单
+     * @param orderListList
+     */
+    void updateListBatch(List<OrderList> orderListList);
 }
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOrderInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOrderInfoService.java
index 18ae4371..e2f71c43 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOrderInfoService.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOrderInfoService.java
@@ -2,6 +2,7 @@ package com.ruoyi.sip.service;
 
 import java.util.List;
 import com.ruoyi.sip.domain.OrderInfo;
+import com.ruoyi.sip.domain.OrderList;
 
 /**
  * 合同档案Service接口
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java
index 51bb3137..5ea2f8d1 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java
@@ -4,6 +4,9 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.util.ArrayList;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 import com.ruoyi.common.utils.StringUtils;
 import org.springframework.transaction.annotation.Transactional;
 import com.ruoyi.sip.domain.OrderList;
@@ -73,8 +76,26 @@ public class OrderInfoServiceImpl implements IOrderInfoService
     @Override
     public int updateOrderInfo(OrderInfo orderInfo)
     {
-        orderInfoMapper.deleteOrderListByOrderId(orderInfo.getId());
-        insertOrderList(orderInfo);
+        List<OrderList> orderListList = orderInfo.getOrderListList();
+        Map<String, List<OrderList>> operateMap =
+                orderListList.stream().collect(Collectors.groupingBy(OrderList::getOperateFlag));
+        //新增
+        List<OrderList> addList = operateMap.get("0");
+        if (addList!=null && !addList.isEmpty()){
+            orderInfoMapper.batchOrderList(addList);
+        }
+        //更新
+        List<OrderList> updateList = operateMap.get("1");
+        if (updateList!=null && !updateList.isEmpty()){
+
+            orderInfoMapper.updateListBatch(updateList);
+        }
+        //删除
+        List<OrderList> deleteList = operateMap.get("2");
+        if (deleteList!=null && !deleteList.isEmpty()){
+
+            orderInfoMapper.logicRemoveListById(deleteList);
+        }
         return orderInfoMapper.updateOrderInfo(orderInfo);
     }
 
diff --git a/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml
index 787afc66..2608ca93 100644
--- a/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/manage/OrderInfoMapper.xml
@@ -1,70 +1,116 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.sip.mapper.OrderInfoMapper">
-    
+
     <resultMap type="OrderInfo" id="OrderInfoResult">
-        <result property="id"    column="id"    />
-        <result property="projectCode"    column="project_code"    />
-        <result property="orderCode"    column="order_code"    />
-        <result property="versionCode"    column="version_code"    />
-        <result property="orderName"    column="order_name"    />
-        <result property="customerName"    column="customer_name"    />
-        <result property="customerContact"    column="customer_contact"    />
-        <result property="customerPhone"    column="customer_phone"    />
-        <result property="customerEmail"    column="customer_email"    />
-        <result property="orderType"    column="order_type"    />
-        <result property="orderDept"    column="order_dept"    />
-        <result property="partenerDept"    column="partener_dept"    />
-        <result property="orderDate"    column="order_date"    />
-        <result property="status"    column="status"    />
-        <result property="remark"    column="remark"    />
-        <result property="createdAt"    column="created_at"    />
-        <result property="updatedAt"    column="updated_at"    />
-        <result property="deletedAt"    column="deleted_at"    />
+        <result property="id" column="id"/>
+        <result property="projectCode" column="project_code"/>
+        <result property="orderCode" column="order_code"/>
+        <result property="versionCode" column="version_code"/>
+        <result property="orderName" column="order_name"/>
+        <result property="customerName" column="customer_name"/>
+        <result property="customerContact" column="customer_contact"/>
+        <result property="customerPhone" column="customer_phone"/>
+        <result property="customerEmail" column="customer_email"/>
+        <result property="orderType" column="order_type"/>
+        <result property="orderDept" column="order_dept"/>
+        <result property="partenerDept" column="partener_dept"/>
+        <result property="orderDate" column="order_date"/>
+        <result property="status" column="status"/>
+        <result property="remark" column="remark"/>
+        <result property="createdAt" column="created_at"/>
+        <result property="updatedAt" column="updated_at"/>
+        <result property="deletedAt" column="deleted_at"/>
     </resultMap>
 
     <resultMap id="OrderInfoOrderListResult" type="OrderInfo" extends="OrderInfoResult">
-        <collection property="orderListList" ofType="OrderList" column="id" select="selectOrderListList" />
+        <collection property="orderListList" ofType="OrderList" column="id" select="selectOrderListList"/>
     </resultMap>
 
     <resultMap type="OrderList" id="OrderListResult">
-        <result property="id"    column="id"    />
-        <result property="orderId"    column="order_id"    />
-        <result property="productId"    column="product_id"    />
-        <result property="quantity"    column="quantity"    />
-        <result property="price"    column="price"    />
-        <result property="amount"    column="amount"    />
-        <result property="remark"    column="remark"    />
-        <result property="createdAt"    column="created_at"    />
-        <result property="updatedAt"    column="updated_at"    />
-        <result property="deletedAt"    column="deleted_at"    />
+        <result property="id" column="id"/>
+        <result property="orderId" column="order_id"/>
+        <result property="productId" column="product_id"/>
+        <result property="quantity" column="quantity"/>
+        <result property="price" column="price"/>
+        <result property="amount" column="amount"/>
+        <result property="remark" column="remark"/>
+        <result property="createdAt" column="created_at"/>
+        <result property="updatedAt" column="updated_at"/>
+        <result property="deletedAt" column="deleted_at"/>
     </resultMap>
 
     <sql id="selectOrderInfoVo">
-        select id, project_code, order_code, version_code, order_name, customer_name, customer_contact, customer_phone, customer_email, order_type, order_dept, partener_dept, order_date, status, remark, created_at, updated_at, deleted_at from order_info
+        select id,
+               project_code,
+               order_code,
+               version_code,
+               order_name,
+               customer_name,
+               customer_contact,
+               customer_phone,
+               customer_email,
+               order_type,
+               order_dept,
+               partener_dept,
+               order_date,
+               status,
+               remark,
+               created_at,
+               updated_at,
+               deleted_at
+        from order_info
     </sql>
 
     <select id="selectOrderInfoList" parameterType="OrderInfo" resultMap="OrderInfoResult">
         <include refid="selectOrderInfoVo"/>
         <where>
-             and status=0
-            <if test="orderCode != null  and orderCode != ''"> and order_code like concat('%', #{orderCode}, '%')</if>
-            <if test="orderName != null  and orderName != ''"> and order_name like concat('%', #{orderName}, '%')</if>
-            <if test="customerName != null  and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
-            <if test="orderType != null and orderType != ''"> and order_type = #{orderType}</if>
+            and status=0
+            <if test="orderCode != null  and orderCode != ''">and order_code like concat('%', #{orderCode}, '%')</if>
+            <if test="orderName != null  and orderName != ''">and order_name like concat('%', #{orderName}, '%')</if>
+            <if test="customerName != null  and customerName != ''">and customer_name like concat('%', #{customerName},
+                '%')
+            </if>
+            <if test="orderType != null and orderType != ''">and order_type = #{orderType}</if>
         </where>
     </select>
-    
+
     <select id="selectOrderInfoById" parameterType="Long" resultMap="OrderInfoOrderListResult">
-        select id, project_code, order_code, version_code, order_name, customer_name, customer_contact, customer_phone, customer_email, order_type, order_dept, partener_dept, order_date, status, remark, created_at, updated_at, deleted_at
+        select id,
+               project_code,
+               order_code,
+               version_code,
+               order_name,
+               customer_name,
+               customer_contact,
+               customer_phone,
+               customer_email,
+               order_type,
+               order_dept,
+               partener_dept,
+               order_date,
+               status,
+               remark,
+               created_at,
+               updated_at,
+               deleted_at
         from order_info
         where id = #{id}
     </select>
 
     <select id="selectOrderListList" resultMap="OrderListResult">
-        select id, order_id, product_id, quantity, price, amount, remark, created_at, updated_at, deleted_at
+        select id,
+               order_id,
+               product_id,
+               quantity,
+               price,
+               amount,
+               remark,
+               created_at,
+               updated_at,
+               deleted_at
         from order_list
         where order_id = #{order_id}
     </select>
@@ -87,7 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="status != null">status,</if>
             <if test="remark != null">remark,</if>
             created_at,status,
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="projectCode != null">#{projectCode},</if>
             <if test="orderCode != null and orderCode != ''">#{orderCode},</if>
@@ -104,7 +150,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="status != null">#{status},</if>
             <if test="remark != null">#{remark},</if>
             NOW(),0
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateOrderInfo" parameterType="OrderInfo">
@@ -128,9 +174,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         where id = #{id}
     </update>
+    <update id="logicRemoveListById">
+        update order_list set deleted_at=NOW(), status=1 where id in
+        <foreach item="item" index="index" collection="list" open="(" close=")" separator=",">
+            #{item.id}
+        </foreach>
+
+    </update>
+    <update id="updateListBatch">
+        <foreach item="item" index="index" collection="list" separator=";">
+            update order_list
+            <trim prefix="SET" suffixOverrides=",">
+                <if test="productId != null">product_id = #{productId},</if>
+                <if test="quantity != null ">quantity = #{quantity},</if>
+                <if test="price != null">price = #{price},</if>
+                <if test="amount != null">amount = #{amount},</if>
+
+                <if test="remark != null and remark!=''">remark = #{remark},</if>
+                updated_at = NOW(),
+            </trim>
+            where id = #{item.id}
+        </foreach>
+    </update>
 
     <delete id="deleteOrderInfoById" parameterType="Long">
-        update order_info set deleted_at=NOW(), status=1 where id = #{id}
+        update order_info
+        set deleted_at=NOW(),
+            status=1
+        where id = #{id}
     </delete>
 
     <delete id="deleteOrderInfoByIds" parameterType="String">
@@ -139,22 +210,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
-    
+
     <delete id="deleteOrderListByOrderIds" parameterType="String">
-        delete from order_list where order_id in 
+        delete from order_list where order_id in
         <foreach item="orderId" collection="array" open="(" separator="," close=")">
             #{orderId}
         </foreach>
     </delete>
 
     <delete id="deleteOrderListByOrderId" parameterType="Long">
-        delete from order_list where order_id = #{orderId}
+        delete
+        from order_list
+        where order_id = #{orderId}
     </delete>
 
     <insert id="batchOrderList">
-        insert into order_list( id, order_id, product_id, quantity, price, amount, remark, created_at, updated_at, deleted_at) values
+        insert into order_list( id, order_id, product_id, quantity, price, amount, remark, created_at, updated_at,
+        deleted_at) values
         <foreach item="item" index="index" collection="list" separator=",">
-            ( #{item.id}, #{item.orderId}, #{item.productId}, #{item.quantity}, #{item.price}, #{item.amount}, #{item.remark}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt})
+            ( #{item.id}, #{item.orderId}, #{item.productId}, #{item.quantity}, #{item.price}, #{item.amount},
+            #{item.remark}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt})
         </foreach>
     </insert>