123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- package sys.sc.task;
- import com.alibaba.druid.support.logging.Log;
- import com.alibaba.druid.support.logging.LogFactory;
- import com.jcraft.jsch.SftpException;
- import kd.bos.context.RequestContext;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
- import kd.bos.entity.EntityMetadataCache;
- import kd.bos.exception.KDException;
- import kd.bos.orm.query.QCP;
- import kd.bos.orm.query.QFilter;
- import kd.bos.schedule.api.MessageHandler;
- import kd.bos.schedule.executor.AbstractTask;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import kd.bos.servicehelper.operation.DeleteServiceHelper;
- import kd.bos.servicehelper.operation.SaveServiceHelper;
- import sys.sc.opplugin.utils.SftpClient;
- import java.io.*;
- import java.text.SimpleDateFormat;
- import java.util.*;
- public class UpdateImpairmentDailyTask extends AbstractTask {
- private static final Log log = LogFactory.getLog(UpdateImpairmentDailyTask.class);
- public static String host="192.168.10.69";
- public static String username="root";
- public static int port = 22;
- public static String password="Kd@86262007";
- @Override
- public MessageHandler getMessageHandle() {
- return super.getMessageHandle();
- }
- @Override
- public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
- log.info("---------------------获取服务器连接--------------------");
-
- SftpClient sftpClient=new SftpClient(host,username,password,port);
- try {
- sftpClient.connect();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- String mes="-------------------------正在执行任务,读取减值数据----------------------";
- log.info(mes+requestContext);
- try {
-
- String filelocation=getFileUrl("jzsjurl");
-
- DynamicObjectType dynamicObjectType = EntityMetadataCache.getDataEntityType("nckd_impairment");
-
- List<String> selector = Arrays.asList(
- "nckd_dubil_id", "nckd_cust_id", "nckd_cur_cd", "nckd_dubil_amt", "nckd_asset_bal",
- "nckd_stage_rslt", "nckd_ecl_ratio","nckd_cust_name"
- );
- List<DynamicObject> createdataList = new ArrayList<>();
- QFilter filter=new QFilter("nckd_isdelete", QCP.equals,false);
-
- DynamicObject[] existingData = BusinessDataServiceHelper
- .load(dynamicObjectType.getName(), String.join(",", selector) + ",nckd_isdelete", new QFilter[]{filter});
- Set<String> processeddubilidSet = new HashSet<>();
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(sftpClient.fileInputStream(filelocation)))) {
- String line;
- while ((line = reader.readLine()) != null) {
-
- line = line.replace("|$|", "");
-
- String[] fields = line.split("\u0001");
-
- if (fields.length != selector.size()) {
- continue;
- }
-
- String dubil_id = fields[0];
- DynamicObject data;
- processeddubilidSet.add(dubil_id);
-
- data = new DynamicObject(dynamicObjectType);
- for (int i = 0; i < selector.size(); i++) {
- data.set(selector.get(i), fields[i]);
- }
-
- data.set("nckd_creatd",new Date());
- data.set("nckd_isdelete",false);
- createdataList.add(data);
- }
- }
- sftpClient.disconnect();
-
- DynamicObject[] dynamicObjectlist=createdataList.toArray(new DynamicObject[0]);
-
- if (!createdataList.isEmpty()) {
-
- SaveServiceHelper.save(dynamicObjectType,dynamicObjectlist);
- }
-
- for (DynamicObject existingDatum : existingData) {
- existingDatum.set("nckd_isdelete", true);
- }
- SaveServiceHelper.save(existingData);
- QFilter qFilter=new QFilter("nckd_isdelete",QCP.equals,true);
- DeleteServiceHelper.delete(dynamicObjectType.getName(),new QFilter[]{qFilter});
- log.info("-----------------------减值数据已成功保存---------------------");
- custSave(dynamicObjectlist);
- log.info("------------------------客户数据已成功保存----------------------");
- } catch (IOException ex) {
- ex.printStackTrace();
- log.error("----------------------------读取文件发生错误"+ex.getMessage()+"--------------------------");
- } catch (SftpException e) {
- throw new RuntimeException(e);
- }
- }
- @Override
- public boolean isSupportReSchedule() {
- return super.isSupportReSchedule();
- }
-
- public String getFileUrl(String urlcode) throws IOException {
-
- DynamicObject nckd_jkpzxx= BusinessDataServiceHelper
- .loadSingle("nckd_jkpzxx", new QFilter[]{new QFilter("number", "=", urlcode)});
-
- String nckd_filename=nckd_jkpzxx.getString("nckd_filename");
-
- String nckd_url=nckd_jkpzxx.getString("nckd_url");
-
- Date currentDate=new Date();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(currentDate);
- calendar.add(Calendar.DATE, -1);
-
- Date newDate = calendar.getTime();
-
- SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");
- String datestr=sf.format(newDate);
-
- if (nckd_url.equals("/var/appstatic/")) {
- nckd_url="/home/kingdee/cosmic/nginx-appstatic/store/appstatic/";
- }
-
- String realPath = nckd_url+datestr+ File.separator+nckd_filename;
- return realPath;
- }
-
- public void custSave(DynamicObject[] dynamicObjectlist)
- {
-
- DynamicObjectType dynamicObjectType = EntityMetadataCache.getDataEntityType("nckd_customers");
-
- List<String> selector = Arrays.asList(
- "number", "name"
- );
-
- DynamicObject[] existingData = BusinessDataServiceHelper
- .load(dynamicObjectType.getName(), String.join(",", selector),null);
- List<DynamicObject> dataListAdd = new ArrayList<>();
-
- Map<String, DynamicObject> existingDataMap = new HashMap<>();
- for (DynamicObject obj : existingData) {
- existingDataMap.put(obj.getString("number"), obj);
- }
- for(DynamicObject dataList:dynamicObjectlist)
- {
-
- String nckd_cust_id=dataList.getString("nckd_cust_id");
-
- if (!existingDataMap.containsKey(nckd_cust_id))
- {
- DynamicObject data = new DynamicObject(dynamicObjectType);
-
- data.set("number",dataList.getString("nckd_cust_id"));
-
- data.set("name",dataList.getString("nckd_cust_name"));
-
- data.set("enable","1");
-
- data.set("status","C");
- dataListAdd.add(data);
- }
- }
-
- SaveServiceHelper.save(dynamicObjectType,dataListAdd.toArray(new DynamicObject[0]));
- }
- }
|