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 1/3] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E4=B8=BB?= =?UTF-8?q?=E7=95=8C=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 From 9798e037ac626787ce557da4df1ed89954bfeda3 Mon Sep 17 00:00:00 2001 From: philip <244793088@qq.com> Date: Tue, 29 Jun 2021 15:28:56 +0800 Subject: [PATCH 2/3] pod --- .../foreverwin/mesnac/meapi/dto/SfcDto.java | 14 +- .../main/resources/mapper/OperationMapper.xml | 2 +- .../controller/PodTemplateController.java | 7 +- .../production/mapper/SfcCrossMapper.java | 97 +++++++ .../production/model/StepOperation.java | 113 ++++++++ .../service/PodTemplateService.java | 2 +- .../service/impl/PodTemplateServiceImpl.java | 263 +++++++++--------- .../main/resources/mapper/SfcCrossMapper.xml | 211 ++++++++++++++ 8 files changed, 572 insertions(+), 137 deletions(-) create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/mapper/SfcCrossMapper.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/model/StepOperation.java create mode 100644 production/src/main/resources/mapper/SfcCrossMapper.xml diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/SfcDto.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/SfcDto.java index 407259e6..19f7700b 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/SfcDto.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/dto/SfcDto.java @@ -3,9 +3,19 @@ package com.foreverwin.mesnac.meapi.dto; import com.foreverwin.mesnac.meapi.model.Sfc; public class SfcDto extends Sfc { - String resrce; + private String resrce; - String operation; + private String operation; + + private String workCenter; + + public String getWorkCenter() { + return workCenter; + } + + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; + } public String getOperation() { return operation; diff --git a/meapi/src/main/resources/mapper/OperationMapper.xml b/meapi/src/main/resources/mapper/OperationMapper.xml index deea6d41..f2506945 100644 --- a/meapi/src/main/resources/mapper/OperationMapper.xml +++ b/meapi/src/main/resources/mapper/OperationMapper.xml @@ -599,7 +599,7 @@ + SELECT + SFC.HANDLE, + SFC.SFC, + SFC.SHOP_ORDER_BO, + SFC.STATUS_BO + FROM SFC SFC + JOIN SFC_DATA DT ON DT.SFC_BO = SFC.HANDLE AND DT.DATA_FIELD = #{dataField} + WHERE DT.DATA_ATTR = #{dataAttr} + AND SFC.SITE = #{site} + + + AND SFC.STATUS_BO IN + + #{item} + + + + ORDER BY DT.DATE_TIME DESC + + + + + + + + + + + + + + + + + + + From e2775bc7d0107411ee124afe96a108879a639cab Mon Sep 17 00:00:00 2001 From: Leon <3066758958@qq.com> Date: Tue, 29 Jun 2021 16:19:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?SFC=E8=B7=9F=E8=B8=AA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/CustomFieldConstant.java | 37 ++---- .../mesnac/common/enums/HandleEnum.java | 2 + .../service/impl/InterfaceServiceImpl.java | 2 +- .../service/impl/SfcDataServiceImpl.java | 58 --------- .../controller/SfcDataController.java | 7 +- .../production}/mapper/SfcDataMapper.java | 4 +- .../mesnac/production}/model/SfcData.java | 4 +- .../production}/service/SfcDataService.java | 6 +- .../service/impl/SfcDataServiceImpl.java | 114 ++++++++++++++++++ .../main/resources/mapper/SfcDataMapper.xml | 8 +- 10 files changed, 144 insertions(+), 98 deletions(-) delete mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java rename {meapi/src/main/java/com/foreverwin/mesnac/meapi => production/src/main/java/com/foreverwin/mesnac/production}/mapper/SfcDataMapper.java (71%) rename {meapi/src/main/java/com/foreverwin/mesnac/meapi => production/src/main/java/com/foreverwin/mesnac/production}/model/SfcData.java (96%) rename {meapi/src/main/java/com/foreverwin/mesnac/meapi => production/src/main/java/com/foreverwin/mesnac/production}/service/SfcDataService.java (77%) create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcDataServiceImpl.java rename {meapi => production}/src/main/resources/mapper/SfcDataMapper.xml (98%) diff --git a/common/src/main/java/com/foreverwin/mesnac/common/constant/CustomFieldConstant.java b/common/src/main/java/com/foreverwin/mesnac/common/constant/CustomFieldConstant.java index bf1b995b..302e2a9d 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/constant/CustomFieldConstant.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/constant/CustomFieldConstant.java @@ -7,14 +7,7 @@ package com.foreverwin.mesnac.common.constant; * @since 2021-05-12 */ public class CustomFieldConstant { - /** - * 物料 - */ - public static final String ITEM_CUSTOM_FIELD_ACCESSORY_TYPE = "ACCESSORY_TYPE";//辅料类型 - /** - * 工单 - */ /** * 资源 @@ -26,34 +19,30 @@ public class CustomFieldConstant { */ public static final String WORK_CENTER_CUSTOM_FIELD_PROCESS_CONTROL= "PROCESS_CONTROL";//工控程序 - /** - * 物料清单 - */ - public static final String BOM_COMPONENT_CUSTOM_FIELD_STEP_ID = "STEP_ID";//步骤 - - - //工厂 - public static String SO_FACTORY = "FACTORY"; + public static final String SO_FACTORY = "FACTORY"; //工作指令 - public static String SO_WORK_ORDER = "WORK_ORDER"; + public static final String SO_WORK_ORDER = "WORK_ORDER"; //项目号 - public static String SO_ITEM_NUMER = "ITEM_NUMBER"; + public static final String SO_ITEM_NUMBER = "ITEM_NUMBER"; //工单类型 - public static String SO_SHOP_ORDER_TYPE = "SHOP_ORDER_TYPE"; + public static final String SO_SHOP_ORDER_TYPE = "SHOP_ORDER_TYPE"; //产品类型 - public static String SO_PRODUCT_CATEGORY = "PRODUCT_CATEGORY"; + public static final String SO_PRODUCT_CATEGORY = "PRODUCT_CATEGORY"; //工单备注 - public static String SO_COMMENTS = "COMMENTS"; + public static final String SO_COMMENTS = "COMMENTS"; //是否开始生产 - public static String SO_START_PRODUCT = "START_PRODUCT"; + public static final String SO_START_PRODUCT = "START_PRODUCT"; //************************************************************************************** - public static String ROUTER_OP_PROD_TIME = "PROD_TIME"; - public static String ROUTER_OP_OUT_SOURCE = "OUT_SOURCE"; + public static final String ROUTER_OP_PROD_TIME = "PROD_TIME"; + public static final String ROUTER_OP_OUT_SOURCE = "OUT_SOURCE"; //************************************************************************************** - public static String BOM_COM_STEP_ID = "STEP_ID"; + public static final String BOM_COM_STEP_ID = "STEP_ID"; + + + public static final String SFC_DATA_LOCATION = "LOCATION"; } 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 7f84e4c9..633abb1a 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 @@ -26,6 +26,8 @@ public enum HandleEnum { /**车间作业控制*/ SFC_BOM( "SFCBOMBO:", "SFCBOMBO:{0}" ), + SFC_DATA( "SFCDataBO:", "SFCDataBO:{0},{1}" ), + /**物料*/ ITEM( "ItemBO:", "ItemBO:{0},{1},{2}" ), diff --git a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java index cd52a844..ad562bb6 100644 --- a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java +++ b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java @@ -463,7 +463,7 @@ public class InterfaceServiceImpl implements InterfaceService { if (StringUtil.notBlank(shopOrderSyncRequest.getITEM_NUMBER())) { customFields = new CustomFields(); customFields.setHandle(shopOrderBo); - customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMER); + customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMBER); customFields.setValue(shopOrderSyncRequest.getITEM_NUMBER()); customFieldsList.add(customFields); } 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 deleted file mode 100644 index 5c14c8ad..00000000 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcDataServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -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/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java index 971159cf..bf567f09 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcDataController.java @@ -11,8 +11,8 @@ 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 com.foreverwin.mesnac.production.service.SfcDataService; +import com.foreverwin.mesnac.production.model.SfcData; import java.util.List; /** @@ -135,7 +135,8 @@ public class SfcDataController { } String site = CommonMethods.getSite(); - sfcDataService.saveSfcLocation(site, sfc, location); + String user = CommonMethods.getUser(); + sfcDataService.saveSfcLocation(site, user, sfc, location); } catch (Exception e) { return R.failed(e.getMessage()); } diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcDataMapper.java b/production/src/main/java/com/foreverwin/mesnac/production/mapper/SfcDataMapper.java similarity index 71% rename from meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcDataMapper.java rename to production/src/main/java/com/foreverwin/mesnac/production/mapper/SfcDataMapper.java index d486be66..556c728c 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcDataMapper.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/mapper/SfcDataMapper.java @@ -1,6 +1,6 @@ -package com.foreverwin.mesnac.meapi.mapper; +package com.foreverwin.mesnac.production.mapper; -import com.foreverwin.mesnac.meapi.model.SfcData; +import com.foreverwin.mesnac.production.model.SfcData; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springframework.stereotype.Repository; diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java b/production/src/main/java/com/foreverwin/mesnac/production/model/SfcData.java similarity index 96% rename from meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java rename to production/src/main/java/com/foreverwin/mesnac/production/model/SfcData.java index 7e65fd09..11e77b50 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/SfcData.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/model/SfcData.java @@ -1,4 +1,4 @@ -package com.foreverwin.mesnac.meapi.model; +package com.foreverwin.mesnac.production.model; import java.io.Serializable; @@ -6,8 +6,6 @@ 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; /** *

diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java b/production/src/main/java/com/foreverwin/mesnac/production/service/SfcDataService.java similarity index 77% rename from meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java rename to production/src/main/java/com/foreverwin/mesnac/production/service/SfcDataService.java index 05366856..1b0669d6 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcDataService.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/SfcDataService.java @@ -1,7 +1,7 @@ -package com.foreverwin.mesnac.meapi.service; +package com.foreverwin.mesnac.production.service; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.foreverwin.mesnac.meapi.model.SfcData; +import com.foreverwin.mesnac.production.model.SfcData; import com.baomidou.mybatisplus.extension.service.IService; import com.foreverwin.modular.core.util.FrontPage; @@ -33,5 +33,5 @@ public interface SfcDataService extends IService { * @param sfc * @param location */ - void saveSfcLocation(String site, String sfc, String location); + void saveSfcLocation(String site, String user, String sfc, String location); } \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcDataServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcDataServiceImpl.java new file mode 100644 index 00000000..d41a2dcc --- /dev/null +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcDataServiceImpl.java @@ -0,0 +1,114 @@ +package com.foreverwin.mesnac.production.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.foreverwin.mesnac.common.constant.CustomFieldConstant; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.meapi.model.Sfc; +import com.foreverwin.mesnac.meapi.model.WorkCenter; +import com.foreverwin.mesnac.meapi.service.SfcService; +import com.foreverwin.mesnac.meapi.service.WorkCenterService; +import com.foreverwin.modular.core.exception.BusinessException; +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.production.model.SfcData; +import com.foreverwin.mesnac.production.mapper.SfcDataMapper; +import com.foreverwin.mesnac.production.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.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务实现类 + *

+ * + * @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 user, String sfc, String location) { + String sfcBo = HandleEnum.SFC.getHandle(site, sfc); + Sfc sfcModel = sfcService.getById(sfcBo); + if (sfcModel == null) { + throw BusinessException.build("SFC【" +sfc+"】不存在"); + } + + //位置所录入的字符串“_”前的字符为车间代码 + if (!location.contains("_")) { + throw BusinessException.build("输入的位置【" +location+ "】格式不正确:必须包含符号【_】,并且符号之前必须是车间代码"); + } + String workCenterBo = HandleEnum.WORK_CENTER.getHandle(site, location.split("_")[0]); + WorkCenter workCenterModel = workCenterService.getById(workCenterBo); + if (workCenterModel == null || !"LEVEL4".equals(workCenterModel.getWcCategory())) { + throw BusinessException.build("位置【" +location+"】中符号【_】之前的不是车间代码"); + } + + LocalDateTime nowDate = LocalDateTime.now(); + //查询是否存在 + Map map = new HashMap<>(); + map.put(SfcData.SFC_BO, sfcBo); + map.put(SfcData.DATA_FIELD, CustomFieldConstant.SFC_DATA_LOCATION); + List sfcDataList = sfcDataMapper.selectByMap(map); + + if (sfcDataList == null || sfcDataList.size() <= 0) { + //记录位置到SFC + SfcData sfcData = new SfcData(); + sfcData.setHandle(HandleEnum.SFC_DATA.getHandle(site, sfcBo, CustomFieldConstant.SFC_DATA_LOCATION)); + sfcData.setSfcBo(sfcBo); + sfcData.setDataField(CustomFieldConstant.SFC_DATA_LOCATION); + sfcData.setDataAttr(location); + sfcData.setDateTime(nowDate); + sfcData.setUserBo(HandleEnum.USER.getHandle(site, user)); + sfcData.setCreatedDateTime(nowDate); + sfcDataMapper.insert(sfcData); + } else { + //更新位置到SFC + SfcData sfcData = sfcDataList.get(0); + sfcData.setDataAttr(location); + sfcData.setDateTime(nowDate); + sfcData.setModifiedDateTime(nowDate); + + Wrapper updateWrapper = new UpdateWrapper<>(); + SfcData tjSfcData = new SfcData(); + tjSfcData.setSfcBo(sfcBo); + tjSfcData.setDataField(CustomFieldConstant.SFC_DATA_LOCATION); + ((UpdateWrapper) updateWrapper).setEntity(tjSfcData); + sfcDataMapper.update(sfcData, updateWrapper); + } + } + + +} \ No newline at end of file diff --git a/meapi/src/main/resources/mapper/SfcDataMapper.xml b/production/src/main/resources/mapper/SfcDataMapper.xml similarity index 98% rename from meapi/src/main/resources/mapper/SfcDataMapper.xml rename to production/src/main/resources/mapper/SfcDataMapper.xml index 1d330bb8..5c4a147f 100644 --- a/meapi/src/main/resources/mapper/SfcDataMapper.xml +++ b/production/src/main/resources/mapper/SfcDataMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -208,7 +208,7 @@ - + INSERT INTO SFC_DATA HANDLE, @@ -232,7 +232,7 @@ - + INSERT INTO SFC_DATA