Browse Source

日结功能更新

sbtjtserver/zhaoxh 9 months ago
parent
commit
67c3db266d

+ 16 - 9
src/main/java/fi/gl/formplugin/DailyexcuteFormPlugin.java

@@ -23,6 +23,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.bos.servicehelper.permission.PermissionServiceHelper;
+import kd.bos.servicehelper.user.UserServiceHelper;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.*;
@@ -43,10 +44,10 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
     public void registerListener(EventObject e) {
         super.registerListener(e);
         this.addClickListeners(KEY_DAILY, KEY_UNDAILY);
-
+        //注册分录监听
         EntryGrid entryGrid = this.getView().getControl("nckd_entryentity");
         entryGrid.addCellClickListener(this);
-
+        //注册组织字段监听
         BasedataEdit bEdit = this.getView().getControl("nckd_org");
         bEdit.addBeforeF7SelectListener(this);
     }
@@ -71,7 +72,7 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
 
             //先清空分录
             this.getModel().deleteEntryData("nckd_entryentity");
-
+            //执行写入日结表
             String message = dailyData(orgCol,dailydate);
             this.getView().showMessage(message);
         }else if (StringUtils.equals(source.getKey(), KEY_UNDAILY)) {
@@ -86,7 +87,7 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
                 this.getView().showMessage("请先选择日期");
                 return;
             }
-
+            //执行删除日结表记录
             String message = unDailyData(orgCol,dailydate);
             this.getView().showMessage(message);
         }
@@ -182,8 +183,8 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
             dailybillObj.set("nckd_dailydate", dailydate);
             dailybillObj.set("status", "A");
             dailybillObj.set("enable", "1");
-            RequestContext rc = RequestContext.get();
-            dailybillObj.set("creator", rc.getUid());
+            Long userId = UserServiceHelper.getCurrentUserId();
+            dailybillObj.set("creator", userId);
             DynamicObject[] datalist = new DynamicObject[]{dailybillObj};
             SaveServiceHelper.save(datalist);
             messageInfo = orgObjReal.getString("name") + "日结成功;";
@@ -195,6 +196,7 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
 
     @Override
     public void cellClick(CellClickEvent cellClickEvent) {
+        //点击跳转凭证界面
         BillShowParameter billShowParameter = new BillShowParameter();
         billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
         billShowParameter.setFormId("gl_voucher");
@@ -216,9 +218,14 @@ public class DailyexcuteFormPlugin extends AbstractBillPlugIn implements CellCli
             ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
             List<QFilter> qFilters = new ArrayList<>();
             HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(Long.parseLong(RequestContext.get().getUserId()));
-            List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
-            qFilters.add(new QFilter("id", QCP.in, hasPermOrgs));
-            formShowParameter.getListFilterParameter().setQFilters(qFilters);
+            boolean hasallOrg = userHasPermOrgs.hasAllOrgPerm();
+            if(hasallOrg==false){
+                List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
+                qFilters.add(new QFilter("id", QCP.in, hasPermOrgs));
+                formShowParameter.getListFilterParameter().setQFilters(qFilters);
+            }
         }
+
+
     }
 }

+ 87 - 5
src/main/java/fi/gl/task/AutoDailTask.java

@@ -2,17 +2,21 @@ package fi.gl.task;
 
 import kd.bos.context.RequestContext;
 import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.AppInfo;
 import kd.bos.entity.AppMetadataCache;
 import kd.bos.entity.param.AppParam;
 import kd.bos.exception.KDException;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
+import kd.bos.schedule.api.TaskInfo;
 import kd.bos.schedule.executor.AbstractTask;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
