Browse Source

2024-05-24 质检分组增加删除校验,处理导入错误问题;质检类别增加删除校验,修正功能错误;修改该wms的工序查询接口;增加错误代码;修改质检项目的录入

master_hella_20240701
zhousq 1 year ago
parent
commit
2d3ce50368
  1. 8
      win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java
  2. 2
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/qmsitem/vo/QmsItemBaseVO.java
  3. 6
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/holiday/HolidayServiceImpl.java
  4. 7
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsitem/QmsItemServiceImpl.java
  5. 31
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsqualityclass/QmsQualityclassServiceImpl.java
  6. 138
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsqualitygroup/QmsQualitygroupServiceImpl.java
  7. 12
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/api/process/ProcessServiceApiImpl.java
  8. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessService.java
  9. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessServiceImpl.java

8
win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java

@ -86,12 +86,16 @@ public interface ErrorCodeConstants {
// ========== 质检 1-006-004-000 ==========
ErrorCode QUALITYCLASS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_004_001, "质量类别基本信息不存在");
ErrorCode QUALITYCLASS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_004_001, "质量类别导入数据为空!");
ErrorCode QUALITYCLASS_IS_NOTEXISTS = new ErrorCode(1_006_004_017, "质检类别数据不存在!");
ErrorCode QUALITYCLASS_IS_INUSE= new ErrorCode(1_006_004_018, "质检类别已经被使用!");
ErrorCode QUALITYCLASS_LIST_IS_EXIT = new ErrorCode(1_006_004_002, "已存在质量类别编码");
ErrorCode QUALITYCLASS_ERRORMODE = new ErrorCode(1_006_004_003, "未知的导入模式");
ErrorCode QUALITYCLASS_ERROR = new ErrorCode(1_006_004_004, "质检系统异常");
ErrorCode QUALITYGROUP_LIST_IS_EXIT = new ErrorCode(1_006_004_005, "已存在质检分组编码");
ErrorCode QUALITYGROUP_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_004_006, "质检分组基本信息不存在");
ErrorCode QUALITYGROUP_IS_NOT_EXIST = new ErrorCode(1_006_004_016, "质检分组信息不存在");
ErrorCode QUALITYGROUP_IS_INUSE = new ErrorCode(1_006_004_016, "质检分组信息已经被使用!");
ErrorCode QUALITYGROUP_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_004_006, "导入的质检分组信息为空!");
ErrorCode QUALITYITEM_LIST_IS_EXIT = new ErrorCode(1_006_004_007, "已存在质检项目编码");
ErrorCode QUALITYITEM_LIST_IS_EMPTY = new ErrorCode(1_006_004_008, "质检项目基本信息不存在");
ErrorCode QUALITYFORM_LIST_IS_EXIT = new ErrorCode(1_006_004_009, "已存在质检表单编码");

2
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/qmsitem/vo/QmsItemBaseVO.java

