From b5932fdeb056d60f099c5b3f7563f0062f01e5d9 Mon Sep 17 00:00:00 2001
From: Leon <3066758958@qq.com>
Date: Tue, 29 Jun 2021 15:23:37 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E4=B8=BB=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../MobileWorkStationController.java | 42 +++
.../mesnac/common/enums/HandleEnum.java | 3 +
.../mapper/MobileWorkStationMapper.java | 16 +
.../mesnac/common/model/ActivityOption.java | 34 ++
.../common/model/MobileWorkStationData.java | 156 ++++++++
.../service/MobileWorkStationService.java | 20 ++
.../impl/MobileWorkStationServiceImpl.java | 48 +++
.../mesnac/common/util/ExcelUtils.java | 10 +-
.../mapper/MobileWorkStationMapper.xml | 56 +++
.../service/impl/SfcDispatchServiceImpl.java | 44 ++-
.../minth/generator/GeneratorApplication.java | 6 +-
.../meapi/controller/SfcController.java | 22 ++
.../foreverwin/mesnac/meapi/dto/SfcDto.java | 58 ++-
.../mesnac/meapi/mapper/SfcDataMapper.java | 18 +
.../mesnac/meapi/mapper/SfcMapper.java | 4 +
.../mesnac/meapi/model/SfcData.java | 143 ++++++++
.../mesnac/meapi/service/SfcDataService.java | 37 ++
.../mesnac/meapi/service/SfcService.java | 10 +
.../service/impl/SfcDataServiceImpl.java | 58 +++
.../meapi/service/impl/SfcServiceImpl.java | 6 +
.../main/resources/mapper/SfcDataMapper.xml | 332 ++++++++++++++++++
meapi/src/main/resources/mapper/SfcMapper.xml | 27 ++
.../controller/SfcDataController.java | 145 ++++++++
23 files changed, 1279 insertions(+), 16 deletions(-)
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/controller/MobileWorkStationController.java
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/mapper/MobileWorkStationMapper.java
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/model/ActivityOption.java
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/model/MobileWorkStationData.java
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/service/MobileWorkStationService.java
create mode 100644 common/src/main/java/com/foreverwin/mesnac/common/service/impl/MobileWorkStationServiceImpl.java
create mode 100644 common/src/main/resources/mapper/MobileWorkStationMapper.xml
create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcDataMapper.java
create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java
create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java
create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java
create mode 100644 meapi/src/main/resources/mapper/SfcDataMapper.xml
create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/controller/MobileWorkStationController.java b/common/src/main/java/com/foreverwin/mesnac/common/controller/MobileWorkStationController.java
new file mode 100644
index 00000000..9cc7eb63
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/controller/MobileWorkStationController.java
@@ -0,0 +1,42 @@
+package com.foreverwin.mesnac.common.controller;
+
+import com.foreverwin.mesnac.common.enums.HandleEnum;
+import com.foreverwin.mesnac.common.model.MobileWorkStationData;
+import com.foreverwin.mesnac.common.service.MobileWorkStationService;
+import com.foreverwin.modular.core.util.CommonMethods;
+import com.foreverwin.modular.core.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ *
+ * @author Syngna
+ * @since 2020-01-04
+ */
+@RestController
+@RequestMapping("/mobileWorkStations")
+public class MobileWorkStationController {
+
+ @Autowired
+ public MobileWorkStationService mobileWorkStationService;
+
+ @GetMapping("listMobileWorkStationApplication")
+ public R listMobileWorkStationApplication(String workStation) {
+
+ List result;
+ try {
+ String site = CommonMethods.getSite();
+ String user = CommonMethods.getUser();
+ String userBo = HandleEnum.USER.getHandle(site, user);
+ result = mobileWorkStationService.listMobileWorkStationApplication(site, userBo, workStation);
+ }
+ catch (Exception e) {
+ return R.failed(e.getMessage());
+ }
+ return R.ok(result);
+ }
+}
\ No newline at end of file
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 bb699136..7f84e4c9 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
@@ -14,6 +14,9 @@ public enum HandleEnum {
/**车间作业控制*/
SFC( "SFCBO:", "SFCBO:{0},{1}" ),
+ /**用户**/
+ USER("UserBO:", "UserBO:{0},{1}"),
+
/**物料清单**/
BOM("BOMBO:","BOMBO:{0},{1},{2},{3}"),
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/mapper/MobileWorkStationMapper.java b/common/src/main/java/com/foreverwin/mesnac/common/mapper/MobileWorkStationMapper.java
new file mode 100644
index 00000000..9e052197
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/mapper/MobileWorkStationMapper.java
@@ -0,0 +1,16 @@
+package com.foreverwin.mesnac.common.mapper;
+
+import com.foreverwin.mesnac.common.model.ActivityOption;
+import com.foreverwin.mesnac.common.model.MobileWorkStationData;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface MobileWorkStationMapper {
+
+ List selectActivityOptionList(@Param("activityBoList") List activityBoList);
+
+ List selectMobileWorkStationList(@Param("site") String site, @Param("userBo") String userBo, @Param("workStation") String workStation);
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/model/ActivityOption.java b/common/src/main/java/com/foreverwin/mesnac/common/model/ActivityOption.java
new file mode 100644
index 00000000..96c7193f
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/model/ActivityOption.java
@@ -0,0 +1,34 @@
+package com.foreverwin.mesnac.common.model;
+
+public class ActivityOption {
+
+ private String activity;
+
+ private String key;
+
+ private String value;
+
+ public String getActivity() {
+ return activity;
+ }
+
+ public void setActivity(String activity) {
+ this.activity = activity;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/model/MobileWorkStationData.java b/common/src/main/java/com/foreverwin/mesnac/common/model/MobileWorkStationData.java
new file mode 100644
index 00000000..0c85d251
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/model/MobileWorkStationData.java
@@ -0,0 +1,156 @@
+package com.foreverwin.mesnac.common.model;
+
+import java.util.List;
+
+public class MobileWorkStationData {
+
+ private String workStationBo;
+
+ private String canChangeOperation;
+
+ private String canChangeResource;
+
+ private String defaultOperationBo;
+
+ private String defaultResourceBo;
+
+ private String mainInputPrompt;
+
+ private String sequence;
+
+ private String buttonId;
+
+ private String buttonSize;
+
+ private String label;
+
+ private String imageIcon;
+
+ private String activityBo;
+
+ private String activity;
+
+ private String classOrProgram;
+
+ private List activityOptionList;
+
+ public String getWorkStationBo() {
+ return workStationBo;
+ }
+
+ public void setWorkStationBo(String workStationBo) {
+ this.workStationBo = workStationBo;
+ }
+
+ public String getCanChangeOperation() {
+ return canChangeOperation;
+ }
+
+ public void setCanChangeOperation(String canChangeOperation) {
+ this.canChangeOperation = canChangeOperation;
+ }
+
+ public String getCanChangeResource() {
+ return canChangeResource;
+ }
+
+ public void setCanChangeResource(String canChangeResource) {
+ this.canChangeResource = canChangeResource;
+ }
+
+ public String getDefaultOperationBo() {
+ return defaultOperationBo;
+ }
+
+ public void setDefaultOperationBo(String defaultOperationBo) {
+ this.defaultOperationBo = defaultOperationBo;
+ }
+
+ public String getDefaultResourceBo() {
+ return defaultResourceBo;
+ }
+
+ public void setDefaultResourceBo(String defaultResourceBo) {
+ this.defaultResourceBo = defaultResourceBo;
+ }
+
+ public String getMainInputPrompt() {
+ return mainInputPrompt;
+ }
+
+ public void setMainInputPrompt(String mainInputPrompt) {
+ this.mainInputPrompt = mainInputPrompt;
+ }
+
+ public String getSequence() {
+ return sequence;
+ }
+
+ public void setSequence(String sequence) {
+ this.sequence = sequence;
+ }
+
+ public String getButtonId() {
+ return buttonId;
+ }
+
+ public void setButtonId(String buttonId) {
+ this.buttonId = buttonId;
+ }
+
+ public String getButtonSize() {
+ return buttonSize;
+ }
+
+ public void setButtonSize(String buttonSize) {
+ this.buttonSize = buttonSize;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getImageIcon() {
+ return imageIcon;
+ }
+
+ public void setImageIcon(String imageIcon) {
+ this.imageIcon = imageIcon;
+ }
+
+ public String getActivityBo() {
+ return activityBo;
+ }
+
+ public void setActivityBo(String activityBo) {
+ this.activityBo = activityBo;
+ }
+
+ public String getActivity() {
+ return activity;
+ }
+
+ public void setActivity(String activity) {
+ this.activity = activity;
+ }
+
+ public String getClassOrProgram() {
+ return classOrProgram;
+ }
+
+ public void setClassOrProgram(String classOrProgram) {
+ this.classOrProgram = classOrProgram;
+ }
+
+ public List getActivityOptionList() {
+ return activityOptionList;
+ }
+
+ public void setActivityOptionList(List activityOptionList) {
+ this.activityOptionList = activityOptionList;
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/MobileWorkStationService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/MobileWorkStationService.java
new file mode 100644
index 00000000..20715d9c
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/service/MobileWorkStationService.java
@@ -0,0 +1,20 @@
+package com.foreverwin.mesnac.common.service;
+
+
+
+import com.foreverwin.mesnac.common.model.MobileWorkStationData;
+
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author Syngna
+ * @since 2019-05-30
+ */
+public interface MobileWorkStationService {
+
+ List listMobileWorkStationApplication(String site, String userBo, String workStation);
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/MobileWorkStationServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/MobileWorkStationServiceImpl.java
new file mode 100644
index 00000000..cdcce445
--- /dev/null
+++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/MobileWorkStationServiceImpl.java
@@ -0,0 +1,48 @@
+package com.foreverwin.mesnac.common.service.impl;
+
+import com.foreverwin.mesnac.common.mapper.MobileWorkStationMapper;
+import com.foreverwin.mesnac.common.model.ActivityOption;
+import com.foreverwin.mesnac.common.model.MobileWorkStationData;
+import com.foreverwin.mesnac.common.service.MobileWorkStationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 移动维护服务实现类
+ *
+ *
+ * @author Syngna
+ * @since 2020-01-04
+ */
+@Service
+public class MobileWorkStationServiceImpl implements MobileWorkStationService {
+
+ @Autowired
+ private MobileWorkStationMapper mobileWorkStationMapper;
+
+ @Override
+ public List listMobileWorkStationApplication(String site, String userBo, String workStation) {
+ List workStationDataList = mobileWorkStationMapper.selectMobileWorkStationList(site, userBo, workStation);
+ if(workStationDataList == null || workStationDataList.size() == 0) {
+ return new ArrayList<>();
+ }
+ List activityList = workStationDataList.stream().map(MobileWorkStationData::getActivityBo).collect(Collectors.toList());
+ List activityOptionList = mobileWorkStationMapper.selectActivityOptionList(activityList);
+ for(MobileWorkStationData mobileWorkStationData : workStationDataList) {
+ if(mobileWorkStationData.getActivityOptionList() == null) {
+ mobileWorkStationData.setActivityOptionList(new ArrayList<>());
+ }
+ for(ActivityOption activityOption: activityOptionList) {
+ if(activityOption.getActivity().equals(mobileWorkStationData.getActivity())) {
+ mobileWorkStationData.getActivityOptionList().add(activityOption);
+ }
+ }
+ }
+ return workStationDataList;
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/foreverwin/mesnac/common/util/ExcelUtils.java b/common/src/main/java/com/foreverwin/mesnac/common/util/ExcelUtils.java
index b55ccdf2..c483f6fa 100644
--- a/common/src/main/java/com/foreverwin/mesnac/common/util/ExcelUtils.java
+++ b/common/src/main/java/com/foreverwin/mesnac/common/util/ExcelUtils.java
@@ -2,6 +2,7 @@ package com.foreverwin.mesnac.common.util;
import com.foreverwin.mesnac.common.model.ExcelColumn;
import com.foreverwin.modular.core.exception.BusinessException;
+import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.CharUtils;
import org.apache.commons.lang.StringUtils;
@@ -40,12 +41,17 @@ public class ExcelUtils {
private final static String EXCEL2003 = "xls";
private final static String EXCEL2007 = "xlsx";
- public static List readExcel(String fileType, Class tClass, MultipartFile multipartFile){
+ public static List readExcel(String fileType, Class tClass, MultipartFile multipartFile, FileItem fileItem){
Workbook workbook = null;
List dataList = new ArrayList<>();
try {
- InputStream inputStream = multipartFile.getInputStream();
+ InputStream inputStream = null;
+ if (multipartFile != null && !multipartFile.isEmpty()) {
+ inputStream = multipartFile.getInputStream();
+ } else {
+ inputStream = fileItem.getInputStream();
+ }
//分析文件格式
if (EXCEL2003.equals(fileType)) {
diff --git a/common/src/main/resources/mapper/MobileWorkStationMapper.xml b/common/src/main/resources/mapper/MobileWorkStationMapper.xml
new file mode 100644
index 00000000..dfb3859e
--- /dev/null
+++ b/common/src/main/resources/mapper/MobileWorkStationMapper.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 e3ea8dc8..9561b9ce 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
@@ -17,11 +17,13 @@ import com.foreverwin.mesnac.dispatch.service.UserResourceService;
import com.foreverwin.mesnac.meapi.service.ResrceService;
import com.foreverwin.mesnac.meapi.util.StringUtils;
import com.foreverwin.modular.core.exception.BusinessException;
+import org.apache.commons.fileupload.FileItem;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
@@ -38,7 +40,7 @@ import java.util.stream.Collectors;
* @author Leon.L
* @since 2021-06-02
*/
-@Service
+@Service("sfcDispatchService")
@Transactional(rollbackFor = Exception.class)
public class SfcDispatchServiceImpl extends ServiceImpl implements SfcDispatchService {
@@ -173,7 +175,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl sfcDispatchList;
try {
- sfcDispatchList = ExcelUtils.readExcel(fileType, SfcDispatchDto.class, multipartFile);
+ sfcDispatchList = ExcelUtils.readExcel(fileType, SfcDispatchDto.class, multipartFile, null);
} finally {
if (inputStream != null){
try {
@@ -190,6 +192,36 @@ public class SfcDispatchServiceImpl extends ServiceImpl sfcDispatchList;
+ try {
+ sfcDispatchList = ExcelUtils.readExcel(fileType, SfcDispatchDto.class, null, fileItem);
+ } finally {
+ if (inputStream != null){
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (sfcDispatchList == null || sfcDispatchList.size() <= 0) {
+ throw BusinessException.build("上传的Excel没有数据,或者数据格式不正确");
+ }
+
+
+ //调用业务处理逻辑
+ StringBuffer message = new StringBuffer();
+ this.sfcDispatch(site, user, DispatchStatusEnum.IMPORT.getCode(), message, sfcDispatchList);
+
+ return message.toString();
+ }
+
/**
@@ -264,14 +296,8 @@ public class SfcDispatchServiceImpl extends ServiceImpl
+ * Mapper 接口
+ *
+ *
+ * @author Leon.L
+ * @since 2021-06-29
+ */
+@Repository
+public interface SfcDataMapper extends BaseMapper {
+
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java
index 29d76ead..42dfb822 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java
@@ -1,7 +1,9 @@
package com.foreverwin.mesnac.meapi.mapper;
+import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -20,4 +22,6 @@ public interface SfcMapper extends BaseMapper {
* 获取资源上活动的sfc
*/
List getSfcListByResrceBO(String resrceBO);
+
+ SfcDto findSfcData(@Param("site") String site, @Param("sfc") String sfc);
}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java
new file mode 100644
index 00000000..7e65fd09
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java
@@ -0,0 +1,143 @@
+package com.foreverwin.mesnac.meapi.model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+/**
+ *
+ *
+ *
+ *
+ * @author Leon.L
+ * @since 2021-06-29
+ */
+
+@TableName("SFC_DATA")
+public class SfcData extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("HANDLE")
+ private String handle;
+ @TableField("SFC_BO")
+ private String sfcBo;
+ @TableField("DATE_TIME")
+ private LocalDateTime dateTime;
+ @TableField("DATA_FIELD")
+ private String dataField;
+ @TableField("DATA_ATTR")
+ private String dataAttr;
+ @TableField("USER_BO")
+ private String userBo;
+ @TableField("CREATED_DATE_TIME")
+ private LocalDateTime createdDateTime;
+ @TableField("MODIFIED_DATE_TIME")
+ private LocalDateTime modifiedDateTime;
+
+
+ public String getHandle() {
+ return handle;
+ }
+
+ public void setHandle(String handle) {
+ this.handle = handle;
+ }
+
+ public String getSfcBo() {
+ return sfcBo;
+ }
+
+ public void setSfcBo(String sfcBo) {
+ this.sfcBo = sfcBo;
+ }
+
+ public LocalDateTime getDateTime() {
+ return dateTime;
+ }
+
+ public void setDateTime(LocalDateTime dateTime) {
+ this.dateTime = dateTime;
+ }
+
+ public String getDataField() {
+ return dataField;
+ }
+
+ public void setDataField(String dataField) {
+ this.dataField = dataField;
+ }
+
+ public String getDataAttr() {
+ return dataAttr;
+ }
+
+ public void setDataAttr(String dataAttr) {
+ this.dataAttr = dataAttr;
+ }
+
+ public String getUserBo() {
+ return userBo;
+ }
+
+ public void setUserBo(String userBo) {
+ this.userBo = userBo;
+ }
+
+ public LocalDateTime getCreatedDateTime() {
+ return createdDateTime;
+ }
+
+ public void setCreatedDateTime(LocalDateTime createdDateTime) {
+ this.createdDateTime = createdDateTime;
+ }
+
+ public LocalDateTime getModifiedDateTime() {
+ return modifiedDateTime;
+ }
+
+ public void setModifiedDateTime(LocalDateTime modifiedDateTime) {
+ this.modifiedDateTime = modifiedDateTime;
+ }
+
+ public static final String HANDLE = "HANDLE";
+
+ public static final String SFC_BO = "SFC_BO";
+
+ public static final String DATE_TIME = "DATE_TIME";
+
+ public static final String DATA_FIELD = "DATA_FIELD";
+
+ public static final String DATA_ATTR = "DATA_ATTR";
+
+ public static final String USER_BO = "USER_BO";
+
+ public static final String CREATED_DATE_TIME = "CREATED_DATE_TIME";
+
+ public static final String MODIFIED_DATE_TIME = "MODIFIED_DATE_TIME";
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.handle;
+ }
+
+ @Override
+ public String toString() {
+ return "SfcData{" +
+ "handle = " + handle +
+ ", sfcBo = " + sfcBo +
+ ", dateTime = " + dateTime +
+ ", dataField = " + dataField +
+ ", dataAttr = " + dataAttr +
+ ", userBo = " + userBo +
+ ", createdDateTime = " + createdDateTime +
+ ", modifiedDateTime = " + modifiedDateTime +
+ "}";
+ }
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java
new file mode 100644
index 00000000..05366856
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java
@@ -0,0 +1,37 @@
+package com.foreverwin.mesnac.meapi.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.meapi.model.SfcData;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.foreverwin.modular.core.util.FrontPage;
+
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author Leon.L
+ * @since 2021-06-29
+ */
+public interface SfcDataService extends IService {
+
+ /**
+ * 分页查询
+ * @param frontPage
+ * @return
+ */
+ IPage selectPage(FrontPage frontPage, SfcData sfcData);
+
+ List selectList(SfcData sfcData);
+
+ /**
+ * 保存SFC的跟追位置
+ *
+ * @param site
+ * @param sfc
+ * @param location
+ */
+ void saveSfcLocation(String site, String sfc, String location);
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java
index 7fec1cc5..5a7f5ac7 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java
@@ -1,6 +1,7 @@
package com.foreverwin.mesnac.meapi.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.baomidou.mybatisplus.extension.service.IService;
import com.foreverwin.modular.core.util.FrontPage;
@@ -35,4 +36,13 @@ public interface SfcService extends IService {
* 获取资源上活动的sfc
*/
List getSfcListByResrceBO(String resrceBO);
+
+ /**
+ * 查询生产批次的基本信息
+ *
+ * @param site
+ * @param sfc
+ * @return
+ */
+ SfcDto findSfcData(String site, String sfc);
}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java
new file mode 100644
index 00000000..5c14c8ad
--- /dev/null
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java
@@ -0,0 +1,58 @@
+package com.foreverwin.mesnac.meapi.service.impl;
+
+import com.foreverwin.mesnac.meapi.service.SfcService;
+import com.foreverwin.mesnac.meapi.service.WorkCenterService;
+import com.foreverwin.modular.core.util.FrontPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.foreverwin.mesnac.meapi.model.SfcData;
+import com.foreverwin.mesnac.meapi.mapper.SfcDataMapper;
+import com.foreverwin.mesnac.meapi.service.SfcDataService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.logging.Handler;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author Leon.L
+ * @since 2021-06-29
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class SfcDataServiceImpl extends ServiceImpl implements SfcDataService {
+
+ @Autowired
+ private SfcService sfcService;
+ @Autowired
+ private SfcDataMapper sfcDataMapper;
+ @Autowired
+ private WorkCenterService workCenterService;
+
+ @Override
+ public IPage selectPage(FrontPage frontPage, SfcData sfcData) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.setEntity(sfcData);
+ return super.page(frontPage.getPagePlus(), queryWrapper);
+ }
+
+ @Override
+ public List selectList(SfcData sfcData) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.setEntity(sfcData);
+ return super.list(queryWrapper);
+ }
+
+ @Override
+ public void saveSfcLocation(String site, String sfc, String location) {
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java
index 52e18561..5871376d 100644
--- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java
+++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java
@@ -1,5 +1,6 @@
package com.foreverwin.mesnac.meapi.service.impl;
+import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.modular.core.util.FrontPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -57,5 +58,10 @@ public class SfcServiceImpl extends ServiceImpl implements SfcSe
return sfc;
}
+ @Override
+ public SfcDto findSfcData(String site, String sfc) {
+ return sfcMapper.findSfcData(site, sfc);
+ }
+
}
\ No newline at end of file
diff --git a/meapi/src/main/resources/mapper/SfcDataMapper.xml b/meapi/src/main/resources/mapper/SfcDataMapper.xml
new file mode 100644
index 00000000..1d330bb8
--- /dev/null
+++ b/meapi/src/main/resources/mapper/SfcDataMapper.xml
@@ -0,0 +1,332 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HANDLE, SFC_BO, DATE_TIME, DATA_FIELD, DATA_ATTR, USER_BO, CREATED_DATE_TIME, MODIFIED_DATE_TIME
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO SFC_DATA
+
+ HANDLE,
+ SFC_BO,
+ DATE_TIME,
+ DATA_FIELD,
+ DATA_ATTR,
+ USER_BO,
+ CREATED_DATE_TIME,
+ MODIFIED_DATE_TIME,
+ VALUES
+
+ #{handle},
+ #{sfcBo},
+ #{dateTime},
+ #{dataField},
+ #{dataAttr},
+ #{userBo},
+ #{createdDateTime},
+ #{modifiedDateTime},
+
+
+
+
+ INSERT INTO SFC_DATA
+
+
+ VALUES
+
+ #{handle},
+ #{sfcBo},
+ #{dateTime},
+ #{dataField},
+ #{dataAttr},
+ #{userBo},
+ #{createdDateTime},
+ #{modifiedDateTime},
+
+
+
+
+
+
+
+
+
+ UPDATE SFC_DATA
+ HANDLE=#{et.handle},
+ SFC_BO=#{et.sfcBo},
+ DATE_TIME=#{et.dateTime},
+ DATA_FIELD=#{et.dataField},
+ DATA_ATTR=#{et.dataAttr},
+ USER_BO=#{et.userBo},
+ CREATED_DATE_TIME=#{et.createdDateTime},
+ MODIFIED_DATE_TIME=#{et.modifiedDateTime},
+
+
+
+
+ HANDLE=#{ew.entity.handle}
+ AND SFC_BO=#{ew.entity.sfcBo}
+ AND DATE_TIME=#{ew.entity.dateTime}
+ AND DATA_FIELD=#{ew.entity.dataField}
+ AND DATA_ATTR=#{ew.entity.dataAttr}
+ AND USER_BO=#{ew.entity.userBo}
+ AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}
+ AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime}
+
+
+ ${ew.sqlSegment}
+
+
+
+
+ ${ew.sqlSegment}
+
+
+
+
+
+ DELETE FROM SFC_DATA
+
+
+
+
+ ${k} = #{cm[${k}]}
+
+
+
+
+
+
+
+ DELETE FROM SFC_DATA
+
+
+
+
+ HANDLE=#{ew.entity.handle}
+
+ AND SFC_BO=#{ew.entity.sfcBo}
+ AND DATE_TIME=#{ew.entity.dateTime}
+ AND DATA_FIELD=#{ew.entity.dataField}
+ AND DATA_ATTR=#{ew.entity.dataAttr}
+ AND USER_BO=#{ew.entity.userBo}
+ AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}
+ AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime}
+
+
+ ${ew.sqlSegment}
+
+
+
+
+ ${ew.sqlSegment}
+
+
+
+
+
+
diff --git a/meapi/src/main/resources/mapper/SfcMapper.xml b/meapi/src/main/resources/mapper/SfcMapper.xml
index e765d0cf..e61d6e16 100644
--- a/meapi/src/main/resources/mapper/SfcMapper.xml
+++ b/meapi/src/main/resources/mapper/SfcMapper.xml
@@ -35,6 +35,16 @@
+
+
+
+
+
+
+
+
+
+
HANDLE, CHANGE_STAMP, SITE, SFC, STATUS_BO, SHOP_ORDER_BO, QTY, QTY_DONE, QTY_SCRAPPED, QTY_HISTORICAL_MIN, QTY_HISTORICAL_MAX, ITEM_BO, PRIORITY, LOCATION, RMA_MAX_TIMES_PROCESSED, LCC_BO, ORIGINAL_STATUS_BO, QTY_MULT_PERFORMED, ACTUAL_COMP_DATE, PREV_SITE, ORIGINAL_TRANSFER_KEY, IMMEDIATE_ARCHIVE, TRANSFER_DATETIME, TRANSFER_USER, SN_DONE, AIN_EQUIPMENT_ID, CREATED_DATE_TIME, MODIFIED_DATE_TIME, PARTITION_DATE
@@ -634,4 +644,21 @@
WHERE RES.HANDLE = #{resrceBO}
ORDER BY IW.DATE_STARTED DESC
+
+
diff --git a/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java
new file mode 100644
index 00000000..971159cf
--- /dev/null
+++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java
@@ -0,0 +1,145 @@
+package com.foreverwin.mesnac.production.controller;
+
+import com.foreverwin.mesnac.meapi.util.StringUtils;
+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;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import com.foreverwin.mesnac.meapi.service.SfcDataService;
+import com.foreverwin.mesnac.meapi.model.SfcData;
+import java.util.List;
+
+/**
+ *
+ * @author Leon.L
+ * @since 2021-06-29
+ */
+@RestController
+@RequestMapping("/SFC-DATA")
+public class SfcDataController {
+
+ @Autowired
+ public SfcDataService sfcDataService;
+
+ /**
+ * 根据id查询
+ *
+ * @param id 主键
+ * @return
+ */
+ @ResponseBody
+ @GetMapping("/{id:.+}")
+ public R getSfcDataById(@PathVariable String id) {
+ return R.ok( sfcDataService.getById(id));
+ }
+
+ /**
+ * 查询所有数据
+ *
+ * @return
+ */
+ @ResponseBody
+ @GetMapping("")
+ public R getSfcDataList(SfcData sfcData){
+ List result;
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.setEntity(sfcData);
+ result = sfcDataService.list(queryWrapper);
+ return R.ok(result);
+ }
+
+ /**
+ * 分页查询数据
+ *
+ * @param frontPage 分页信息
+ * @return
+ */
+ @ResponseBody
+ @GetMapping("/page")
+ public R page(FrontPage frontPage, SfcData sfcData){
+ IPage result;
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.setEntity(sfcData);
+ if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) {
+ //TODO modify global query
+ queryWrapper.lambda().and(wrapper -> wrapper
+ .like(SfcData::getHandle, frontPage.getGlobalQuery())
+ .or().like(SfcData::getSfcBo, frontPage.getGlobalQuery())
+ .or().like(SfcData::getDataField, frontPage.getGlobalQuery())
+ .or().like(SfcData::getDataAttr, frontPage.getGlobalQuery())
+ .or().like(SfcData::getUserBo, frontPage.getGlobalQuery())
+ );
+ }
+ result = sfcDataService.page(frontPage.getPagePlus(), queryWrapper);
+ return R.ok(result);
+ }
+
+ /**
+ * 新增
+ * @param sfcData 传递的实体
+ * @return null 失败 实体成功
+ */
+ @PostMapping
+ public R save(@RequestBody SfcData sfcData) {
+ return R.ok(sfcDataService.save(sfcData));
+ }
+
+ /**
+ * 修改
+ * @param sfcData 传递的实体
+ * @return null 失败 实体成功
+ */
+ @PutMapping
+ public R updateById(@RequestBody SfcData sfcData) {
+ return R.ok(sfcDataService.updateById(sfcData));
+ }
+
+ /**
+ * 根据id删除对象
+ * @param id 实体ID
+ * @return 0 失败 1 成功
+ */
+ @ResponseBody
+ @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}")
+ public R removeById(@PathVariable("id") String id){
+ return R.ok(sfcDataService.removeById(id));
+ }
+
+ /**
+ * 批量删除对象
+ * @param ids 实体集合ID
+ * @return 0 失败 1 成功
+ */
+ @ResponseBody
+ @RequestMapping(method = RequestMethod.POST, value = "/delete-batch")
+ public R removeByIds(List ids){
+ return R.ok(sfcDataService.removeByIds(ids));
+ }
+
+
+ @ResponseBody
+ @GetMapping("/saveSfcLocation")
+ public R saveSfcLocation(String sfc, String location) {
+ try {
+ if (StringUtils.isBlank(sfc)) {
+ throw BusinessException.build("SFC不能为空");
+ }
+ if (StringUtils.isBlank(location)) {
+ throw BusinessException.build("位置不能为空");
+ }
+
+ String site = CommonMethods.getSite();
+ sfcDataService.saveSfcLocation(site, sfc, location);
+ } catch (Exception e) {
+ return R.failed(e.getMessage());
+ }
+
+ return R.ok();
+ }
+}
\ No newline at end of file