From 5dc30f1ac31e8bcbb46accdaa85f492f2dfa36d3 Mon Sep 17 00:00:00 2001
From: xiang2lin <251481237@qq.com>
Date: Fri, 20 Jun 2025 19:53:26 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0OA=E8=A1=A8=E5=8D=95=E6=A0=A1?=
 =?UTF-8?q?=E9=AA=8C=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../plugin/oa/poorder/dao/IPoOrderExtDao.java | 12 ++++++
 .../poorder/dao/impl/PoOrderDaoExtImpl.java   | 15 +++++++
 .../oa/poorder/entity/PoOrderEntity.java      | 39 +++++++++++++++++++
 .../oa/poorder/entity/PoOrderEntity.xml       | 17 ++++++++
 .../poorder/service/IPoOrderExtService.java   | 18 +++++++++
 .../oa/poorder/service/IPoOrderService.java   |  1 -
 .../service/impl/PoOrderExtServiceImpl.java   | 38 ++++++++++++++++++
 .../service/impl/PoOrderServiceImpl.java      | 35 +++++++++++------
 8 files changed, 163 insertions(+), 12 deletions(-)
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/IPoOrderExtDao.java
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/impl/PoOrderDaoExtImpl.java
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.java
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.xml
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderExtService.java
 create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderExtServiceImpl.java

diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/IPoOrderExtDao.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/IPoOrderExtDao.java
new file mode 100644
index 00000000..f8c41c1c
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/IPoOrderExtDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.plugin.oa.poorder.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity;
+
+/**
+ * @Description OA采购订单
+ * @Author xiangerlin
+ * @Date 2025/6/20 17:52
+ **/
+public interface IPoOrderExtDao extends IBaseDao<PoOrderEntity,String> {
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/impl/PoOrderDaoExtImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/impl/PoOrderDaoExtImpl.java
new file mode 100644
index 00000000..2b8d1d83
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/dao/impl/PoOrderDaoExtImpl.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.plugin.oa.poorder.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.plugin.oa.poorder.dao.IPoOrderExtDao;
+import com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2025/6/20 17:57
+ **/
+@Repository("poOrderDaoExtImpl")
+public class PoOrderDaoExtImpl extends MybatisGenericDao<PoOrderEntity,String> implements IPoOrderExtDao {
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.java
new file mode 100644
index 00000000..1556bf40
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.java
@@ -0,0 +1,39 @@
+package com.hzya.frame.plugin.oa.poorder.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description OA采购订单
+ * @Author xiangerlin
+ * @Date 2025/6/20 17:47
+ **/
+public class PoOrderEntity extends BaseEntity {
+
+    private String field0055;//NCC单据号
+    private String field0058;//校验1
+    private String field0059;//校验2
+
+    public String getField0055() {
+        return field0055;
+    }
+
+    public void setField0055(String field0055) {
+        this.field0055 = field0055;
+    }
+
+    public String getField0058() {
+        return field0058;
+    }
+
+    public void setField0058(String field0058) {
+        this.field0058 = field0058;
+    }
+
+    public String getField0059() {
+        return field0059;
+    }
+
+    public void setField0059(String field0059) {
+        this.field0059 = field0059;
+    }
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.xml b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.xml
new file mode 100644
index 00000000..7082579d
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/entity/PoOrderEntity.xml
@@ -0,0 +1,17 @@
+<?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.hzya.frame.plugin.oa.poorder.dao.impl.PoOrderDaoExtImpl">
+
+    <update id="entity_update" parameterType="com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity">
+        update formmain_0256
+        <set>
+            <if test="field0058 != null and field0058 != '' ">
+                field0058 = #{field0058},
+            </if>
+            <if test="field0059 != null and field0059 != '' ">
+                field0059 = #{field0059}
+            </if>
+        </set>
+         where id = #{id}
+    </update>
+</mapper>
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderExtService.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderExtService.java
new file mode 100644
index 00000000..fc0e56aa
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderExtService.java
@@ -0,0 +1,18 @@
+package com.hzya.frame.plugin.oa.poorder.service;
+
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2025/6/20 19:36
+ **/
+public interface IPoOrderExtService extends IBaseService<PoOrderEntity,String> {
+
+    /**
+     * 更新校验字段,防止用户从OA侧发起采购订单
+     * @param entity
+     */
+    void updateVerifyFlag(PoOrderEntity entity);
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderService.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderService.java
index b42815d1..1bba25b0 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderService.java
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/IPoOrderService.java
@@ -1,7 +1,6 @@
 package com.hzya.frame.plugin.oa.poorder.service;
 
 import com.alibaba.fastjson.JSONObject;
-import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
 import com.hzya.frame.web.entity.JsonResultEntity;
 
 /**
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderExtServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderExtServiceImpl.java
new file mode 100644
index 00000000..f6291214
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderExtServiceImpl.java
@@ -0,0 +1,38 @@
+package com.hzya.frame.plugin.oa.poorder.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.plugin.oa.poorder.dao.IPoOrderExtDao;
+import com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity;
+import com.hzya.frame.plugin.oa.poorder.service.IPoOrderExtService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2025/6/20 19:37
+ **/
+@Service(value = "poOrderExtServiceImpl")
+public class PoOrderExtServiceImpl extends BaseService<PoOrderEntity,String> implements IPoOrderExtService {
+
+    private IPoOrderExtDao poOrderExtDao;
+    @Autowired
+
+    public void setPoOrderExtDao(IPoOrderExtDao dao) {
+        this.poOrderExtDao = dao;
+        this.dao = dao;
+    }
+
+
+    /**
+     * 更新校验字段,防止用户从OA侧发起采购订单
+     *
+     * @param entity
+     */
+    @DS("#entity.dataSourceCode")
+    @Override
+    public void updateVerifyFlag(PoOrderEntity entity) {
+        poOrderExtDao.update(entity);
+    }
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderServiceImpl.java
index 7ed0d2a3..8eaf6646 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderServiceImpl.java
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/poorder/service/impl/PoOrderServiceImpl.java
@@ -5,6 +5,10 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.execsql.entity.ExecSqlEntity;
+import com.hzya.frame.execsql.service.IExecSqlService;
+import com.hzya.frame.plugin.oa.poorder.entity.PoOrderEntity;
+import com.hzya.frame.plugin.oa.poorder.service.IPoOrderExtService;
 import com.hzya.frame.plugin.oa.poorder.service.IPoOrderService;
 import com.hzya.frame.seeyon.enums.ColEventTypeEnum;
 import com.hzya.frame.seeyon.org.member.entity.UserViewEntity;
@@ -29,9 +33,13 @@ import java.util.List;
 public class PoOrderServiceImpl implements IPoOrderService {
     Logger logger = LoggerFactory.getLogger(PoOrderServiceImpl.class);
     @Autowired
+    private IExecSqlService execSqlService;
+    @Autowired
     private OARestUtil oaRestUtil;
     @Autowired
     private IUserViewService userViewService;
+    @Autowired
+    private IPoOrderExtService poOrderExtService;
     @Value("${zt.url}")
     private String interfaceUrl;
     @Value("${oa.po_order_template_code:}")
@@ -129,7 +137,7 @@ public class PoOrderServiceImpl implements IPoOrderService {
 
     /**
      * OA审批事件
-     *
+     *POSTQUANTITY
      * @param requestJson
      * @return
      */
@@ -151,11 +159,11 @@ public class PoOrderServiceImpl implements IPoOrderService {
         if (null != formmainData){
             String pk_order = formmainData.getString("field0056");//采购订单pk
             String vbillcode = formmainData.getString("field0055");//采购订单code
-            String userId = formmainData.getString("user_id");//审批人id
+            String userId = headers.getString("user_id");//审批人id
             JSONObject json = new JSONObject();
             json.put("pk_order",pk_order);
             json.put("vbillcode",vbillcode);
-            json.put("userId",userId);
+            json.put("user_id",userId);
             String params = json.toString();
             //组装参数,调用NCC审批接口
             logger.info("OA采购订单审批后传到NCC请购参数。:{},{}",eventType,params);
@@ -181,18 +189,23 @@ public class PoOrderServiceImpl implements IPoOrderService {
             if (!resultJson.getBoolean("flag")){
                 return BaseResult.getFailureMessageEntity("审批NCC采购订单失败"+resultJson.getString("msg"));
             }
+            //如果是流程终止或撤销,更新OA校验字段
+            if (ColEventTypeEnum.ONSTOP.getType().equals(eventType) || ColEventTypeEnum.ONCANCEL.getType().equals(eventType)){
+                String id = formmainData.getString("id");
+                if (StrUtil.isNotEmpty(id)){
+                    logger.info("准备更新OA采购订单校验字段");
+                    PoOrderEntity poOrderEntity = new PoOrderEntity();
+                    poOrderEntity.setId(id);
+                    poOrderEntity.setDataSourceCode("JH-OA");
+                    poOrderEntity.setField0058("-1");
+                    poOrderEntity.setField0059("-1");
+                    poOrderExtService.updateVerifyFlag(poOrderEntity);
+                }
+            }
             return BaseResult.getSuccessMessageEntity(resultJson.getJSONObject("attribute"));
         }
         return BaseResult.getSuccessMessageEntity("审批NCC采购订单");
     }
-
-    private Object convertLowerCase(JSONObject jsonObject, String key){
-        if (null != jsonObject && StrUtil.isNotEmpty(key)){
-           return null == jsonObject.get(key.toUpperCase()) ? jsonObject.get(key.toLowerCase()) : jsonObject.get(key.toUpperCase());
-        }
-        return null;
-    }
-
     /**
      * 把NCC的 boolean类型转成OA
      * NCC Y/N