Ver código fonte

差旅标准优化

dingsixi 2 dias atrás
pai
commit
b8ca120fb6

+ 2 - 0
base/nckd-base-common/src/main/java/nckd/base/common/utils/TripSyncBillUtils.java

@@ -225,6 +225,8 @@ public class TripSyncBillUtils {
         cityClassifyInfo.put("companyCode", "");
         cityClassifyInfo.put("cityClassifyName", tripArea.getString(BaseFieldConst.NAME));
         cityClassifyInfo.put("cityClassifyNumber", billNumber);
+        cityClassifyInfo.put("areaType", "1");
+        cityClassifyInfo.put("cityClassifyType", "1");
 //        cityClassifyInfo.put("cityInfo", cityList);
 
         cityClassifyInfoList.add(cityClassifyInfo);

+ 5 - 94
nckd-fi/src/main/java/nckd/fi/er/opplugin/BizPolicyPushOpPlugin.java

@@ -32,6 +32,11 @@ public class BizPolicyPushOpPlugin extends GzwPushOpPlugin {
         return GzwSyncBillUtils.getBizPolicyData(bill);
     }
 
+    @Override
+    protected DynamicObject[] getQFilterObj(DynamicObject[] dataEntities) {
+        return dataEntities;
+    }
+
     @Override
     protected String getAttachmentPanelField() {
         //单据附件面板标识
@@ -56,98 +61,4 @@ public class BizPolicyPushOpPlugin extends GzwPushOpPlugin {
         return Collections.emptyList();
     }
 
-
-//    @Override
-//    public void onPreparePropertys(PreparePropertysEventArgs e) {
-//        super.onPreparePropertys(e);
-//        e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet());
-//    }
-//
-//    @Override
-//    public void endOperationTransaction(EndOperationTransactionArgs e) {
-//        super.endOperationTransaction(e);
-//        DynamicObject[] dataEntities = e.getDataEntities();
-//        //业务招待制度推送国资委
-//        pushGzw(dataEntities, e);
-//    }
-//
-//
-//    private void pushGzw(DynamicObject[] bizPolicys, EndOperationTransactionArgs e) {
-//        //当前时间年月日时分秒
-//        String cusDateStr = GzwCommonUtils.getCusDateStr();
-//        //获取费控系统参数
-//        Map<String, Object> sysCtrlParameter = ParamUtils.getSysCtrlParameter(ParamUtils.EM);
-//        //获取资源代号信息 基础信息
-//        Map<String, String> resMap = GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_REGULATION, (String) sysCtrlParameter.get("nckd_res"));
-//        //获取资源代号信息 附件信息
-//        Map<String, String> attrResMap = GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_FILE, (String) sysCtrlParameter.get("nckd_res"));
-//
-//        //获取版本号
-//        String ver = (String) sysCtrlParameter.get("nckd_ver");
-//        //接口代号
-//        String apiCode = (String) sysCtrlParameter.get("nckd_apicode");
-//        //基础信息资源代号
-//        String resCode = resMap.get("nckd_rescode");
-//        //附件信息资源代号
-//        String attrResCode = attrResMap.get("nckd_rescode");
-//
-//
-//        Object[] ids = Arrays.stream(bizPolicys).map(it -> it.getString("id")).toArray();
-//        //获取所有单据附件面板信息
-//        Map<String, List<Map<String, Object>>> bizPolicyAttrMap = AttachmentServiceHelper.getAttachments(this.billEntityType.getName(),
-//                ids, "nckd_attachmentpanelap", Boolean.FALSE);
-//
-//
-//        //业务单据根据业务单元统一社会信用代码分组
-//        Map<String, List<DynamicObject>> bizPolicyByOrgCodeMap = Arrays.stream(bizPolicys).collect(Collectors.groupingBy(
-//                it -> it.getString("nckd_code")
-//        ));
-//
-//        for (Map.Entry<String, List<DynamicObject>> bizPolicyEntrySet : bizPolicyByOrgCodeMap.entrySet()) {
-//            //统一社会信用代码
-//            String orgCode = bizPolicyEntrySet.getKey();
-//            List<DynamicObject> bizPolicyList = bizPolicyEntrySet.getValue();
-//            //将所有单据数据转换成动态参数
-//            List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
-//            //将所有单据附件数据转换成动态参数
-//            List<LinkedHashMap<String, Object>> attrDataList = new ArrayList<>();
-//
-//            //所有单据附件信息
-//            List<File> billAttrFileList = new ArrayList<>();
-//
-//            //生成XMLRecords内容
-//            for (DynamicObject bizPolicy : bizPolicyList) {
-//                //业务单元
-//                DynamicObject org = bizPolicy.getDynamicObject("nckd_org");
-//                //获取数据标识
-//                String dataFlag = GzwCommonUtils.getDataFlag(e.getOperationKey(), bizPolicy);
-//
-//                //将单据数据转换成XML动态参数内容
-//                LinkedHashMap<String, Object> dynamicData = GzwSyncBillUtils.getBizPolicyData(bizPolicy);
-//                //XML固定参数内容
-//                Map<String, Object> fixedData = GzwCommonUtils.getFixedData(resMap, org, dataFlag);
-//                dynamicData.putAll(fixedData);
-//                dataList.add(dynamicData);
-//
-//                //获取单据附件信息
-//                List<Map<String, Object>> bizPolicyAttr = bizPolicyAttrMap.getOrDefault(bizPolicy.getString("id"), Collections.emptyList());
-//                //附件信息转File、附件信息生成动态参数
-//                GzwCommonUtils.getBillAttrDataAndFile(bizPolicyAttr,billAttrFileList,attrDataList,fixedData);
-//            }
-//
-//            Map<String,Object> xmlMap = new HashMap<>();
-//            //基础信息
-//            xmlMap.put(resCode,dataList);
-//            //附件信息
-//            xmlMap.put(attrResCode,attrDataList);
-//
-//            //将单据数据动态参数生成XML文件,附件转为FIle文件,合并生成zip文件
-//            File zipFile = GzwCommonUtils.createZipFile(orgCode, ver, cusDateStr, xmlMap, billAttrFileList, apiCode);
-//
-//            //TODO 推送国资委数据采集平台接口,记录日志,单据信息记录是否推送成功
-//
-//        }
-//
-//
-//    }
 }

+ 13 - 0
nckd-fi/src/main/java/nckd/fi/er/opplugin/DailyApplyPushOpPlugin.java

@@ -1,11 +1,13 @@
 package nckd.fi.er.opplugin;
 
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.plugin.args.BeforeOperationArgs;
 import nckd.base.common.utils.GzwCommonUtils;
 import nckd.base.common.utils.GzwSyncBillUtils;
 import nckd.base.common.config.ResCodeConfig;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @description:业务招待申请单推送国资委,其他逻辑不要写在此处
@@ -13,6 +15,7 @@ import java.util.*;
  * @create: 2025/12/24 18:13
  */
 public class DailyApplyPushOpPlugin extends GzwPushOpPlugin{
+
     @Override
     protected List<ResCodeConfig> getDatasetConfigs(Map<String, Object> sysCtrlParameter) {
         List<ResCodeConfig> configs = new ArrayList<>();
@@ -26,12 +29,22 @@ public class DailyApplyPushOpPlugin extends GzwPushOpPlugin{
         return configs;
     }
 
+
     @Override
     protected LinkedHashMap<String, Object> convertMainBillData(DynamicObject bill) {
         // 转换基础信息XML动态参数
         return GzwSyncBillUtils.getDailyApplyData(bill);
     }
 
+    @Override
+    protected DynamicObject[] getQFilterObj(DynamicObject[] dataEntities) {
+        //过滤业务招待事项=招待费的单据
+        List<DynamicObject> objectList = Arrays.stream(dataEntities)
+                .filter(it -> it.getString("bizitem.number").equals("entertainment_bill"))
+                .collect(Collectors.toList());
+        return objectList.toArray(new DynamicObject[0]);
+    }
+
     @Override
     protected String getAttachmentPanelField() {
         //单据附件面板标识

+ 5 - 0
nckd-fi/src/main/java/nckd/fi/er/opplugin/EntertainmentPushOpPlugin.java

@@ -69,6 +69,11 @@ public class EntertainmentPushOpPlugin extends GzwPushOpPlugin {
         }
     }
 
+    @Override
+    protected DynamicObject[] getQFilterObj(DynamicObject[] dataEntities) {
+        return dataEntities;
+    }
+
     @Override
     protected String getAttachmentPanelField() {
         //单据附件面板标识

+ 12 - 2
nckd-fi/src/main/java/nckd/fi/er/opplugin/GzwPushOpPlugin.java

@@ -37,8 +37,8 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
     @Override
     public void afterExecuteOperationTransaction(AfterOperationArgs args) {
         super.afterExecuteOperationTransaction(args);
-        //事务结束后执行。不影响单据流程
-        DynamicObject[] dataEntities = args.getDataEntities();
+        //事务结束后执行。不影响单据流程 过滤单据数据,费用申请需要进行数据过滤,只有业务事项=招待费的单据需要推送国资委,其他单据不需要
+        DynamicObject[] dataEntities = getQFilterObj(args.getDataEntities());
         try {
             pushGzw(dataEntities);
             showSuccessMsg(args);
@@ -52,12 +52,17 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
      * @param dynamicObjects 业务单据数据
      */
     protected void pushGzw(DynamicObject[] dynamicObjects) {
+        if(dynamicObjects.length == 0){
+            return;
+        }
+
         CloneUtils cloneUtils = new CloneUtils(false, false);
         //复制单据,如果报错,修改了单据的数据无法还原,所以此处用新数组进行处理
         DynamicObject[] bills = new DynamicObject[dynamicObjects.length];
         for (int i = 0; i < dynamicObjects.length; i++) {
             bills[i] = (DynamicObject) cloneUtils.clone(dynamicObjects[i]);
         }
+
         // 获取费控系统参数
         Map<String, Object> sysCtrlParameter = ParamUtils.getSysCtrlParameter(ParamUtils.EM);
         String pushState = (String) sysCtrlParameter.get("nckd_gzwpushstate");
@@ -210,6 +215,8 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
     }
 
 
+
+
     /**
      * @param resourceType 资源类型(国资委提供的文档每个资源代号信息都对应了一张数据表,此处次数据表名定义资源类型保持唯一)
      * @param bill         业务单据
@@ -247,6 +254,7 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
         return result;
     }
 
+
     /**
      * 获取所有数据集配置
      *
@@ -254,6 +262,8 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
      */
     protected abstract List<ResCodeConfig> getDatasetConfigs(Map<String, Object> sysCtrlParameter);
 
+    protected abstract DynamicObject[] getQFilterObj(DynamicObject[] dataEntities);
+
     /**
      * 获取附件面板字段名
      */

+ 1 - 1
nckd-fi/src/main/java/nckd/fi/er/opplugin/TripAreaPushOpPlugin.java

@@ -43,6 +43,6 @@ public class TripAreaPushOpPlugin extends AbstractOperationServicePlugIn {
         Map<String, Object> data = TripSyncBillUtils.getTripAreaBillDataParam(tripArea);
         //推送API
         TripSyncUtils.pushApi("syncCityClassificationCommon", Boolean.FALSE, data,tripArea);
-
     }
+
 }

+ 5 - 4
nckd-fi/src/main/java/nckd/fi/er/task/GzwPushTask.java

@@ -31,11 +31,11 @@ public class GzwPushTask extends AbstractTask {
         //1.单据已审核 且 未推送单据  标识 = 新增。  如果已推送,说明不需要再次推送
         //2.单据非已审核 且 已推送 标识=删除。 如果未推送,说明数据还未审核过 或者 已进行过删除,也不需要再次推送
         QFilter baseQFOne = new QFilter("status", QCP.equals, "C").and("nckd_ispush", QCP.equals, false);
-        QFilter baseQFTwo = new QFilter("status", QCP.not_in, Arrays.asList("C","E")).and("nckd_ispush", QCP.equals, true);
+        QFilter baseQFTwo = new QFilter("status", QCP.not_equals, "C").and("nckd_ispush", QCP.equals, true);
         QFilter baseQf = baseQFOne.or(baseQFTwo);
 
-        QFilter billQFOne = new QFilter("billstatus", QCP.equals, "C").and("nckd_ispush", QCP.equals, false);
-        QFilter billQFTwo = new QFilter("billstatus", QCP.not_in, Arrays.asList("C","E")).and("nckd_ispush", QCP.equals, true);
+        QFilter billQFOne = new QFilter("billstatus", QCP.equals, "E").and("nckd_ispush", QCP.equals, false);
+        QFilter billQFTwo = new QFilter("billstatus", QCP.not_equals, "E").and("nckd_ispush", QCP.equals, true);
         QFilter billQf = billQFOne.or(billQFTwo);
 
         //查询业务招待制度
@@ -55,7 +55,8 @@ public class GzwPushTask extends AbstractTask {
         }
 
         //业务招待申请单
-        DynamicObjectCollection dailyApplyBillCol = QueryServiceHelper.query("er_dailyapplybill", "id",billQf.toArray());
+        DynamicObjectCollection dailyApplyBillCol = QueryServiceHelper.query("er_dailyapplybill", "id",
+                billQf.and("bizitem.number",QCP.equals,"entertainment_bill").toArray());
         if (!dailyApplyBillCol.isEmpty()) {
             Set<Object> ids = dailyApplyBillCol.stream().map(it -> it.get("id")).collect(Collectors.toSet());
             //调用后台操作推送国资委