@ -45,7 +45,7 @@ public class QmsItemBaseVO {
@NotNull(message = "项目名称不能为空")
private String itemName;
@Schema(description = "类别编码", example = "1")
@Schema(description = "分组编码", example = "1")
private String itemType;
@Schema(description = "质检科目编码",requiredMode = Schema.RequiredMode.REQUIRED)

6
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/holiday/HolidayServiceImpl.java

@ -1,6 +1,8 @@
package com.win.module.mes.service.holiday;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.module.mes.controller.holiday.vo.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -86,7 +88,9 @@ public class HolidayServiceImpl implements HolidayService {
}
@Override
public List<HolidayDO> getHolidayListYear(String year){
return holidayMapper.selectList("holiday_year",year);
LambdaQueryWrapperX<HolidayDO> wrapper=new LambdaQueryWrapperX<HolidayDO>();
wrapper.eq(HolidayDO::getHolidayYear,year).eq(HolidayDO::getStatus,"1");
return holidayMapper.selectList(wrapper);
}
@Override
public List<HolidayExcelVO> importHolidayList(List<HolidayExcelVO> datas, Integer mode, boolean updatePart) {

7
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsitem/QmsItemServiceImpl.java

@ -7,6 +7,7 @@ import com.win.module.mes.dal.mysql.qmsqualityform.QmsQualityformMapper;
import com.win.module.mes.controller.qmsqualityform.vo.QmsQualityformCreateReqVO;
import com.win.module.mes.dal.dataobject.qmsqualityform.QmsQualityformDO;
import com.win.module.mes.enums.EnumUtils;
import com.win.module.system.api.user.AdminUserApi;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -26,7 +27,7 @@ import com.win.module.mes.dal.mysql.qmsitem.QmsItemMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.mes.enums.ErrorCodeConstants.*;
//import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
/**
* 质检项目定义 Service 实现类
@ -39,6 +40,8 @@ public class QmsItemServiceImpl implements QmsItemService {
@Resource
private QmsItemMapper itemMapper;
@Resource
private AdminUserApi userApi;
@Resource
private QmsQualityformMapper qualityformMapper;
@ -52,6 +55,8 @@ public class QmsItemServiceImpl implements QmsItemService {
// 插入
QmsItemDO item = QmsItemConvert.INSTANCE.convert(createReqVO);
// item.setCreator(userApi.getUser(getLoginUserId()).getUsername());
// item.setCreateTime()
itemMapper.insert(item);
// 返回
return item.getId();

31
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsqualityclass/QmsQualityclassServiceImpl.java

@ -3,11 +3,16 @@ package com.win.module.mes.service.qmsqualityclass;
import cn.hutool.core.collection.CollUtil;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.module.mes.controller.qmsqualityclass.vo.*;
import com.win.module.mes.convert.qmsqualityclass.QmsQualityclassConvert;
import com.win.module.mes.dal.dataobject.qmsitem.QmsItemDO;
import com.win.module.mes.dal.dataobject.qmsqualityclass.QmsQualityclassDO;
import com.win.module.mes.dal.dataobject.qmsqualitygroup.QmsQualitygroupDO;
import com.win.module.mes.dal.mysql.qmsitem.QmsItemMapper;
import com.win.module.mes.dal.mysql.qmsqualityclass.QmsQualityclassMapper;
import com.win.module.mes.enums.EnumUtils;
import com.win.module.system.util.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@ -34,7 +39,8 @@ public class QmsQualityclassServiceImpl implements QmsQualityclassService {
@Resource
private QmsQualityclassMapper qualityclassMapper;
@Resource
private QmsItemMapper itemMapper;
@Override
public Integer createQualityclass(QmsQualityclassCreateReqVO createReqVO) {
boolean falg = this.validateQmsQualityclassCreate(createReqVO);
@ -62,6 +68,9 @@ public class QmsQualityclassServiceImpl implements QmsQualityclassService {
public Integer updateQualityclass(QmsQualityclassUpdateReqVO updateReqVO) {
// 校验存在
validateQualityclassExists(updateReqVO.getId());
if(updateReqVO.getStatus().equals("2")){
validateQualityclassUsed(updateReqVO.getCode());
}
// 更新
QmsQualityclassDO updateObj = QmsQualityclassConvert.INSTANCE.convert(updateReqVO);
return qualityclassMapper.updateById(updateObj);
@ -70,17 +79,31 @@ public class QmsQualityclassServiceImpl implements QmsQualityclassService {
@Override
public Integer deleteQualityclass(Integer id) {
// 校验存在
validateQualityclassExists(id);
QmsQualityclassDO dao = qualityclassMapper.selectById(id);
if(StringUtils.isNotNull(dao)){
//增加是否被引用的校验
validateQualityclassUsed(dao.getCode());
// 删除
return qualityclassMapper.deleteById(id);
}else{
throw exception(QUALITYCLASS_IS_NOTEXISTS);
}
}
private void validateQualityclassExists(Integer id) {
if (qualityclassMapper.selectById(id) == null) {
//throw exception(QUALITYCLASS_NOT_EXISTS);
throw exception(QUALITYCLASS_IS_NOTEXISTS);
}
}
/**验证是否被使用*/
private void validateQualityclassUsed(String code) {
LambdaQueryWrapperX<QmsItemDO> queryWrapper = new LambdaQueryWrapperX<QmsItemDO>();
queryWrapper.eq(QmsItemDO::getQmsClass,code).eq(QmsItemDO::getDeleted,"0");
if(StringUtils.isNotEmpty(itemMapper.selectList(queryWrapper))){
throw exception(QUALITYCLASS_IS_INUSE);
}
}
@Override
public QmsQualityclassDO getQualityclass(Integer id) {
return qualityclassMapper.selectById(id);

138
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/qmsqualitygroup/QmsQualitygroupServiceImpl.java

@ -1,11 +1,20 @@
package com.win.module.mes.service.qmsqualitygroup;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.query.QueryWrapperX;
import com.win.module.mes.controller.qmsqualitygroup.vo.*;
import com.win.module.mes.dal.dataobject.qmsqualityclass.QmsQualityclassDO;
import com.win.module.mes.dal.mysql.qmsqualityclass.QmsQualityclassMapper;
import com.win.module.mes.enums.EnumUtils;
import com.win.module.mes.enums.ErrorCodeConstants;
import com.win.module.system.util.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
@ -35,7 +44,8 @@ public class QmsQualitygroupServiceImpl implements QmsQualitygroupService {
@Resource
private QmsQualitygroupMapper qualitygroupMapper;
@Resource
private QmsQualityclassMapper qualityclassMapper;
@Override
public Integer createQualitygroup(QmsQualitygroupCreateReqVO createReqVO) {
@ -64,6 +74,10 @@ public class QmsQualitygroupServiceImpl implements QmsQualitygroupService {
public Integer updateQualitygroup(QmsQualitygroupUpdateReqVO updateReqVO) {
// 校验存在
validateQualitygroupExists(updateReqVO.getId());
if(updateReqVO.getStatus() == "2"){
//增加是否被引用的校验
validateQualitygroupUsed(updateReqVO.getCode());
}
// 更新
QmsQualitygroupDO updateObj = QmsQualitygroupConvert.INSTANCE.convert(updateReqVO);
return qualitygroupMapper.updateById(updateObj);
@ -72,15 +86,35 @@ public class QmsQualitygroupServiceImpl implements QmsQualitygroupService {
@Override
public Integer deleteQualitygroup(Integer id) {
// 校验存在
validateQualitygroupExists(id);
QmsQualitygroupDO qmsQualitygroupDO = qualitygroupMapper.selectById(id);
if(StringUtils.isNotNull(qmsQualitygroupDO)){
//增加是否被引用的校验
validateQualitygroupUsed(qmsQualitygroupDO.getCode());
// 删除
return qualitygroupMapper.deleteById(id);
}else{
throw exception(QUALITYGROUP_IS_NOT_EXIST);
}
}
private void validateQualitygroupExists(Integer id) {
if (qualitygroupMapper.selectById(id) == null) {
//throw exception(QUALITYGROUP_NOT_EXISTS);
throw exception(QUALITYGROUP_IS_NOT_EXIST);
}
}
/**验证是否被使用*/
private void validateQualitygroupUsed(String code) {
LambdaQueryWrapperX<QmsQualityclassDO> queryWrapper = new LambdaQueryWrapperX<QmsQualityclassDO>();
queryWrapper.eq(QmsQualityclassDO::getGroupCode,code).eq(QmsQualityclassDO::getDeleted,"0");
if(StringUtils.isNotEmpty(qualityclassMapper.selectList(queryWrapper))){
throw exception(QUALITYGROUP_IS_INUSE);
}
}
//add by zhousq 2024-05-24 增加导入时的数据校验
public QmsQualitygroupDO getQualitygroupByCode(String code) {
return qualitygroupMapper.selectOne(QmsQualitygroupDO::getCode, code);
}
@Override
@ -112,77 +146,83 @@ public class QmsQualitygroupServiceImpl implements QmsQualitygroupService {
return qualitygroupMapper.selectSenior(conditions);
}
/**
* 导入时验证数据的必填内容
*/
private boolean validateRequried(QmsQualitygroupExcelVO data) {
if (StringUtils.isEmpty(data.getCode()) || StringUtils.isEmpty(data.getName())) {
return false;
} else {
return true;
}
}
///2024-05-24 导入优化
@Override
@Transactional
public List<QmsQualitygroupExcelVO> importQmsQualitygroupList(List<QmsQualitygroupExcelVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
//数据预处理
if (StringUtils.isEmpty(datas)) { //导入数据不能为空
throw exception(QUALITYGROUP_IMPORT_LIST_IS_EMPTY);
}
List<QmsQualitygroupExcelVO> errorList = new ArrayList<>();
List<QmsQualitygroupDO> insertList = new ArrayList<>();
List<QmsQualitygroupDO> updateList = new ArrayList<>();
datas.forEach(item -> {
boolean flag = true;
//数据校验逻辑
//校验通过
if(flag){
QmsQualitygroupCreateReqVO qmsQualitygroupCreateReqVO = new QmsQualitygroupCreateReqVO();
qmsQualitygroupCreateReqVO.setCode(item.getCode());
// 判断如果不存在,在进行插入
List<QmsQualitygroupDO> qmsQualitygroupDOS = qualitygroupMapper.selectListByCode(qmsQualitygroupCreateReqVO);
if (mode == 2) {//追加:只新增,不修改
if(qmsQualitygroupDOS.size()>0){
try {
if (!validateRequried(item)) { // 数据项验证通过
//编码不存在
QmsQualitygroupExcelErrorVO qmsQualitygroupExcelErrorVO = new QmsQualitygroupExcelErrorVO();
qmsQualitygroupExcelErrorVO.setImportStatus("失败");
qmsQualitygroupExcelErrorVO.setImportRemark(QUALITYGROUP_LIST_IS_EXIT.getMsg());
qmsQualitygroupExcelErrorVO.setImportStatus("错误");
qmsQualitygroupExcelErrorVO.setImportRemark("编码、名称等关键数据项为空!" + JSONObject.toJSONString(item));
errorList.add(qmsQualitygroupExcelErrorVO);
} else {
qualitygroupMapper.insert(QmsQualitygroupConvert.INSTANCE.convert(item));
}
}
else if (mode == 3) {//覆盖:只修改不新增
if(CollectionUtils.isEmpty(qmsQualitygroupDOS)){
//校验数据项是否存在
QmsQualitygroupDO udo = getQualitygroupByCode(item.getCode());
if (null == udo) { //不存在可以进行插入
if (mode == 1 || mode == 2) {
QmsQualitygroupDO insert = QmsQualitygroupConvert.INSTANCE.convert(item); // 数据去重
if (insertList.stream().filter(find -> find.getCode().equals(insert.getCode())).findFirst().isEmpty()) {
insertList.add(insert);
}else{
QmsQualitygroupExcelErrorVO qmsQualitygroupExcelErrorVO = new QmsQualitygroupExcelErrorVO();
qmsQualitygroupExcelErrorVO.setImportStatus("失败");
qmsQualitygroupExcelErrorVO.setImportRemark(QUALITYGROUP_IMPORT_LIST_IS_EMPTY.getMsg());
qmsQualitygroupExcelErrorVO.setImportStatus("错误");
qmsQualitygroupExcelErrorVO.setImportRemark("编码数据重复-编码" +item.getCode());
errorList.add(qmsQualitygroupExcelErrorVO);
}
}
} else {
QmsQualitygroupDO updateObj = QmsQualitygroupConvert.INSTANCE.convert(item);
updateObj.setId(qmsQualitygroupDOS.get(0).getId());
qualitygroupMapper.updateById(updateObj);
if (mode != 1) {
QmsQualitygroupDO convert = QmsQualitygroupConvert.INSTANCE.convert(item);
convert.setId(udo.getId());
updateList.add(convert);
}
}
else if (mode == 1){//更新:新增并修改
try{
if(CollectionUtils.isEmpty(qmsQualitygroupDOS)){
qualitygroupMapper.insert(QmsQualitygroupConvert.INSTANCE.convert(item));
}else if(qmsQualitygroupDOS.size()>0){
QmsQualitygroupDO updateObj = QmsQualitygroupConvert.INSTANCE.convert(item);
updateObj.setId(qmsQualitygroupDOS.get(0).getId());
qualitygroupMapper.updateById(updateObj);
}
} catch (Exception e) {
//
QmsQualitygroupExcelErrorVO qmsQualitygroupExcelErrorVO = new QmsQualitygroupExcelErrorVO();
qmsQualitygroupExcelErrorVO.setImportStatus("失败");
qmsQualitygroupExcelErrorVO.setImportRemark(QUALITYCLASS_ERROR.getMsg());
qmsQualitygroupExcelErrorVO.setImportStatus("错误");
qmsQualitygroupExcelErrorVO.setImportRemark("数据异常" + JSONObject.toJSONString(item));
errorList.add(qmsQualitygroupExcelErrorVO);
}
}else{
QmsQualitygroupExcelErrorVO qmsQualitygroupExcelErrorVO = new QmsQualitygroupExcelErrorVO();
qmsQualitygroupExcelErrorVO.setImportStatus("失败");
qmsQualitygroupExcelErrorVO.setImportRemark(QUALITYCLASS_ERRORMODE.getMsg());
errorList.add(qmsQualitygroupExcelErrorVO);
}
}
});
if (!CollectionUtils.isEmpty(errorList)) {
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
// 有数据错误,且不允许部分更新
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} else {
//无错误或
//insert 的时候需要进行去重
qualitygroupMapper.insertBatch(insertList);
if (StringUtils.isNotEmpty(updateList)) {
qualitygroupMapper.updateBatch(updateList);
}
}
return errorList;
}
}

12
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/api/process/ProcessServiceApiImpl.java

@ -1,9 +1,9 @@
package com.win.module.wms.api.process;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.module.wms.api.process.dto.ProcessApiDO;
import com.win.module.wms.dal.dataobject.process.ProcessDO;
import com.win.module.wms.dal.mysql.process.ProcessMapper;
import com.win.module.wms.service.process.ProcessService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -11,16 +11,16 @@ import java.util.ArrayList;
import java.util.List;
@Service
public class ProcessServiceApiImpl implements ProcessServiceApi {
// @Resource
// private ProcessMapper processMapper;
@Resource
private ProcessMapper processMapper;
private ProcessService processService;
@Override
public List<ProcessApiDO> getProcessList(ProcessApiDO processApiDO) {
ProcessDO processDO=new ProcessDO();
processDO.setAvailable(processApiDO.getAvailable());
QueryWrapper<ProcessDO> queryWrapper=new QueryWrapper<>();
queryWrapper.setEntity(processDO);
return converList(processMapper.selectList(queryWrapper)) ;
return converList(processService.getProcessListWrapper(processDO)) ;
}
private ProcessApiDO convert(ProcessDO processDO){
ProcessApiDO ret=new ProcessApiDO();

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessService.java

@ -1,5 +1,6 @@
package com.win.module.wms.service.process;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.process.vo.*;
@ -81,6 +82,7 @@ public interface ProcessService {
* @return 工序列表
*/
List<ProcessDO> getProcessList(ProcessExportReqVO exportReqVO);
List<ProcessDO> getProcessListWrapper(ProcessDO processDO);
List<ProcessImportErrorVO> importProcessList(List<ProcessImportExcelVO> processes, Integer mode, Boolean updatePart);
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessServiceImpl.java

@ -99,6 +99,12 @@ public class ProcessServiceImpl implements ProcessService {
public List<ProcessDO> getProcessList(ProcessExportReqVO exportReqVO) {
return processMapper.selectList(exportReqVO);
}
@Override
public List<ProcessDO> getProcessListWrapper(ProcessDO processDO){
QueryWrapper<ProcessDO> queryWrapper=new QueryWrapper<>();
queryWrapper.setEntity(processDO);
return processMapper.selectList(queryWrapper);
}
private String validateProcessImport( ProcessDO process){
StringBuilder message = new StringBuilder();

Loading…
Cancel
Save