package com.yem.wm.task; import com.yem.ensign.common.DateUtils; import com.yem.wm.utils.RequestCmmp; import kd.bos.context.RequestContext; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.resource.ResManager; import kd.bos.entity.EntityMetadataCache; import kd.bos.entity.MainEntityType; import kd.bos.entity.operate.result.IOperateInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.exception.KDBizException; import kd.bos.exception.KDException; import kd.bos.id.ID; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 库区 */ public class SynWareAreaCMMPTask extends AbstractTask { @Override public void execute(RequestContext requestContext, Map map) throws KDException { //查询CMMP链接 DynamicObjectCollection connObjs = QueryServiceHelper.query("yem_cmmpconfig", "id,yem_belong", new QFilter[]{new QFilter("yem_num", QCP.in, new String[]{"ZZJ", "CC", "NZ"})}); for (DynamicObject connObj : connObjs) { long id = connObj.getLong("id"); StringBuilder sql = new StringBuilder("SELECT wh_code,area_code,area_name,enable_flag,area_fid from VIEW_WH_AREA_WM where 1=1"); String isInit = (String) map.get("isInit"); if (!"true".equals(isInit)) { Date dateed = new Date(); dateed = DateUtils.getBeginTime(dateed); Date datebg = DateUtils.getAddDay(dateed, -2); dateed = DateUtils.getEndTime(dateed); sql.append(" and plmlastupdate>=to_date('" + DateUtils.formatString(datebg) + "','yyyy-mm-dd')" + " and plmlastupdate<=to_date('" + DateUtils.formatString(dateed) + "','yyyy-mm-dd')"); } sql.append(" order by plmlastupdate"); //执行sql List fromCmmpWithConnId = RequestCmmp.getFromCmmpWithConnId(id, sql.toString()); for (Map map1 : fromCmmpWithConnId) { //先查询是否存在 ArrayList qFilters = new ArrayList<>(); qFilters.add(new QFilter("number", QCP.equals, map1.get("area_code"))); qFilters.add(new QFilter("group.number", QCP.equals, map1.get("wh_code"))); qFilters.add(new QFilter("group.yem_belong", QCP.equals, connObj.getString("yem_belong"))); qFilters.add(new QFilter("yem_belong", QCP.equals, connObj.getString("yem_belong"))); DynamicObjectCollection whs = QueryServiceHelper.query("yem_warearea", "id", qFilters.toArray(new QFilter[0])); if (whs.size() > 0) { //如果存在 DynamicObject wh = BusinessDataServiceHelper.loadSingle(whs.get(0).getString("id"), "yem_warearea"); createWA(map1, wh, connObj); if(wh.get("group")==null){ continue; } OperationServiceHelper.executeOperate("save", "yem_warearea", new DynamicObject[]{wh}, OperateOption.create()); } else { MainEntityType entityType = EntityMetadataCache.getDataEntityType("yem_warearea"); DynamicObject wh = new DynamicObject(entityType); wh.getDataEntityType().getPrimaryKey().setValueFast(wh, ID.genLongId()); createWA(map1, wh, connObj); OperationResult operationResult = OperationServiceHelper.executeOperate("save", "yem_warearea", new DynamicObject[]{wh}, OperateOption.create()); if (!operationResult.isSuccess()) { for (IOperateInfo errInfo1 : operationResult.getAllErrorOrValidateInfo()) { String detailMessage1 = errInfo1.getMessage(); throw new KDBizException(ResManager.loadKDString("生成时保存失败:", "EtcmanualList_2", "createEcatalog_res") + detailMessage1); } } } } } } private static void createWA(Map map1, DynamicObject wh, DynamicObject connObj) { wh.set("number", map1.get("area_code").toString());//仓库编码 wh.set("name", map1.get("area_name").toString());//仓库名称 wh.set("status", "C");//数据状态 wh.set("yem_transstate", 1);//业务状态 wh.set("enable", map1.get("enable_flag".toLowerCase()).toString());//是否启用 wh.set("yem_easid", map1.get("area_fid"));//EASID //库区获取 DynamicObject whObj = BusinessDataServiceHelper.loadSingle("yem_warehouse", new QFilter[]{new QFilter("number", QCP.equals, map1.get("wh_code")), new QFilter("yem_belong", QCP.equals, connObj.getString("yem_belong"))}); wh.set("group", whObj); wh.set("yem_belong", connObj.getString("yem_belong"));//仓库所属 } }