+import kd.bos.servicehelper.schedule.ScheduleServiceHelper;
+import kd.bos.servicehelper.user.UserServiceHelper;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Map;
@@ -25,12 +29,26 @@ import java.util.Map;
 public class AutoDailTask extends AbstractTask {
     @Override
     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
-        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
-        System.out.println("打印日志测试:" + df.format(new Date()));// new Date()为获取当前系统时间
+        TaskInfo taskInfo = ScheduleServiceHelper.queryTask(this.taskId);
+        String scheduleId = taskInfo.getScheduleId();
+        DynamicObject schedule = BusinessDataServiceHelper.loadSingleFromCache(scheduleId,"sch_schedule");
+        DynamicObject schprincipal = schedule.getDynamicObject("schprincipal");
+        Long userId = schprincipal.getLong("id");
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String now = sdf.format(new Date());
+        Date nowDate = null;
+        try {
+            nowDate = sdf.parse(now);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
         QFilter qFilter_enable = new QFilter("enable", QCP.equals,"1");
         QFilter qFilter_status = new QFilter("status", QCP.equals, "C");
+        QFilter qFilter_fisaccounting = new QFilter("fisaccounting", QCP.equals, "1");
+        QFilter qFilter_number = new QFilter("number", QCP.equals, "A002");
         DynamicObject[] orgCol = BusinessDataServiceHelper.load("bos_org","id",
-                new QFilter[]{qFilter_enable,qFilter_status});
+                new QFilter[]{qFilter_enable,qFilter_status,qFilter_fisaccounting,qFilter_number});
         for(DynamicObject orgObj : orgCol){
             //根据应用编码从缓存中获取应用信息
             AppInfo cgfwAppInfo = AppMetadataCache.getAppInfo("gl");
@@ -41,9 +59,73 @@ public class AutoDailTask extends AbstractTask {
             apm.setOrgId(orgObj.getLong("id"));
             Map<String,Object> paramWhole = SystemParamServiceHelper.loadAppParameterFromCache(apm);
             Object nckd_isautodaily = paramWhole.get("nckd_isautodaily");
-            if("true".equals(nckd_isautodaily)){
+            if("true".equals(nckd_isautodaily.toString())){
+                dailyData(orgObj,nowDate,userId);
+            }
+        }
+    }
+
+    private void dailyData(DynamicObject org, Date dailydate, Long userId) {
+        //创建日志对象
+        DynamicObject dailybillLogObj = BusinessDataServiceHelper.newDynamicObject("nckd_gl_autodaillog");
+
+        String messageInfo = "";
+        QFilter qFilter_org = new QFilter("org", QCP.equals,org.getPkValue());
+        QFilter qFilter_bizdate = new QFilter("bizdate",QCP.equals,dailydate);
+        DynamicObject[] voucherCol = BusinessDataServiceHelper.load("gl_voucher","id,ispost,billno,bizdate,org,billstatus",
+                new QFilter[]{qFilter_org,qFilter_bizdate});
+        for(DynamicObject voucherObj : voucherCol){
+            boolean ispost = voucherObj.getBoolean("ispost");
+            if(ispost!=true){//是否过账等于否
+                messageInfo = "所选日期存在未过账凭证";
+                break;
+            }
+        }
 
+        if("".equals(messageInfo)){
+            QFilter qFilter_nckd_org = new QFilter("nckd_org", QCP.equals,org.getPkValue());
+            QFilter qFilter_nckd_dailydate = new QFilter("nckd_dailydate",QCP.equals,dailydate);
+            DynamicObject[] dailybillCol = BusinessDataServiceHelper.load("nckd_gl_dailybill","id",
+                    new QFilter[]{qFilter_nckd_org,qFilter_nckd_dailydate});
+            if(dailybillCol!=null && dailybillCol.length>0){
+                messageInfo = "所选日期已日结";
             }
         }
+
+        if("".equals(messageInfo)){
+            //写入日结记录
+            messageInfo = writeDailybill(org,dailydate,userId);
+        }
+
+        //写入日志
+        dailybillLogObj.set("nckd_orgfield",org.getPkValue());
+        dailybillLogObj.set("nckd_dailydate",dailydate);
+        dailybillLogObj.set("enable","1");
+        dailybillLogObj.set("status","C");
+        if("".equals(messageInfo)){
+            dailybillLogObj.set("nckd_dailstatus","0");
+        }else{
+            dailybillLogObj.set("nckd_dailstatus","1");
+            dailybillLogObj.set("nckd_errorinfo",messageInfo);
+        }
+        DynamicObject[] logDatalist = new DynamicObject[]{dailybillLogObj};
+        SaveServiceHelper.save(logDatalist);
+    }
+
+    private String writeDailybill(DynamicObject orgObjReal, Date dailydate, Long userId) {
+        String messageInfo = "";
+        try {
+            DynamicObject dailybillObj = BusinessDataServiceHelper.newDynamicObject("nckd_gl_dailybill");
+            dailybillObj.set("nckd_org", orgObjReal);
+            dailybillObj.set("nckd_dailydate", dailydate);
+            dailybillObj.set("status", "A");
+            dailybillObj.set("enable", "1");
+            dailybillObj.set("creator", userId);
+            DynamicObject[] datalist = new DynamicObject[]{dailybillObj};
+            SaveServiceHelper.save(datalist);
+        }catch(Exception e){
+            messageInfo = e.getMessage();
+        }
+        return messageInfo;
     }
 }