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 kd.bos.servicehelper.operation.SaveServiceHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 库位 */ public class SynWhLocationCMMPTask extends AbstractTask { private final static Logger log = LoggerFactory.getLogger(SynWhLocationCMMPTask.class); @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 area_code,position_code,position_name from VIEW_POSITION_WM where 1 = 1");//测试 StringBuilder sql = new StringBuilder("SELECT area_code,position_code,position_name from VIEW_BASE_POSITION_DMS 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("position_code"))); // qFilters.add(new QFilter("group.number", QCP.equals, map1.get("area_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"))); DynamicObject[] whs = BusinessDataServiceHelper.load("yem_whlocation", "id, number, group.number, group.yem_belong", qFilters.toArray(new QFilter[0])); if (whs.length > 0) { for (DynamicObject wh : whs) { DynamicObject group = wh.getDynamicObject("group"); group = BusinessDataServiceHelper.loadSingle(group.getPkValue(), group.getDataEntityType().getName()); if (group != null) { String group_number = group.getString("number"); String group_belong = group.getString("yem_belong"); if (group_number.equals(map1.get("area_code")) && group_belong.equals(connObj.getString("yem_belong"))) { log.info("已存在库区数据,执行更新:{} {}", map1.get("position_code"), map1.get("position_name")); //如果存在 wh = BusinessDataServiceHelper.loadSingle(wh.getString("id"), "yem_whlocation"); createWL(map1, wh, connObj); OperationResult operate = OperationServiceHelper.executeOperate("save", "yem_whlocation", new DynamicObject[]{wh}, OperateOption.create()); String message = operate.getMessage(); log.info(message); } } } } else { MainEntityType entityType = EntityMetadataCache.getDataEntityType("yem_whlocation"); DynamicObject wh = new DynamicObject(entityType); wh.getDataEntityType().getPrimaryKey().setValueFast(wh, ID.genLongId()); log.info("新建库区数据:{} {}", map1.get("position_code"), map1.get("position_name")); createWL(map1, wh, connObj); if (wh.get("group") == null) { continue; } OperationResult operationResult = OperationServiceHelper.executeOperate("save", "yem_whlocation", new DynamicObject[]{wh}, OperateOption.create()); log.info(operationResult.getMessage()); 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 createWL(Map map1, DynamicObject wh, DynamicObject connObj) { wh.set("number", map1.get("position_code").toString());//仓库编码 wh.set("name", map1.get("position_name").toString());//仓库名称 wh.set("status", "C");//数据状态 wh.set("enable", 1);//是否启用 wh.set("yem_belong", connObj.getString("yem_belong"));//仓库所属 //库区获取 DynamicObject waObj = BusinessDataServiceHelper.loadSingle("yem_warearea", new QFilter[]{new QFilter("number", QCP.equals, map1.get("area_code")), new QFilter("yem_belong", QCP.equals, connObj.getString("yem_belong"))}); wh.set("group", waObj); } }