diff --git a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java index 64ff2733..709e4051 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java @@ -46,4 +46,10 @@ public interface Constants { //叫料类型 String CALL_TYPE_MATERIAL = "MATERIAL"; String CALL_TYPE_OPERATION = "OPERATION"; + + //叫料状态 + String CALL_ITEM_STATUS_NEW = "801"; + String CALL_ITEM_STATUS_CALLED = "802"; + String CALL_ITEM_STATUS_ISSUED = "803"; + String CALL_ITEM_STATUS_CANCELED = "804"; } diff --git a/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java b/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java index bb9d27db..9f6954d6 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java @@ -110,6 +110,10 @@ public enum HandleEnum { /**不良代码组**/ NC_GROUP("NCGroupBO","NCGroupBO:{0},{1}"), + + /**数据类型**/ + DATA_TYPE("DataTypeBO", "DataTypeBO:{0},{1},{2}"), + /**设备检验任务的检验项**/ RESOURCE_INSPECT_TASK_SPARE("ResourceInspectTaskSpareBo","ResourceInspectTaskSpareBo:{0},{1}"), diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java new file mode 100644 index 00000000..562dfdde --- /dev/null +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java @@ -0,0 +1,21 @@ +package com.foreverwin.mesnac.common.service; + +/** + * 派工公用接口 + * + * + * @author Leon + * @date2021/7/7 + */ +public interface SfcDispatchCommonService { + + /** + * 修改派工单状态 + * + * @param site + * @param user + * @param dispatchNo + * @param dispatchStatus + */ + void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus); +} diff --git a/console/src/main/resources/i18n/messages.properties b/console/src/main/resources/i18n/messages.properties index 40fa55c9..1696c5c3 100644 --- a/console/src/main/resources/i18n/messages.properties +++ b/console/src/main/resources/i18n/messages.properties @@ -1,4 +1,6 @@ common.export.noTemplate.error = 当前主数据模板字段未维护 +MaterData.import.insert.fail = 数据新增失败: - > 行项: {0}, 位置: {1}, 错误信息: {2} +MaterData.import.update.fail = 数据更新失败: - > 行项: {0}, 位置: {1}, 错误信息: {2} MaterData.import.Summary = 导入完成:->总共导入数据:{0}, 成功:{1}, 失败:{2} MaterData.import.createfail.resource = 资源创建失败: - > 行项: {0}, 位置: {1}, 错误信息: {2} MaterData.import.updatefail.resource = 资源更新失败: - > 行项: {0}, 位置: {1}, 错误信息: {2} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/CustomDataWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/CustomDataWSClient.java index 75f65f75..5959f7b4 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/CustomDataWSClient.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/CustomDataWSClient.java @@ -18,21 +18,27 @@ import java.util.List; import java.util.Locale; +/** + * 自定义数据保存&更新 + * + * @author Leon + * @date 2021/7/6 + */ public class CustomDataWSClient { - - static Logger log4j = Logger.getLogger(CustomDataWSClient.class); + private static Logger log4j = Logger.getLogger(CustomDataWSClient.class); public static String getSiteDefaultLang(String site) { - SiteConfigurationServiceInterface siteConfigurationService = null; try { siteConfigurationService = MEServices.create("com.sap.me.plant", "SiteConfigurationService", site); } catch (ClassNotFoundException e) { e.printStackTrace(); } + //siteLocale String objRef = "SiteBO:" + site; + ObjectReference request = new ObjectReference(objRef); try { SiteFullConfiguration tm = siteConfigurationService.readSite(request); @@ -54,6 +60,7 @@ public class CustomDataWSClient { public static String update(JSONObject data, String ref, String objectAlias) throws Exception{ String site = (String) data.get("site"); + SaveCustomDataRequest request = new SaveCustomDataRequest(); request.setRef(ref); request.setObjectAlias(objectAlias); @@ -63,15 +70,14 @@ public class CustomDataWSClient { JSONArray customArray = data.getJSONArray("customData"); - if (customArray != null && customArray.size() > 0) { List customData = new ArrayList(); for (int i = 0; i < customArray.size(); i++) { - JSONObject custObject = customArray.getJSONObject(i); - String cust = custObject.getString("attribute"); - String value = custObject.getString("value"); - CustomValue cv = new CustomValue(cust, value); + JSONObject customObject = customArray.getJSONObject(i); + String attribute = customObject.getString("attribute"); + String value = customObject.getString("value"); + CustomValue cv = new CustomValue(attribute, value); customData.add(cv); } diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ItemWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ItemWSClient.java new file mode 100644 index 00000000..906be323 --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ItemWSClient.java @@ -0,0 +1,62 @@ +package com.foreverwin.mesnac.dataimport.client; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.util.ExceptionUtil; +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.meext.MEServices; +import com.sap.me.common.ObjectAliasEnum; +import com.sap.me.common.ObjectReference; +import com.sap.me.productdefinition.ItemConfigurationServiceInterface; +import com.sap.me.productdefinition.ItemFullConfiguration; + +import java.math.BigDecimal; + +/** + * 物料主数据操作类 + * + * @author Leon + * @date 2021/7/6 + */ +public class ItemWSClient { + + public static ItemFullConfiguration find(JSONObject data) { + try { + String site = (String) data.get("site"); + String item = data.getString("item"); + //物料只有一个版本,默认A + String objRef = HandleEnum.ITEM.getHandle(site, item, "A"); + + //---------------------------------------------------------------------------------------------------------- + ItemConfigurationServiceInterface itemConfigurationService = MEServices.create("com.sap.me.productdefinition", "ItemConfigurationService", site); + ObjectReference request = new ObjectReference(objRef); + ItemFullConfiguration op = itemConfigurationService.readItem(request); + + return op; + } catch (Exception e) { + } + + return null; + } + + public static String update(JSONObject jsonObject, ItemFullConfiguration itemFull) { + try { + String site = jsonObject.getString("site"); + //批次大小 + String lotSize = jsonObject.getString("lotSize"); + lotSize = StringUtil.notBlank(lotSize) ? lotSize : "999999"; + + //--------------------------------------------------------------------------------------- + ItemConfigurationServiceInterface itemConfigurationService = MEServices.create("com.sap.me.productdefinition", "ItemConfigurationService", site); + itemFull.setLotSize(new BigDecimal(lotSize)); + itemConfigurationService.updateItem(itemFull); + + //自定义字段保存 + CustomDataWSClient.update(jsonObject, itemFull.getRef(), ObjectAliasEnum.ITEM.value()); + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + + return null; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcCodeWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcCodeWSClient.java new file mode 100644 index 00000000..a4522efd --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcCodeWSClient.java @@ -0,0 +1,247 @@ +package com.foreverwin.mesnac.dataimport.client; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.util.ExceptionUtil; +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.meext.MEServices; +import com.sap.me.common.BasicStatusEnum; +import com.sap.me.common.ObjectReference; +import com.sap.me.nonconformance.*; + +import javax.xml.datatype.DatatypeConstants; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 不良代码操作类 + * + * @author Leon + * @date 2021/7/6 + */ +public class NcCodeWSClient { + + /** + * 查询不合格代码 + * + * @param jsonObject + * @return + */ + public static NcCodeFullConfiguration find(JSONObject jsonObject) { + NcCodeFullConfiguration ncCodeFullConfiguration = null; + + try { + String site = jsonObject.getString("site"); + String ncCode = jsonObject.getString("ncCode"); + String ncCodeBo = HandleEnum.NC_CODE.getHandle(site, ncCode); + + //------------------------------------------------------------------------------------------------ + NcCodeConfigurationServiceInterface ncCodeConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcCodeConfigurationService", site); + ObjectReference objectReference = new ObjectReference(ncCodeBo); + ncCodeFullConfiguration = ncCodeConfigurationService.readNcCode(objectReference); + } catch (Exception e) { + } + + return ncCodeFullConfiguration; + } + + + /** + * 不合格代码创建 + * + * @param jsonObject + * @return + */ + public static String create(JSONObject jsonObject) { + try { + String site = jsonObject.getString("site"); + String ncCode = jsonObject.getString("ncCode"); + String ncCodeBo = HandleEnum.NC_CODE.getHandle(site, ncCode); + String category = jsonObject.getString("category"); + String dataType = jsonObject.getString("dataType"); + String description = jsonObject.getString("descZH"); + String closureRequired = jsonObject.getString("closureRequired"); + String canBePrimaryCode = jsonObject.getString("canBePrimaryCode"); + String autoClosePrimary = jsonObject.getString("autoClosePrimary"); + String autoCloseIncident = jsonObject.getString("autoCloseIncident"); + String secondaryRequireForClose = jsonObject.getString("secondaryRequireForClose"); + + //------------------------------------------------------------------------------------------------ + NcCodeConfiguration ncCodeConfiguration = new NcCodeConfiguration(); + ncCodeConfiguration.setRef(ncCodeBo); + ncCodeConfiguration.setNcCode(ncCode); + ncCodeConfiguration.setDescription(description); + ncCodeConfiguration.setStatus(BasicStatusEnum.ENABLED); + + //不合格代码组 + String ncGroup = jsonObject.getString("ncGroup"); + NcGroupMember ncGroupMember = new NcGroupMember(); + String ncGroupBo = HandleEnum.NC_GROUP.getHandle(site, ncGroup); + ncGroupMember.setNcGroupRef(ncGroupBo); + ncCodeConfiguration.getNcGroupMemberList().add(ncGroupMember); + + //不合格代码类型 + NCCategory ncCodeCategory = NCCategory.FAILURE; + switch (category) { + case "故障" : + ncCodeCategory = NCCategory.FAILURE; + break; + case "缺陷" : + ncCodeCategory = NCCategory.DEFECT; + break; + case "修复" : + ncCodeCategory = NCCategory.REPAIR; + break; + default: break; + } + ncCodeConfiguration.setNcCategory(ncCodeCategory); + + //不合格数据类型 + dataType = StringUtil.notBlank(dataType) ? dataType : "SIMPLE"; + String ncDataTypeRef = HandleEnum.DATA_TYPE.getHandle(site, "NC", dataType); + ncCodeConfiguration.setNcDataTypeRef(ncDataTypeRef); + + //需要关闭 + ncCodeConfiguration.setClosureRequired("是".equals(closureRequired) ? true : false); + //是否可以是主要代码 + ncCodeConfiguration.setCanBePrimaryCode("是".equals(canBePrimaryCode) ? true : false); + ncCodeConfiguration.setAutoClosePrimary("是".equals(autoClosePrimary) ? true : false); + ncCodeConfiguration.setAutoCloseIncident("是".equals(autoCloseIncident) ? true : false); + ncCodeConfiguration.setSecondaryRequiredForClose("是".equals(secondaryRequireForClose) ? true : false); + + //次要不良项目 + String secondaryCodes = jsonObject.getString("secondaryCode"); + if (StringUtil.notBlank(secondaryCodes)) { + List ncSecondaryCodeList = new ArrayList<>(); + + if (!secondaryCodes.contains(":")) { + NcSecondaryCode ncSecondaryCode = new NcSecondaryCode(); + String ncCodeRef = HandleEnum.NC_CODE.getHandle(site, secondaryCodes); + ncSecondaryCode.setNcCodeRef(ncCodeRef); + ncSecondaryCodeList.add(ncSecondaryCode); + } else { + String [] secondaryCodeArray = secondaryCodes.split(":"); + for (String secondaryCode: secondaryCodeArray) { + NcSecondaryCode ncSecondaryCode = new NcSecondaryCode(); + String ncCodeRef = HandleEnum.NC_CODE.getHandle(site, secondaryCode); + ncSecondaryCode.setNcCodeRef(ncCodeRef); + ncSecondaryCodeList.add(ncSecondaryCode); + } + } + + ncCodeConfiguration.setNcSecondaryCodeList(ncSecondaryCodeList); + } + + //NC最大限制值 + String maxNcLimit = jsonObject.getString("maxNcLimit"); + maxNcLimit = StringUtil.notBlank(maxNcLimit) ? maxNcLimit : "10"; + ncCodeConfiguration.setMaxNcLimit(new BigDecimal(maxNcLimit)); + + //------------------------------------------------------------------------------------------------ + NcCodeConfigurationServiceInterface ncCodeConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcCodeConfigurationService", site); + ncCodeConfigurationService.createNcCode(ncCodeConfiguration); + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + + return null; + } + + /** + * 不合格代码更新 + * + * @param jsonObject + * @param ncCodeFullConfiguration + * @return + */ + public static String update(JSONObject jsonObject, NcCodeFullConfiguration ncCodeFullConfiguration) { + try { + String site = jsonObject.getString("site"); + String category = jsonObject.getString("category"); + String dataType = jsonObject.getString("dataType"); + String description = jsonObject.getString("descZH"); + String closureRequired = jsonObject.getString("closureRequired"); + String canBePrimaryCode = jsonObject.getString("canBePrimaryCode"); + String autoClosePrimary = jsonObject.getString("autoClosePrimary"); + String autoCloseIncident = jsonObject.getString("autoCloseIncident"); + String secondaryRequireForClose = jsonObject.getString("secondaryRequireForClose"); + + //------------------------------------------------------------------------------------------------ + ncCodeFullConfiguration.setDescription(description); + ncCodeFullConfiguration.setStatus(BasicStatusEnum.ENABLED); + + //不合格代码组 + String ncGroup = jsonObject.getString("ncGroup"); + NcGroupMember ncGroupMember = new NcGroupMember(); + String ncGroupBo = HandleEnum.NC_GROUP.getHandle(site, ncGroup); + ncGroupMember.setNcGroupRef(ncGroupBo); + ncCodeFullConfiguration.getNcGroupMemberList().add(ncGroupMember); + + //不合格代码类型 + NCCategory ncCodeCategory = NCCategory.FAILURE; + switch (category) { + case "故障" : + ncCodeCategory = NCCategory.FAILURE; + break; + case "缺陷" : + ncCodeCategory = NCCategory.DEFECT; + break; + case "修复" : + ncCodeCategory = NCCategory.REPAIR; + break; + default: break; + } + ncCodeFullConfiguration.setNcCategory(ncCodeCategory); + + //不合格数据类型 + dataType = StringUtil.notBlank(dataType) ? dataType : "SIMPLE"; + String ncDataTypeRef = HandleEnum.DATA_TYPE.getHandle(site, "NC", dataType); + ncCodeFullConfiguration.setNcDataTypeRef(ncDataTypeRef); + + //需要关闭 + ncCodeFullConfiguration.setClosureRequired("是".equals(closureRequired) ? true : false); + //是否可以是主要代码 + ncCodeFullConfiguration.setCanBePrimaryCode("是".equals(canBePrimaryCode) ? true : false); + ncCodeFullConfiguration.setAutoClosePrimary("是".equals(autoClosePrimary) ? true : false); + ncCodeFullConfiguration.setAutoCloseIncident("是".equals(autoCloseIncident) ? true : false); + ncCodeFullConfiguration.setSecondaryRequiredForClose("是".equals(secondaryRequireForClose) ? true : false); + + //次要不良项目 + String secondaryCodes = jsonObject.getString("secondaryCode"); + if (StringUtil.notBlank(secondaryCodes)) { + List ncSecondaryCodeList = new ArrayList<>(); + + if (!secondaryCodes.contains(":")) { + NcSecondaryCode ncSecondaryCode = new NcSecondaryCode(); + String ncCodeRef = HandleEnum.NC_CODE.getHandle(site, secondaryCodes); + ncSecondaryCode.setNcCodeRef(ncCodeRef); + ncSecondaryCodeList.add(ncSecondaryCode); + } else { + String [] secondaryCodeArray = secondaryCodes.split(":"); + for (String secondaryCode: secondaryCodeArray) { + NcSecondaryCode ncSecondaryCode = new NcSecondaryCode(); + String ncCodeRef = HandleEnum.NC_CODE.getHandle(site, secondaryCode); + ncSecondaryCode.setNcCodeRef(ncCodeRef); + ncSecondaryCodeList.add(ncSecondaryCode); + } + } + + ncCodeFullConfiguration.setNcSecondaryCodeList(ncSecondaryCodeList); + } + + //NC最大限制值 + String maxNcLimit = jsonObject.getString("maxNcLimit"); + maxNcLimit = StringUtil.notBlank(maxNcLimit) ? maxNcLimit : "10"; + ncCodeFullConfiguration.setMaxNcLimit(new BigDecimal(maxNcLimit)); + + //------------------------------------------------------------------------------------------------ + NcCodeConfigurationServiceInterface ncCodeConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcCodeConfigurationService", site); + ncCodeConfigurationService.updateNcCode(ncCodeFullConfiguration); + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + + return null; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcGroupWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcGroupWSClient.java new file mode 100644 index 00000000..3980cf8d --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/NcGroupWSClient.java @@ -0,0 +1,135 @@ +package com.foreverwin.mesnac.dataimport.client; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.util.ExceptionUtil; +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.meext.MEServices; +import com.sap.me.common.ObjectReference; +import com.sap.me.nonconformance.NcGroupConfigurationServiceInterface; +import com.sap.me.nonconformance.NcGroupFullConfiguration; +import com.sap.me.nonconformance.NcGroupValidOperation; + +import java.util.ArrayList; +import java.util.List; + +/** + * 不良代码组操作类 + * + * @author Leon + * @date 2021/7/6 + */ +public class NcGroupWSClient { + + /** + * 查询不合格代码组 + * + * @param jsonObject + * @return + */ + public static NcGroupFullConfiguration find(JSONObject jsonObject) { + NcGroupFullConfiguration ncGroupFullConfiguration = null; + try { + String site = jsonObject.getString("site"); + String ncGroup = jsonObject.getString("ncGroup"); + String ncGroupBo = HandleEnum.NC_GROUP.getHandle(site, ncGroup); + + //--------------------------------------------------------------------------------------------------- + NcGroupConfigurationServiceInterface ncGroupConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcGroupConfigurationService", site); + ObjectReference objectReference = new ObjectReference(ncGroupBo); + ncGroupFullConfiguration = ncGroupConfigurationService.readNcGroup(objectReference); + } catch (Exception e) { + //------------------- + } + + return ncGroupFullConfiguration; + } + + /** + * 不良代码组创建 + * + * @param jsonObject + * @return + */ + public static String create(JSONObject jsonObject) { + try { + String site = jsonObject.getString("site"); + String ncGroup = jsonObject.getString("ncGroup"); + String description = jsonObject.getString("description"); + String applyAll = jsonObject.getString("applyAll"); + String applyOperation = jsonObject.getString("applyOperation"); + String ncGroupBo = HandleEnum.NC_GROUP.getHandle(site, ncGroup); + + //--------------------------------------------------------------------------------------------------- + NcGroupConfigurationServiceInterface ncGroupConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcGroupConfigurationService", site); + NcGroupFullConfiguration ncGroupFullConfiguration = new NcGroupFullConfiguration(); + ncGroupFullConfiguration.setRef(ncGroupBo); + ncGroupFullConfiguration.setNcGroup(ncGroup); + ncGroupFullConfiguration.setDescription(description); + if ("true".equals(applyAll)) { + ncGroupFullConfiguration.setValidAtAllOperations(true); + } else { + if (StringUtil.notBlank(applyOperation) && applyOperation.contains(";")) { + List list = new ArrayList<>(); + String[] operationList = applyOperation.split(";"); + for (String operation: operationList) { + NcGroupValidOperation ncGroupValidOperation = new NcGroupValidOperation(); + String operationBo = HandleEnum.OPERATION.getHandle(site, operation, "#"); + ncGroupValidOperation.setOperationRef(operationBo); + list.add(ncGroupValidOperation); + } + + ncGroupFullConfiguration.setNcGroupValidOperationList(list); + } + } + + ncGroupConfigurationService.createNcGroup(ncGroupFullConfiguration); + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + + return null; + } + + /** + * 不良代码组更新 + * + * @param jsonObject + * @param ncGroupFull + * @return + */ + public static String update(JSONObject jsonObject, NcGroupFullConfiguration ncGroupFull) { + try { + String site = jsonObject.getString("site"); + String description = jsonObject.getString("description"); + String applyAll = jsonObject.getString("applyAll"); + String applyOperation = jsonObject.getString("applyOperation"); + + //--------------------------------------------------------------------------------------------------- + NcGroupConfigurationServiceInterface ncGroupConfigurationService = MEServices.create("com.sap.me.nonconformance", "NcGroupConfigurationService", site); + ncGroupFull.setDescription(description); + if ("true".equals(applyAll)) { + ncGroupFull.setValidAtAllOperations(true); + } else { + if (StringUtil.notBlank(applyOperation) && applyOperation.contains(";")) { + List list = new ArrayList<>(); + String[] operationList = applyOperation.split(";"); + for (String operation: operationList) { + NcGroupValidOperation ncGroupValidOperation = new NcGroupValidOperation(); + String operationBo = HandleEnum.OPERATION.getHandle(site, operation, "#"); + ncGroupValidOperation.setOperationRef(operationBo); + list.add(ncGroupValidOperation); + } + + ncGroupFull.setNcGroupValidOperationList(list); + } + } + + ncGroupConfigurationService.updateNcGroup(ncGroupFull); + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + + return null; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceTypeWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceTypeWSClient.java new file mode 100644 index 00000000..38ea14c8 --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceTypeWSClient.java @@ -0,0 +1,80 @@ +package com.foreverwin.mesnac.dataimport.client; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.util.ExceptionUtil; +import com.foreverwin.modular.core.meext.MEServices; +import com.sap.me.common.ObjectAliasEnum; +import com.sap.me.plant.FindResourceTypeByKeyFieldsRequest; +import com.sap.me.plant.ResourceTypeBasicConfiguration; +import com.sap.me.plant.ResourceTypeConfiguration; +import com.sap.me.plant.ResourceTypeConfigurationServiceInterface; + +import java.util.Collection; + + +/** + * 资源类型主数据操作类 + * + * + * @author Leon + * @date 2021/7/6 + */ +public class ResourceTypeWSClient { + + /** + * 查询资源类型 + * + * @param jsonObject + * @return + */ + public static Collection find(JSONObject jsonObject) { + Collection collection = null; + + try { + String site = jsonObject.getString("site"); + String resourceType = jsonObject.getString("resourceType"); + + //----------------------------------------------------------------------------------------------------------------------------------------------------------------- + ResourceTypeConfigurationServiceInterface resourceTypeService = MEServices.create("com.sap.me.plant", "ResourceTypeConfigurationService", site); + FindResourceTypeByKeyFieldsRequest resourceTypeRequest = new FindResourceTypeByKeyFieldsRequest(); + resourceTypeRequest.setResourceType(resourceType); + collection = resourceTypeService.findResourceTypeByKeyFields(resourceTypeRequest); + } catch (Exception e) { + //---------------- + } + + return collection; + } + + /** + * 资源类型新增 + * + * @param jsonObject + * @return + */ + public static String insert(JSONObject jsonObject) { + try { + String site = jsonObject.getString("site"); + String resourceType = jsonObject.getString("resourceType"); + String description = jsonObject.getString("description"); + String resourceTypeBo = HandleEnum.RESOURCE_TYPE.getHandle(site, resourceType); + + + //----------------------------------------------------------------------------------------------------------------------------------------------------------------- + ResourceTypeConfigurationServiceInterface resourceTypeService = MEServices.create("com.sap.me.plant", "ResourceTypeConfigurationService", site); + ResourceTypeConfiguration resourceTypeConfiguration = new ResourceTypeConfiguration(); + resourceTypeConfiguration.setRef(resourceTypeBo); + resourceTypeConfiguration.setResourceType(resourceType); + resourceTypeConfiguration.setDescription(description); + resourceTypeService.createResourceType(resourceTypeConfiguration); + + //自定义字段更新 + CustomDataWSClient.update(jsonObject, resourceTypeBo, ObjectAliasEnum.RESOURCE_TYPE.value()); + + return null; + } catch (Exception e) { + return ExceptionUtil.getExceptionMsg(e); + } + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceWSClient.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceWSClient.java index bcea8021..1863e3d3 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceWSClient.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/client/ResourceWSClient.java @@ -3,6 +3,7 @@ package com.foreverwin.mesnac.dataimport.client; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.foreverwin.mesnac.common.constant.DataImportConstant; +import com.foreverwin.mesnac.common.enums.HandleEnum; import com.foreverwin.mesnac.dataimport.util.AppUtil; import com.foreverwin.mesnac.meapi.model.WorkCenter; import com.foreverwin.mesnac.meapi.model.WorkCenterMember; @@ -19,6 +20,14 @@ import java.lang.reflect.UndeclaredThrowableException; import java.util.ArrayList; import java.util.List; + +/** + * 资源主数据操作类 + * + * + * @author Leon + * @date 2021/7/6 + */ public class ResourceWSClient { /** @@ -30,13 +39,18 @@ public class ResourceWSClient { try { String site = (String) data.get("site"); String resource = data.getString("resource").toUpperCase(); + String resourceBo = HandleEnum.RESOURCE.getHandle(site, resource); + ObjectReference request = new ObjectReference(); - request.setRef("ResourceBO:" + site + "," + resource); + request.setRef(resourceBo); + + //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ResourceConfigurationServiceInterface resourceConfigurationService = MEServices.create("com.sap.me.plant", "ResourceConfigurationService", site); ResourceFullConfiguration op = resourceConfigurationService.readResource(request); + return op; } catch (Exception e) { - e.printStackTrace(); + //--------- } return null; @@ -51,7 +65,7 @@ public class ResourceWSClient { try { String site = (String) data.get("site"); String resource = data.getString("resource").toUpperCase(); - String resourceRef = "ResourceBO:" + site + "," + resource; + String resourceRef = HandleEnum.RESOURCE.getHandle(site, resource); //资源主数据对象 CreateResourceRequest request = new CreateResourceRequest(); diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java index 809a3ee1..67568908 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java @@ -10,12 +10,22 @@ public class HandlerFactory { public static Handler getHandler(String handleType){ switch (handleType){ + case "item" : + return new ItemHandler(); + case "resourceType": + return new ResourceTypeHandler(); case "resource": return new ResourceHandler(); case "operation" : return new OperationHandler(); case "workCenter" : return new WorkCenterHandler(); + case "ncGroup" : + return new NCGroupHandler(); + case "ncCode" : + return new NCCodeHandler(); + case "messageType" : + //return new MessageTypeHandler(); } return null; diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ItemHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ItemHandler.java new file mode 100644 index 00000000..3a7f2806 --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ItemHandler.java @@ -0,0 +1,92 @@ +package com.foreverwin.mesnac.dataimport.handler; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.dataimport.client.ItemWSClient; +import com.foreverwin.mesnac.dataimport.handler.base.BaseHandler; +import com.foreverwin.mesnac.dataimport.reader.FileReader; +import com.foreverwin.mesnac.dataimport.reader.FileReaderBuilder; +import com.foreverwin.mesnac.dataimport.reader.RowVisitor; +import com.foreverwin.mesnac.dataimport.service.MasterObjectDefine; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.I18nUtil; +import com.sap.me.productdefinition.ItemFullConfiguration; + +import java.io.InputStream; +import java.util.Map; + +public class ItemHandler extends BaseHandler { + + + @Override + public String importFile(String site, InputStream inputStream, String fileType, String mode) throws Exception { + int row = 0; + StringBuffer buffer = new StringBuffer(); + Integer[] failedNumber = new Integer[]{0}; + + try { + FileReader fileReader = new FileReaderBuilder().build(fileType); + RowVisitor visitor = getRowVisitor(site, mode, buffer, failedNumber); + row = fileReader.visitor(visitor).read(inputStream, getHeaders()); + } catch (Exception e) { + buffer.append(e.getMessage() + "\n"); + } + + if (buffer.length() > 0) { + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + throw BusinessException.build(buffer.toString()); + } + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + + return buffer.toString(); + } + + + @Override + public Map getHeaders() { + + return MasterObjectDefine.getHeadsMapping("ITEM"); + } + + public RowVisitor getRowVisitor(String site, String mode, StringBuffer buffer, Integer[] failedNumber) { + + return new RowVisitor() { + @Override + public int visit(long index, JSONObject jsonObject) { + Object[] params = new Object[10]; + params[0] = index; + params[1] = jsonObject.getString("item"); + + String resultMessage = null; + try { + if (jsonObject.containsKey("item") && jsonObject.getString("item").trim().length() > 0) { + jsonObject.put("site", site); + ItemFullConfiguration itemFull = ItemWSClient.find(jsonObject); + if (itemFull == null) { + resultMessage = "物料主数据不存在"; + } + + ItemWSClient.update(jsonObject, itemFull); + if (resultMessage != null) { + params[2] = resultMessage; + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + return 0; + } + } + return 0; + } catch (Exception e) { + params[2] = e.getMessage(); + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + } + + return 0; + } + + @Override + public String[] getHeader() { + return null; + } + }; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCCodeHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCCodeHandler.java new file mode 100644 index 00000000..57dd77db --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCCodeHandler.java @@ -0,0 +1,112 @@ +package com.foreverwin.mesnac.dataimport.handler; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.dataimport.client.ItemWSClient; +import com.foreverwin.mesnac.dataimport.client.NcCodeWSClient; +import com.foreverwin.mesnac.dataimport.client.NcGroupWSClient; +import com.foreverwin.mesnac.dataimport.handler.base.BaseHandler; +import com.foreverwin.mesnac.dataimport.reader.FileReader; +import com.foreverwin.mesnac.dataimport.reader.FileReaderBuilder; +import com.foreverwin.mesnac.dataimport.reader.RowVisitor; +import com.foreverwin.mesnac.dataimport.service.MasterObjectDefine; +import com.foreverwin.mesnac.dataimport.util.AppUtil; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.I18nUtil; +import com.sap.me.common.ObjectAliasEnum; +import com.sap.me.nonconformance.NcCodeFullConfiguration; +import com.sap.me.nonconformance.NcGroupFullConfiguration; +import com.sap.me.productdefinition.ItemFullConfiguration; + +import java.io.InputStream; +import java.util.Map; + +public class NCCodeHandler extends BaseHandler { + + + @Override + public String importFile(String site, InputStream inputStream, String fileType, String mode) throws Exception { + int row = 0; + StringBuffer buffer = new StringBuffer(); + Integer[] failedNumber = new Integer[]{0}; + + try { + FileReader fileReader = new FileReaderBuilder().build(fileType); + RowVisitor visitor = getRowVisitor(site, mode, buffer, failedNumber); + row = fileReader.visitor(visitor).read(inputStream, getHeaders()); + } catch (Exception e) { + buffer.append(e.getMessage() + "\n"); + } + + if (buffer.length() > 0) { + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + throw BusinessException.build(buffer.toString()); + } + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + + return buffer.toString(); + } + + @Override + public Map getHeaders() { + + return MasterObjectDefine.getHeadsMapping(ObjectAliasEnum.NC_CODE.value()); + } + + + public RowVisitor getRowVisitor(String site, String mode, StringBuffer buffer, Integer[] failedNumber) { + + return new RowVisitor() { + @Override + public int visit(long index, JSONObject jsonObject) { + Object[] params = new Object[10]; + params[0] = index; + params[1] = jsonObject.getString("ncCode"); + + boolean insert = false; + String resultMessage = null; + try { + if (jsonObject.containsKey("ncGroup") && jsonObject.getString("ncGroup").trim().length() > 0) { + jsonObject.put("site", site); + NcCodeFullConfiguration ncCodeFull = NcCodeWSClient.find(jsonObject); + if (ncCodeFull == null) { + if (AppUtil.canInsert(mode)) { + insert = true; + NcGroupWSClient.create(jsonObject); + }else if(AppUtil.canUpdate(mode)) { + resultMessage = ("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + } + } else { + if (AppUtil.canUpdate(mode)) { + NcCodeWSClient.update(jsonObject, ncCodeFull); + } + } + + if (resultMessage != null) { + params[2] = resultMessage; + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + return 0; + } + } + + return 0; + } catch (Exception e) { + params[2] = e.getMessage(); + failedNumber[0]++; + if (insert) { + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + } else { + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + } + } + + return 0; + } + + @Override + public String[] getHeader() { + return null; + } + }; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCGroupHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCGroupHandler.java new file mode 100644 index 00000000..b9a614e9 --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/NCGroupHandler.java @@ -0,0 +1,105 @@ +package com.foreverwin.mesnac.dataimport.handler; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.dataimport.client.NcGroupWSClient; +import com.foreverwin.mesnac.dataimport.handler.base.BaseHandler; +import com.foreverwin.mesnac.dataimport.reader.FileReader; +import com.foreverwin.mesnac.dataimport.reader.FileReaderBuilder; +import com.foreverwin.mesnac.dataimport.reader.RowVisitor; +import com.foreverwin.mesnac.dataimport.service.MasterObjectDefine; +import com.foreverwin.mesnac.dataimport.util.AppUtil; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.I18nUtil; +import com.sap.me.nonconformance.NcGroupFullConfiguration; + +import java.io.InputStream; +import java.util.Map; + +public class NCGroupHandler extends BaseHandler { + + @Override + public String importFile(String site, InputStream inputStream, String fileType, String mode) throws Exception { + int row = 0; + StringBuffer buffer = new StringBuffer(); + Integer[] failedNumber = new Integer[]{0}; + + try { + FileReader fileReader = new FileReaderBuilder().build(fileType); + RowVisitor visitor = getRowVisitor(site, mode, buffer, failedNumber); + row = fileReader.visitor(visitor).read(inputStream, getHeaders()); + } catch (Exception e) { + buffer.append(e.getMessage() + "\n"); + } + + if (buffer.length() > 0) { + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + throw BusinessException.build(buffer.toString()); + } + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + + return buffer.toString(); + } + + @Override + public Map getHeaders() { + + return MasterObjectDefine.getHeadsMapping("NC_GROUP"); + } + + public RowVisitor getRowVisitor(String site, String mode, StringBuffer buffer, Integer[] failedNumber) { + + return new RowVisitor() { + @Override + public int visit(long index, JSONObject jsonObject) { + Object[] params = new Object[10]; + params[0] = index; + params[1] = jsonObject.getString("ncGroup"); + + boolean insert = false; + String resultMessage = null; + try { + if (jsonObject.containsKey("ncGroup") && jsonObject.getString("ncGroup").trim().length() > 0) { + jsonObject.put("site", site); + NcGroupFullConfiguration ncGroupFull = NcGroupWSClient.find(jsonObject); + if (ncGroupFull == null) { + if (AppUtil.canInsert(mode)) { + insert = true; + NcGroupWSClient.create(jsonObject); + }else if(AppUtil.canUpdate(mode)) { + resultMessage = ("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + } + } else { + if (AppUtil.canUpdate(mode)) { + NcGroupWSClient.update(jsonObject, ncGroupFull); + } + } + + if (resultMessage != null) { + params[2] = resultMessage; + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + return 0; + } + } + + return 0; + } catch (Exception e) { + params[2] = e.getMessage(); + failedNumber[0]++; + if (insert) { + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + } else { + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); + } + } + + return 0; + } + + @Override + public String[] getHeader() { + return null; + } + }; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ResourceTypeHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ResourceTypeHandler.java new file mode 100644 index 00000000..03b2285c --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/ResourceTypeHandler.java @@ -0,0 +1,91 @@ +package com.foreverwin.mesnac.dataimport.handler; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.dataimport.client.ResourceTypeWSClient; +import com.foreverwin.mesnac.dataimport.handler.base.BaseHandler; +import com.foreverwin.mesnac.dataimport.reader.FileReader; +import com.foreverwin.mesnac.dataimport.reader.FileReaderBuilder; +import com.foreverwin.mesnac.dataimport.reader.RowVisitor; +import com.foreverwin.mesnac.dataimport.service.MasterObjectDefine; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.I18nUtil; +import com.sap.me.plant.ResourceTypeBasicConfiguration; + +import java.io.InputStream; +import java.util.Collection; +import java.util.Map; + +public class ResourceTypeHandler extends BaseHandler { + + @Override + public String importFile(String site, InputStream inputStream, String fileType, String mode) throws Exception { + int row = 0; + StringBuffer buffer = new StringBuffer(); + Integer[] failedNumber = new Integer[]{0}; + + try { + FileReader fileReader = new FileReaderBuilder().build(fileType); + RowVisitor visitor = getRowVisitor(site, mode, buffer, failedNumber); + row = fileReader.visitor(visitor).read(inputStream, getHeaders()); + } catch (Exception e) { + buffer.append(e.getMessage() + "\n"); + } + + if (buffer.length() > 0) { + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + throw BusinessException.build(buffer.toString()); + } + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + + return buffer.toString(); + } + + @Override + public Map getHeaders() { + return MasterObjectDefine.getHeadsMapping("RESOURCE_TYPE"); + } + + public RowVisitor getRowVisitor(String site, String mode, StringBuffer buffer, Integer[] failedNumber) { + + return new RowVisitor() { + @Override + public int visit(long index, JSONObject jsonObject) { + Object[] params = new Object[10]; + params[0] = index; + params[1] = jsonObject.getString("resourceType"); + + String resultMessage = null; + try { + if (jsonObject.containsKey("resourceType") && jsonObject.getString("resourceType").trim().length() > 0) { + jsonObject.put("site", site); + Collection collection = ResourceTypeWSClient.find(jsonObject); + if (collection.size() > 0) { + resultMessage = "资源类型主数据已经存在"; + } else { + ResourceTypeWSClient.insert(jsonObject); + } + + if (resultMessage != null) { + params[2] = resultMessage; + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + return 0; + } + } + return 0; + } catch (Exception e) { + params[2] = e.getMessage(); + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + } + + return 0; + } + + @Override + public String[] getHeader() { + return null; + } + }; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java index d393d0ff..23fa30ad 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java @@ -4,6 +4,10 @@ import java.util.HashMap; import java.util.Map; +/** + * 导入模板字段定义 + * + */ public class MasterObjectDefine { private static Map cvsHeadsMapping = null; @@ -11,22 +15,43 @@ public class MasterObjectDefine { public static Map getHeadsMapping(String objectType){ switch (objectType){ - //资源主数据 + //物料 + case "ITEM": + cvsHeadsMapping = new HashMap<>(); + + cvsHeadsMapping.put("seqNum","序号"); + cvsHeadsMapping.put("item","物料编码"); + cvsHeadsMapping.put("lotSize","批次大小"); + cvsHeadsMapping.put("perMeter","自定义-PER_METER"); + cvsHeadsMapping.put("perSquareMeter","自定义-PER_SQUARE_METER"); + + break; + + //资源类型 + case "RESOURCE_TYPE": + cvsHeadsMapping = new HashMap(); + + cvsHeadsMapping.put("seqNum","序号"); + cvsHeadsMapping.put("resourceType","*设备(资源)类型命名(英文)"); + cvsHeadsMapping.put("description","描述"); + break; + + //资源主数据 case "RESOURCE": - cvsHeadsMapping = new HashMap(); + cvsHeadsMapping = new HashMap(); - cvsHeadsMapping.put("seqNum", "序号"); - cvsHeadsMapping.put("resource", "资源编码"); - cvsHeadsMapping.put("description", "资源描述"); - cvsHeadsMapping.put("defaultOperation", "默认操作"); - cvsHeadsMapping.put("status", "资源状态" ); - cvsHeadsMapping.put("setupStatus", "设置状态"); - cvsHeadsMapping.put("processResource", "工艺资源"); - cvsHeadsMapping.put("resourceType", "资源类型"); - cvsHeadsMapping.put("validFrom", "资源有效期从"); - cvsHeadsMapping.put("validTo", "资源有效期到"); - cvsHeadsMapping.put("certificate", "证明编号"); - break; + cvsHeadsMapping.put("seqNum", "序号"); + cvsHeadsMapping.put("resource", "资源编码"); + cvsHeadsMapping.put("description", "资源描述"); + cvsHeadsMapping.put("defaultOperation", "默认操作"); + cvsHeadsMapping.put("status", "资源状态" ); + cvsHeadsMapping.put("setupStatus", "设置状态"); + cvsHeadsMapping.put("processResource", "工艺资源"); + cvsHeadsMapping.put("resourceType", "资源类型"); + cvsHeadsMapping.put("validFrom", "资源有效期从"); + cvsHeadsMapping.put("validTo", "资源有效期到"); + cvsHeadsMapping.put("certificate", "证明编号"); + break; //工作中心主数据 case "WORK_CENTER": @@ -48,7 +73,7 @@ public class MasterObjectDefine { break; //工序主数据 - case "OPERATION": + case "OPERATION": cvsHeadsMapping = new HashMap(); cvsHeadsMapping.put("seqNum","序号"); @@ -61,345 +86,67 @@ public class MasterObjectDefine { cvsHeadsMapping.put("operationType", "操作类型"); cvsHeadsMapping.put("resourceType", "资源类型"); cvsHeadsMapping.put("defaultResource", "默认资源"); - break; - - case "PRODUCTION": - - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","*产线名称(英文)"); - cvsHeadsMapping.put("descZH","产线描述(中文)"); - cvsHeadsMapping.put("descEN","产线描述(英文)"); - cvsHeadsMapping.put("wcCategory","工作中心类别(线/区域)"); - cvsHeadsMapping.put("wcType","工作中心类型(生产/转移)"); - cvsHeadsMapping.put("memberType","子工作中心类型"); - cvsHeadsMapping.put("memberSeq","序列号"); - cvsHeadsMapping.put("memberGBO","工作中心或资源"); - break; - - case "RESOURCE_TYPE": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","*设备(资源)类型命名(英文)"); - cvsHeadsMapping.put("desc","描述"); - - break; - - case "ROUTER": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","工艺路线名称(英文)"); - cvsHeadsMapping.put("ver","版本"); - cvsHeadsMapping.put("desc","工艺路线描述"); - cvsHeadsMapping.put("routerType","工艺路线类型" ); - cvsHeadsMapping.put("status","状态" ); - cvsHeadsMapping.put("currentVer","当前版本"); - cvsHeadsMapping.put("step","工艺步骤"); - cvsHeadsMapping.put("setpOper","关键工序"); - cvsHeadsMapping.put("processTime","处理时间"); - - break; - - case "ITEM": - - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","物料编码"); - cvsHeadsMapping.put("descZH","物料描述"); - //计量单位 - - break; - - case "ITEM_GROUP": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","*物料组名称"); - cvsHeadsMapping.put("desc","*物料组描述"); - cvsHeadsMapping.put("item","物料"); - cvsHeadsMapping.put("itemVer","物料版本" ); - - break; - - case "BOM": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","BOM名称"); - cvsHeadsMapping.put("ver","BOM版本"); - cvsHeadsMapping.put("desc","BOM描述"); - cvsHeadsMapping.put("currentVer","当前版本"); - cvsHeadsMapping.put("status","状态"); - cvsHeadsMapping.put("item","*组件物料"); - cvsHeadsMapping.put("itemVer","*组件物料版本"); - cvsHeadsMapping.put("alternate","替代料"); - cvsHeadsMapping.put("alternateVer","替代料版本"); - cvsHeadsMapping.put("assembleSEQ","*装配顺序"); - cvsHeadsMapping.put("assembleOper","*装配关键工序"); - cvsHeadsMapping.put("assembleDataType","装配数据类型"); - cvsHeadsMapping.put("assembleQty","装配数量"); - cvsHeadsMapping.put("refDes","参考点"); - cvsHeadsMapping.put("virtualItem","是否虚拟件"); - - break; - - case "NC_GROUP": + break; - cvsHeadsMapping=new HashMap(); + //不合格代码组 + case "NC_GROUP": + cvsHeadsMapping = new HashMap<>(); cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","*不合格组名称(英文)"); - cvsHeadsMapping.put("desc","不合格组描述"); + cvsHeadsMapping.put("ncGroup","*不合格组名称(英文)"); + cvsHeadsMapping.put("description","不合格组描述"); cvsHeadsMapping.put("applyAll","用于所有操作"); - cvsHeadsMapping.put("applyOper","不合格组分配的操作"); - break; - + cvsHeadsMapping.put("applyOperation","不合格组分配的操作"); + break; - case "NC_CODE": - - cvsHeadsMapping=new HashMap(); + //不合格代码 + case "NC_CODE": + cvsHeadsMapping = new HashMap<>(); cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("groupId","*不合格代码组名称(英文)"); - cvsHeadsMapping.put("id","*不合格代码(英文)"); + cvsHeadsMapping.put("ncGroup","*不合格代码组名称(英文)"); + cvsHeadsMapping.put("ncCode","*不合格代码(英文)"); cvsHeadsMapping.put("descZH","不合格代码描述(中文)"); cvsHeadsMapping.put("descEN","不合格代码描述(英文)"); cvsHeadsMapping.put("category","不合格类别"); cvsHeadsMapping.put("dataType","不合格数据类型"); cvsHeadsMapping.put("dispositionRouter","处置工艺路线"); cvsHeadsMapping.put("canBePrimaryCode","是否可以是主要代码"); - cvsHeadsMapping.put("closure_required","是否需要关闭"); - cvsHeadsMapping.put("auto_close_primary","自动关闭主NC"); - cvsHeadsMapping.put("auto_close_incident","自动关闭事故"); - cvsHeadsMapping.put("secondary_reqd_for_close","需要次级代码关闭"); - cvsHeadsMapping.put("secondary_code","次要不良项"); - cvsHeadsMapping.put("max_nc_limit","NC限制最大值"); - cvsHeadsMapping.put("disp_operation","有效操作"); - cvsHeadsMapping.put("disposition_group","处置组"); - cvsHeadsMapping.put("disposition_group_status","处置组状态"); - - break; - - case "INVENTORY": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","*库存标识"); - cvsHeadsMapping.put("item","*物料名称"); - cvsHeadsMapping.put("itemVer","*物料版本"); - cvsHeadsMapping.put("qty","库存数量"); - cvsHeadsMapping.put("shoporder","工单号"); + cvsHeadsMapping.put("closureRequired","是否需要关闭"); + cvsHeadsMapping.put("autoClosePrimary","自动关闭主NC"); + cvsHeadsMapping.put("autoCloseIncident","自动关闭事故"); + cvsHeadsMapping.put("secondaryRequireForClose","需要次级代码关闭"); + cvsHeadsMapping.put("secondaryCode","次要不良项"); + cvsHeadsMapping.put("maxNcLimit","NC限制最大值"); + cvsHeadsMapping.put("dispositionOperation","有效操作"); + cvsHeadsMapping.put("dispositionGroup","处置组"); + cvsHeadsMapping.put("dispositionGroupStatus","处置组状态"); + + break; + + //消息类型 + case "MESSAGE_TYPE": + cvsHeadsMapping = new HashMap<>(); + cvsHeadsMapping.put("seqNum","序号"); + cvsHeadsMapping.put("seqNum","消息类型"); + cvsHeadsMapping.put("seqNum","消息正文"); + cvsHeadsMapping.put("seqNum","响应用户组"); + cvsHeadsMapping.put("seqNum","响应用户组"); + cvsHeadsMapping.put("seqNum","响应时间(H)"); + cvsHeadsMapping.put("seqNum","响应超期上报用户组"); + cvsHeadsMapping.put("seqNum","出具方案时间(H)"); + cvsHeadsMapping.put("seqNum","方案关闭时通知用户组"); + cvsHeadsMapping.put("seqNum","纠正预防措施用户组"); + cvsHeadsMapping.put("seqNum","纠正预防措施时间"); + break; - break; - - case "SHOP_ORDER": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","工单号"); - cvsHeadsMapping.put("status","工单类型"); - cvsHeadsMapping.put("item","计划物料"); - cvsHeadsMapping.put("qty","工单数量"); - cvsHeadsMapping.put("planStart","计划开始时间"); - cvsHeadsMapping.put("planComplete","计划结束时间"); - - - break; - - case "USER": - - cvsHeadsMapping=new HashMap(); - - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("id","登录ID"); - cvsHeadsMapping.put("password","密码"); - cvsHeadsMapping.put("status","状态"); - cvsHeadsMapping.put("firstname","名"); - cvsHeadsMapping.put("lastname","姓"); - cvsHeadsMapping.put("email","邮件"); - cvsHeadsMapping.put("phone","电话"); - cvsHeadsMapping.put("defaultSite","ME站点"); - cvsHeadsMapping.put("defaultGroups","ME用户组"); - cvsHeadsMapping.put("extRole","额外角色"); - cvsHeadsMapping.put("cellphone","手机"); - break; - case "STORAGE_BIN": - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("seqNum","序号"); - cvsHeadsMapping.put("name","库位编码"); - cvsHeadsMapping.put("description","库位描述"); - cvsHeadsMapping.put("user","责任人"); - cvsHeadsMapping.put("status","库位状态"); - cvsHeadsMapping.put("fifo","是否先进先出控制"); - cvsHeadsMapping.put("storageLocBo","存储地点编码"); - break; - - case "LABEL_CHECK_DETAIL": - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("checkPeriod","盘点周期"); - cvsHeadsMapping.put("storageLocBo","库存地点"); - cvsHeadsMapping.put("storageBinBo","库位"); - cvsHeadsMapping.put("itemcode","物料"); - cvsHeadsMapping.put("itemdescr","物料描述"); - cvsHeadsMapping.put("unit","计量单位"); - cvsHeadsMapping.put("labelSn","物料标签/SN"); - cvsHeadsMapping.put("meQty","ME数量"); - cvsHeadsMapping.put("meActualQty","ME实盘数量"); - cvsHeadsMapping.put("meDiffQty","ME差异数量"); - break; - case "Z_EXPORT_TEMPLATE": - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("workCenterBo","生产线"); - cvsHeadsMapping.put("workCenterDescr","生产线描述"); - cvsHeadsMapping.put("itemBo","零件号"); - cvsHeadsMapping.put("itemDescr","零件号描述"); - cvsHeadsMapping.put("customerId","客户件号"); - cvsHeadsMapping.put("processidBo","工艺号"); - cvsHeadsMapping.put("isValid","是否有效"); - break; - case "Z_WORKSHOP_ORGANIZATION": - cvsHeadsMapping=new HashMap(); - cvsHeadsMapping.put("name","组织代码"); - cvsHeadsMapping.put("description","组织描述"); - cvsHeadsMapping.put("level","层次"); - cvsHeadsMapping.put("leaderCode","组织领导工号"); - cvsHeadsMapping.put("leaderName","组织领导姓名"); - cvsHeadsMapping.put("parentBo","父组织代码"); - cvsHeadsMapping.put("parentName","父组织描述"); - cvsHeadsMapping.put("isDispatch","是否派工"); - break; - case "PROCESS_INSPECTION_PLAN": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("site", "工厂"); - cvsHeadsMapping.put("projectVersion","检验计划版本"); - cvsHeadsMapping.put("item","物料"); - cvsHeadsMapping.put("customerPartNo", "客户件号"); - cvsHeadsMapping.put("operation","工序"); - cvsHeadsMapping.put("productionVersionCategory", "生产版本类别"); - cvsHeadsMapping.put("code", "检验项目编码"); - cvsHeadsMapping.put("codeDescription", "检验项目描述"); - cvsHeadsMapping.put("detail","检验项目明细"); - cvsHeadsMapping.put("methodCode","检验方法编码"); - cvsHeadsMapping.put("methodCodeDescription", "检验方法描述"); - cvsHeadsMapping.put("frequency","频次"); - cvsHeadsMapping.put("specialCharacteristicGrade", "特殊特性等级"); - cvsHeadsMapping.put("judgmentCriteria", "判定标准"); - cvsHeadsMapping.put("category", "检验类型"); - cvsHeadsMapping.put("status","状态"); - cvsHeadsMapping.put("judgmentMode","判定方式"); - cvsHeadsMapping.put("parameterType", "参数类型"); - cvsHeadsMapping.put("upperControlLineValue","上控制线值"); - cvsHeadsMapping.put("upperLimit", "上限值"); - cvsHeadsMapping.put("lowerLimit", "下限值"); - cvsHeadsMapping.put("lowerControlLineValue", "下控制线值"); - cvsHeadsMapping.put("targetValue","目标值"); - cvsHeadsMapping.put("unit","单位"); - cvsHeadsMapping.put("detailSeq","检验项目明细顺序号"); - break; - case "PROCESS_POINT_INSPECTION": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("isSurface","*产线类型"); - cvsHeadsMapping.put("productionLine","产线编号"); - cvsHeadsMapping.put("productionLineDescription","产线描述"); - cvsHeadsMapping.put("item","零件编号"); - cvsHeadsMapping.put("itemDescription","零件描述"); - cvsHeadsMapping.put("productionVersion","*生产版本类型"); - cvsHeadsMapping.put("operation","工序编号"); - cvsHeadsMapping.put("operationDescription","工序描述"); - cvsHeadsMapping.put("status","是否有效"); - cvsHeadsMapping.put("checkNumber","*点检编号"); - cvsHeadsMapping.put("checkProject","*点检项目"); - cvsHeadsMapping.put("dataType","数据类型"); - cvsHeadsMapping.put("maxIndex","上限指标"); - cvsHeadsMapping.put("minIndex","下限指标"); - cvsHeadsMapping.put("targetIndex","目标指标"); - cvsHeadsMapping.put("pointInspection","点检频次"); + default: break; - case "POKA_YOKE_POINT_INSPECTION": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("productionLine","*产线编号"); - cvsHeadsMapping.put("productionLineDescription","产线描述"); - cvsHeadsMapping.put("item","零件编号"); - cvsHeadsMapping.put("itemDescription","零件描述"); - cvsHeadsMapping.put("pokaYokeNo","*防错装置编号"); - cvsHeadsMapping.put("pokaYokeName","*防错装置名称"); - cvsHeadsMapping.put("status","是否有效"); - cvsHeadsMapping.put("checkNumber","*点检编号"); - cvsHeadsMapping.put("checkProject","*点检项目"); - cvsHeadsMapping.put("userMethod","*操作方法"); - cvsHeadsMapping.put("dataType","数据类型"); - cvsHeadsMapping.put("maxIndex","上限指标"); - cvsHeadsMapping.put("minIndex","下限指标"); - cvsHeadsMapping.put("targetIndex","目标指标"); - cvsHeadsMapping.put("pointInspection","点检频次"); - break; - case "SHOP_ORDER_SMELTING_FORMULA": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("code","*序号"); - cvsHeadsMapping.put("shopOrder","*工单号"); - cvsHeadsMapping.put("smeltingNo","*炉次号"); - cvsHeadsMapping.put("item","*物料号"); - cvsHeadsMapping.put("plannedQty","*计划需求量"); - break; - case "FF_DISPATCHER": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("site","工厂代码"); - cvsHeadsMapping.put("workCenter","产线"); - cvsHeadsMapping.put("operation","工序"); - cvsHeadsMapping.put("storageLocation","小库位"); - cvsHeadsMapping.put("dispatchingBo","点位"); - cvsHeadsMapping.put("description","点位名称"); - break; - case "MANUAL_LINE_WORK_TABEL_ARRANGEMENT": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("shopOrder","工单号"); - cvsHeadsMapping.put("workbenchLine","工作台编码"); - break; - case "SECONDMENT_WORKING_HOUR": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("secondmentDate","借调年月"); - cvsHeadsMapping.put("sourceSite","来源工厂编号"); - cvsHeadsMapping.put("sourceSiteName","来源工厂名称"); - cvsHeadsMapping.put("userId","员工编号"); - cvsHeadsMapping.put("jobTitle","职务性质"); - cvsHeadsMapping.put("secondmentHour","借调工时"); - break; - case "FF_SCADA_ANOMAL": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("site","站点"); - cvsHeadsMapping.put("equipmentNo","设备号"); - cvsHeadsMapping.put("equipmentName","设备名称"); - cvsHeadsMapping.put("alarmNo","报警代码"); - cvsHeadsMapping.put("alarmName","报警点位名称"); - cvsHeadsMapping.put("abnormalClass","大类"); - cvsHeadsMapping.put("abnormalSubclass","小类"); - cvsHeadsMapping.put("shutdown","是否停机"); - break; - case "FF_ASSEMBLY_AUTOMATION_ITEM": - cvsHeadsMapping = new HashMap<>(); - cvsHeadsMapping.put("site","站点"); - cvsHeadsMapping.put("productionLine","产线"); - cvsHeadsMapping.put("item","产线物料"); - cvsHeadsMapping.put("operation","工序"); - cvsHeadsMapping.put("componentItem","组件物料"); - cvsHeadsMapping.put("locationCode","配送点位"); - cvsHeadsMapping.put("replenishmentPoint","补货点"); - cvsHeadsMapping.put("operatingMode","运行方式"); - default: - break; } - return cvsHeadsMapping; + return cvsHeadsMapping; } } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java index 4e7e12f6..5eba80f2 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java @@ -1,5 +1,6 @@ package com.foreverwin.mesnac.dispatch.controller; +import com.foreverwin.modular.core.exception.BusinessException; import com.foreverwin.modular.core.util.R; import com.foreverwin.modular.core.util.FrontPage; import com.foreverwin.modular.core.util.CommonMethods; @@ -25,17 +26,6 @@ public class CallItemController { @Autowired public CallItemService callItemService; - /** - * 根据id查询 - * - * @param id 主键 - * @return - */ - @ResponseBody - @GetMapping("/{id:.+}") - public R getCallItemById(@PathVariable String id) { - return R.ok( callItemService.getById(id)); - } /** * 查询所有数据 @@ -43,91 +33,53 @@ public class CallItemController { * @return */ @ResponseBody - @GetMapping("") - public R getCallItemList(CallItem callItem){ + @PostMapping("/findCallItemList") + public R findCallItemList(@RequestBody CallItem callItem){ List result; - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.setEntity(callItem); - result = callItemService.list(queryWrapper); + try { + callItem.setSite(CommonMethods.getSite()); + result = callItemService.findCallItemList(callItem); + } catch (Exception e) { + return R.failed(e.getMessage()); + } + + return R.ok(result); } - /** - * 分页查询数据 - * - * @param frontPage 分页信息 - * @return - */ + @ResponseBody - @GetMapping("/page") - public R page(FrontPage frontPage, CallItem callItem){ - IPage result; - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.setEntity(callItem); - if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { - //TODO modify global query - queryWrapper.lambda().and(wrapper -> wrapper - .like(CallItem::getHandle, frontPage.getGlobalQuery()) - .or().like(CallItem::getSite, frontPage.getGlobalQuery()) - .or().like(CallItem::getCallItemNo, frontPage.getGlobalQuery()) - .or().like(CallItem::getShopOrder, frontPage.getGlobalQuery()) - .or().like(CallItem::getSfc, frontPage.getGlobalQuery()) - .or().like(CallItem::getSfcDispatchBo, frontPage.getGlobalQuery()) - .or().like(CallItem::getOperation, frontPage.getGlobalQuery()) - .or().like(CallItem::getStepId, frontPage.getGlobalQuery()) - .or().like(CallItem::getResrce, frontPage.getGlobalQuery()) - .or().like(CallItem::getComponentBo, frontPage.getGlobalQuery()) - .or().like(CallItem::getCallType, frontPage.getGlobalQuery()) - .or().like(CallItem::getStatus, frontPage.getGlobalQuery()) - .or().like(CallItem::getCallStatus, frontPage.getGlobalQuery()) - .or().like(CallItem::getIssueStatus, frontPage.getGlobalQuery()) - .or().like(CallItem::getCreateUser, frontPage.getGlobalQuery()) - .or().like(CallItem::getUpdateUser, frontPage.getGlobalQuery()) - ); + @PostMapping("/callItem") + public R callItem(@RequestBody List callItemList) { + try { + String site = CommonMethods.getSite(); + String user = CommonMethods.getUser(); + if (callItemList == null || callItemList.size() <= 0) { + throw BusinessException.build("请至少选择一笔记录"); + } + callItemService.callItem(site, user, callItemList); + } catch (Exception e) { + return R.failed(e.getMessage()); } - result = callItemService.page(frontPage.getPagePlus(), queryWrapper); - return R.ok(result); - } - /** - * 新增 - * @param callItem 传递的实体 - * @return null 失败 实体成功 - */ - @PostMapping - public R save(@RequestBody CallItem callItem) { - return R.ok(callItemService.save(callItem)); + return R.ok("叫料操作成功"); } - /** - * 修改 - * @param callItem 传递的实体 - * @return null 失败 实体成功 - */ - @PutMapping - public R updateById(@RequestBody CallItem callItem) { - return R.ok(callItemService.updateById(callItem)); - } - /** - * 根据id删除对象 - * @param id 实体ID - * @return 0 失败 1 成功 - */ @ResponseBody - @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") - public R removeById(@PathVariable("id") String id){ - return R.ok(callItemService.removeById(id)); - } + @PostMapping("/confirmReceive") + public R confirmReceive(@RequestBody List callItemList) { + try { + String site = CommonMethods.getSite(); + String user = CommonMethods.getUser(); + if (callItemList == null || callItemList.size() <= 0) { + throw BusinessException.build("请至少选择一笔记录"); + } + callItemService.confirmReceive(site, user, callItemList); + } catch (Exception e) { + return R.failed(e.getMessage()); + } - /** - * 批量删除对象 - * @param ids 实体集合ID - * @return 0 失败 1 成功 - */ - @ResponseBody - @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") - public R removeByIds(List ids){ - return R.ok(callItemService.removeByIds(ids)); + return R.ok("确认到料操作成功"); } } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java index c7c2b63f..25b11ce3 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java @@ -4,8 +4,10 @@ import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.dispatch.model.CallItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.foreverwin.mesnac.dispatch.model.SfcDispatch; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; /** @@ -33,4 +35,29 @@ public interface CallItemMapper extends BaseMapper { * @return */ List selectDispatchCallItem(List list); + + /** + * 查询派工单下的组件以及组件类型 + * + * @param sfcDispatchBo + * @return + */ + List selectCallItemAndType(@Param("sfcDispatchBo") String sfcDispatchBo); + + /** + * 生产叫料查询 + * + * @param callItem + */ + List findCallItemList(CallItem callItem); + + /** + * 修改叫料数据状态 + * + * @param status + * @param user + * @param dateTime + * @param list + */ + void updateCallItemStatus(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java index bb18d8bd..615c880c 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java @@ -6,6 +6,7 @@ import com.foreverwin.mesnac.dispatch.model.ShopOrderRelease; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; /** @@ -22,4 +23,19 @@ public interface SfcDispatchMapper extends BaseMapper { List findSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("operation") String operation, @Param("stepId") String stepId); List findSfcDispatchList(ShopOrderRelease shopOrderRelease); + + /** + * 修改派工单状态 + * + * @param site + * @param dispatchNo + * @param dispatchStatus + * @param modifyUser + * @param modifiedDateTime + */ + void updateSfcDispatchStatus(@Param("site") String site, + @Param("dispatchNo") String dispatchNo, + @Param("dispatchStatus") String dispatchStatus, + @Param("modifyUser") String modifyUser, + @Param("modifyDateTime") LocalDateTime modifiedDateTime); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/UserResourceMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/UserResourceMapper.java index ee9c60e5..c87ff219 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/UserResourceMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/UserResourceMapper.java @@ -24,11 +24,5 @@ public interface UserResourceMapper extends BaseMapper { List findEnableList(@Param("site") String site, @Param("resource") String resource, @Param("user") String user); - List findAll(@Param("site") String site, - @Param("resource") String resource, - @Param("userId") String userId - ); - - - + List findAll(@Param("site") String site, @Param("resource") String resource, @Param("userId") String userId); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java index 0db327df..0507d2ea 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java @@ -22,10 +22,9 @@ import com.baomidou.mybatisplus.annotation.IdType; */ @TableName("Z_CALL_ITEM") - public class CallItem extends Model { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** * 主键 @@ -134,19 +133,31 @@ public class CallItem extends Model { private LocalDateTime updatedDateTime; + @TableField(exist = false) + private String item; + @TableField(exist = false) + private String itemDescription; + @TableField(exist = false) + private String materialType; + @TableField(exist = false) + private String dispatchStatus; @TableField(exist = false) private String workOrder; @TableField(exist = false) - private String resourceType; + private String workCenter; @TableField(exist = false) - private String blankingSize; + private String dispatchNo; @TableField(exist = false) private BigDecimal dispatchQty; @TableField(exist = false) - private String itemDescription; + private String resourceType; + @TableField(exist = false) + private String blankingSize; @TableField(exist = false) private String operationDescription; @TableField(exist = false) + private LocalDateTime plannedStartDate; + @TableField(exist = false) private String remark; @@ -318,6 +329,38 @@ public class CallItem extends Model { this.updatedDateTime = updatedDateTime; } + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getItemDescription() { + return itemDescription; + } + + public void setItemDescription(String itemDescription) { + this.itemDescription = itemDescription; + } + + public String getMaterialType() { + return materialType; + } + + public void setMaterialType(String materialType) { + this.materialType = materialType; + } + + public String getDispatchStatus() { + return dispatchStatus; + } + + public void setDispatchStatus(String dispatchStatus) { + this.dispatchStatus = dispatchStatus; + } + public String getWorkOrder() { return workOrder; } @@ -326,20 +369,20 @@ public class CallItem extends Model { this.workOrder = workOrder; } - public String getResourceType() { - return resourceType; + public String getWorkCenter() { + return workCenter; } - public void setResourceType(String resourceType) { - this.resourceType = resourceType; + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; } - public String getBlankingSize() { - return blankingSize; + public String getDispatchNo() { + return dispatchNo; } - public void setBlankingSize(String blankingSize) { - this.blankingSize = blankingSize; + public void setDispatchNo(String dispatchNo) { + this.dispatchNo = dispatchNo; } public BigDecimal getDispatchQty() { @@ -350,12 +393,20 @@ public class CallItem extends Model { this.dispatchQty = dispatchQty; } - public String getItemDescription() { - return itemDescription; + public String getResourceType() { + return resourceType; } - public void setItemDescription(String itemDescription) { - this.itemDescription = itemDescription; + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + public String getBlankingSize() { + return blankingSize; + } + + public void setBlankingSize(String blankingSize) { + this.blankingSize = blankingSize; } public String getOperationDescription() { @@ -366,6 +417,14 @@ public class CallItem extends Model { this.operationDescription = operationDescription; } + public LocalDateTime getPlannedStartDate() { + return plannedStartDate; + } + + public void setPlannedStartDate(LocalDateTime plannedStartDate) { + this.plannedStartDate = plannedStartDate; + } + public String getRemark() { return remark; } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java index 5c89329e..cada9caa 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java @@ -35,4 +35,30 @@ public interface CallItemService extends IService { * @param sfcDispatchList */ void saveCallItem(String site, String user, List sfcDispatchList); + + /** + * 生产叫料查询 + * + * @param callItem + */ + List findCallItemList(CallItem callItem); + + /** + * 叫料 + * + * @param site + * @param user + * @param callItemList + */ + void callItem(String site, String user, List callItemList); + + /** + * 确认到料 + * ----需要校验叫料明细行中不允许存在叫料类型为材料,且组件物料类型为原材料的行 + * + * @param site + * @param user + * @param callItemList + */ + void confirmReceive(String site, String user, List callItemList); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java index 7dcbd9e1..10df2048 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java @@ -18,7 +18,10 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + /** *

* 服务实现类 @@ -123,4 +126,46 @@ public class CallItemServiceImpl extends ServiceImpl i this.saveBatch(list); } } + + @Override + public List findCallItemList(CallItem callItem) { + + return callItemMapper.findCallItemList(callItem); + } + + @Override + public void callItem(String site, String user, List callItemList) { + if (callItemList == null || callItemList.size() <= 0) { + return; + } + + LocalDateTime dateTime = LocalDateTime.now(); + callItemMapper.updateCallItemStatus(Constants.CALL_ITEM_STATUS_CALLED, user, dateTime, callItemList); + } + + @Override + public void confirmReceive(String site, String user, List callItemList) { + if (callItemList == null || callItemList.size() <= 0) { + return; + } + + for (CallItem callItem : callItemList) { + String sfcDispatchBo = callItem.getSfcDispatchBo(); + List list = callItemMapper.selectCallItemAndType(sfcDispatchBo); + if (list == null || list.size() <= 0) { + continue; + } + + for (CallItem callItem1 : list) { + String callType = callItem1.getCallType(); + String materialType = callItem1.getMaterialType(); + if (Constants.CALL_TYPE_MATERIAL.equals(callType) && "ROH".equals(materialType)) { + throw BusinessException.build("勾选的派工单包含原材料组件,不能触发确认到料"); + } + } + } + + LocalDateTime dateTime = LocalDateTime.now(); + callItemMapper.updateCallItemStatus(Constants.CALL_ITEM_STATUS_ISSUED, user, dateTime, callItemList); + } } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java index 1fa57092..747c04d1 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java @@ -5,6 +5,7 @@ import com.foreverwin.mesnac.common.constant.Constants; import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.common.enums.DispatchStatusEnum; import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.service.SfcDispatchCommonService; import com.foreverwin.mesnac.common.util.ExcelUtils; import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.dispatch.model.ShopOrderRelease; @@ -42,7 +43,7 @@ import java.util.stream.Collectors; */ @Service("sfcDispatchService") @Transactional(rollbackFor = Exception.class) -public class SfcDispatchServiceImpl extends ServiceImpl implements SfcDispatchService { +public class SfcDispatchServiceImpl extends ServiceImpl implements SfcDispatchService, SfcDispatchCommonService { @Autowired @@ -404,4 +405,10 @@ public class SfcDispatchServiceImpl extends ServiceImpl + - + + + + - + + + - + @@ -606,17 +612,54 @@ - + SELECT ZCI.HANDLE, ZCI.SITE, ZCI.CALL_ITEM_NO, ZCI.SHOP_ORDER, ZCI.SFC, ZCI.SFC_DISPATCH_BO, ZCI.OPERATION, ZCI.STEP_ID, ZCI.RESRCE, ZCI.COMPONENT_BO, CP.MATERIAL_TYPE, ZCI.CALL_TYPE, ZCI.REQUIRED_QTY, ZCI.REQUIRED_DATE_TIME, + ZCI.ISSUE_QTY, ZCI.STATUS, ZCI.CALL_STATUS, ZCI.ISSUE_STATUS, ZCI.CREATE_USER, ZCI.CREATED_DATE_TIME, ZCI.UPDATE_USER, ZCI.UPDATED_DATE_TIME + FROM Z_CALL_ITEM ZCI + INNER JOIN ITEM CP ON CP.HANDLE = ZCI.COMPONENT_BO + WHERE ZCI.SFC_DISPATCH_BO = #{sfcDispatchBo} + + + + + + UPDATE Z_CALL_ITEM SET STATUS = #{status}, UPDATE_USER = #{user}, UPDATED_DATE_TIME = #{dateTime} + WHERE STATUS != '804' AND SFC_DISPATCH_BO IN + + #{item.sfcDispatchBo} + + diff --git a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml index dc205d9d..48a651c8 100644 --- a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml +++ b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml @@ -977,7 +977,6 @@ - - + + + UPDATE Z_SFC_DISPATCH SET DISPATCH_STATUS = #{dispatchStatus}, MODIFY_USER = #{modifyUser}, MODIFIED_DATE_TIME = #{modifiedDateTime} + WHERE SITE = #{site} AND DISPATCH_NO = #{dispatchNo} + diff --git a/dispatch/src/main/resources/mapper/UserResourceMapper.xml b/dispatch/src/main/resources/mapper/UserResourceMapper.xml index 8e8d24e1..94433b0c 100644 --- a/dispatch/src/main/resources/mapper/UserResourceMapper.xml +++ b/dispatch/src/main/resources/mapper/UserResourceMapper.xml @@ -452,15 +452,6 @@ ) - - - - + SELECT + FROM OPERATION + WHERE SITE = #{site} AND OPERATION LIKE '%_'||#{erpWorkCenter} +