Merge remote-tracking branch 'origin/dev' into dev

tags/yfai-mes-ext-v1.0
administrator 11 months ago
commit f0f812fbfa

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.model.wms.WmsProductModel;
import java.util.List;
@ -16,9 +17,9 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
void doProductReportExt(MesWorkOrder mesWorkOrder);
void deleteUnSortOrder(String userName,String organizeCode);
void deleteUnSortOrder(String userName, String organizeCode, List<String> partNoList);
List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode);
List<MesWorkOrderModel> sumMesWorkOrderQtyToSap(String organizeCode);
List<MesWorkOrder> queryMesWorkOrderProcessToSap(String organizeCode);

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import java.util.List;
@ -13,7 +14,7 @@ import java.util.List;
* @Modify:
**/
public interface IMesWorkOrderToSapService extends IBaseMesService<MesWorkOrderToSap> {
MesWorkOrderToSap insert(MesWorkOrder mesWorkOrder);
MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder);
void doMesWorkOrder(String organizeCode,List<MesWorkOrder> mesWorkOrderList);
void doMesWorkOrder(String organizeCode,List<MesWorkOrderModel> mesWorkOrderList);
}

@ -0,0 +1,50 @@
package cn.estsh.i3plus.ext.mes.api.base.file;
import cn.estsh.i3plus.ext.mes.api.base.IBaseMesService;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesFile;
import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel;
import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* @Description : EXCEL
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 15:02
* @Modify:
**/
public interface IMesModuleExcelService extends IBaseMesService<MesModuleExcel> {
/**
* EXCEL
*
* @param mesModuleExcel
* @param pager
* @return SOP
*/
@ApiOperation(value = "按条件分页查询模块EXCEL模板信息", notes = "按条件分页查询模块EXCEL模板信息")
ListPager<MesModuleExcelModel> queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager);
/**
* EXCEL
*
* @param file
* @param mesModuleExcel EXCEL
*/
@ApiOperation(value = "新增模块EXCEL模板信息", notes = "新增模块EXCEL模板信息")
void insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel);
/**
* EXCEL
*
* @param file
* @param mesModuleExcel EXCEL
*/
@ApiOperation(value = "更新模块EXCEL模板信息", notes = "更新模块EXCEL模板信息")
void updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel);
}

@ -0,0 +1,25 @@
package cn.estsh.i3plus.ext.mes.api.busi.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 11:30
* @Modify:
**/
public interface IMesYfReportService {
/**
* -
* @param queryReportModel
* @param pager
* @return
*/
ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager);
}

@ -4,10 +4,12 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.model.wms.WmsProductModel;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -18,12 +20,16 @@ import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Api(description = "工单主页面")
@RestController
@ -41,26 +47,33 @@ public class MesWorkOrderController extends BaseMesController<MesWorkOrder> {
public ResultBean importMesWorkOrderExcel(@RequestParam("file") MultipartFile file, @RequestParam("status") Integer type) {
try {
MesExcelTool excelTool = new MesExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesWorkOrder> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), MesWorkOrder.class);
List<MesWorkOrderModel> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), MesWorkOrderModel.class);
// 校验导入数据
validateImport(beanList);
if(CollectionUtils.isEmpty(beanList)){
MesException.throwMesBusiException("导入数据不存在");
}
String userName = AuthUtil.getSessionUser().getUserName();
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
//非排序工单导入前删除
if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == type) {
mesWorkOrderService.deleteUnSortOrder(userName,organizeCode);
List<String> partNoList = beanList.stream().map(MesWorkOrderModel::getPartNo).filter(partNo -> !StringUtils.isEmpty(partNo)).distinct().collect(Collectors.toList());
if(CollectionUtils.isEmpty(partNoList)){
MesException.throwMesBusiException("导入物料信息数据无效");
}
mesWorkOrderService.deleteUnSortOrder(userName,organizeCode,partNoList);
}
List<MesWorkOrder> mesWorkOrderList = new ArrayList<>();
// 导入数据初始化
for (MesWorkOrder bean : beanList) {
bean.setWorkOrderType(type);
ConvertBean.serviceModelInitialize(bean, userName);
bean.setOrganizeCode(organizeCode);
for (MesWorkOrderModel bean : beanList) {
MesWorkOrder mesWorkOrder = new MesWorkOrder();
BeanUtils.copyProperties(bean, mesWorkOrder);
mesWorkOrder.setWorkOrderType(type);
ConvertBean.serviceModelInitialize(mesWorkOrder, userName);
mesWorkOrder.setOrganizeCode(organizeCode);
mesWorkOrderList.add(mesWorkOrder);
}
baseService.insertBatch(beanList);
baseService.insertBatch(mesWorkOrderList);
// 导入后
afterImport(beanList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException e) {
return ResultBean.fail(e);
@ -112,7 +125,7 @@ public class MesWorkOrderController extends BaseMesController<MesWorkOrder> {
public ResultBean sendToSap(String organizeCode) {
try {
//查询汇总工单数量
List<MesWorkOrder> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
List<MesWorkOrderModel> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)){
mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList);
}

@ -0,0 +1,99 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base.file;
import cn.estsh.i3plus.ext.mes.api.base.file.IMesModuleExcelService;
import cn.estsh.i3plus.ext.mes.apiservice.controller.base.BaseMesController;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* @Description : EXCEL
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:54
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesModuleExcel")
@Api(tags = "模块EXCEL模板管理")
public class MesModuleExcelController extends BaseMesController<MesModuleExcel> {
@Autowired
private IMesModuleExcelService moduleExcelService;
@GetMapping(value = "/queryExt")
@ApiOperation(value = "按条件分页查询模块EXCEL模板信息")
public ResultBean queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) {
try {
mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setListPager(moduleExcelService.queryModuleExcelByPager(mesModuleExcel, pager));
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/insertExt")
@ApiOperation(value = "新增模块EXCEL模板信息")
public ResultBean insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) {
try {
if (file == null) {
MesException.throwMesBusiException("上传的文件为null后台未能接收到");
}
ValidatorBean.beginValid(mesModuleExcel)
.notNull(MesExtConstWords.MODULE_CODE, mesModuleExcel.getModuleCode())
.notNull(MesExtConstWords.MODULE_NAME, mesModuleExcel.getModuleName());
mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
ConvertBean.serviceModelUpdate(mesModuleExcel, AuthUtil.getSessionUser().getUserName());
moduleExcelService.insertModuleExcel(file, mesModuleExcel);
return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/updateExt")
@ApiOperation(value = "更新模块EXCEL模板信息")
public ResultBean updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) {
try {
ValidatorBean.beginValid(mesModuleExcel)
.notNull(MesExtConstWords.ID, mesModuleExcel.getId())
.notNull(MesExtConstWords.MODULE_CODE, mesModuleExcel.getModuleCode())
.notNull(MesExtConstWords.MODULE_NAME, mesModuleExcel.getModuleName());
mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
ConvertBean.serviceModelUpdate(mesModuleExcel, AuthUtil.getSessionUser().getUserName());
moduleExcelService.updateModuleExcel(file, mesModuleExcel);
return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,70 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.base.controller.MesBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 11:23
* @Modify:
**/
@Api("设备数据查询报表")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/device-data-query-report")
public class MesDeviceDataQueryReportController extends MesBaseController {
@Autowired
private IMesYfReportService mesYfReportService;
@ApiOperation(value = "查询设备数据", notes = "查询设备数据")
@GetMapping("/query")
public ResultBean queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel conditionModel, Pager pager){
try {
//查询条件核验
if (StringUtils.isEmpty(conditionModel.getCreateDateTimeStart()) || StringUtils.isEmpty(conditionModel.getCreateDateTimeEnd())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【查询时间区间】条件必填!")
.build();
}
if (StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getEquipmentCode())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("请至少指定【工位】与【设备编号】其中一个查询条件!")
.build();
}
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
ListPager<MesDeviceDataQueryReportResultModel> queryResultListPager = mesYfReportService.queryMesDeviceDataByPager(conditionModel, pager);
return ResultBean.success("查询设备数据成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,37 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel;
import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description : EXCEL
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:28
* @Modify:
**/
public interface IMesModuleExcelDao {
/**
* EXCEL
*
* @param mesModuleExcel EXCEL
* @return
*/
@ApiOperation(value = "查询模块EXCEL管理数量", notes = "查询模块EXCEL管理数量")
int queryModuleExcelCount(MesModuleExcel mesModuleExcel);
/**
* EXCEL
*
* @param mesModuleExcel
* @param pager
* @return EXCEL
*/
@ApiOperation(value = "查询模块EXCEL管理信息集合", notes = "查询模块EXCEL管理信息集合")
List<MesModuleExcelModel> queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager);
}

@ -1,6 +1,6 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import java.util.List;
@ -13,5 +13,5 @@ import java.util.List;
**/
public interface IMesWorkOrderDao {
List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode,List<Integer> statusList);
List<MesWorkOrderModel> sumMesWorkOrderQtyToSap(String organizeCode, List<Integer> statusList);
}

@ -0,0 +1,25 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 13:30
* @Modify:
**/
public interface IMesYfReportDao {
/**
* -
* @param queryReportModel
* @param pager
* @return
*/
ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager);
}

@ -0,0 +1,91 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesModuleExcelDao;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel;
import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;
/**
* @Description : EXCEL
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:30
* @Modify:
**/
@Service
public class MesModuleExcelDaoImpl implements IMesModuleExcelDao {
@Autowired
private EntityManager entityManager;
@Override
public int queryModuleExcelCount(MesModuleExcel mesModuleExcel) {
StringBuffer hql = new StringBuffer();
hql.append(" select count(distinct mem.id) ");
packHqlForQueryModuleExcelManage(hql, mesModuleExcel);
Query query = entityManager.createQuery(hql.toString(), Long.class);
packParameterForQueryModuleExcelManage(query, mesModuleExcel);
return ((Long) query.getSingleResult()).intValue();
}
@Override
public List<MesModuleExcelModel> queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) {
StringBuffer hql = new StringBuffer();
hql.append(" select new " + MesModuleExcelModel.class.getName() + "(mem.id, mem.moduleCode, mem.moduleName, mem.fileId, f.fileUrl, f.fileOriginName, " +
" mem.organizeCode, mem.createUser, mem.createDatetime, mem.modifyUser, mem.modifyDatetime ) ");
packHqlForQueryModuleExcelManage(hql, mesModuleExcel);
hql.append(" order by mem.modifyDatetime desc ");
Query query = entityManager.createQuery(hql.toString(), MesModuleExcelModel.class);
packParameterForQueryModuleExcelManage(query, mesModuleExcel);
query.setMaxResults(pager.getPageSize());
if (pager.getCurrentPage() == 0) {
pager.setCurrentPage(1);
}
query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize());
return query.getResultList();
}
private void packHqlForQueryModuleExcelManage(StringBuffer hql, MesModuleExcel mesModuleExcel) {
hql.append(" from MesModuleExcel as mem ");
hql.append(" left join MesFile as f on (mem.fileId = f.id and f.organizeCode = :organizeCode and f.isValid = :isValid1 and f.isDeleted = :isDeleted) ");
hql.append(" where mem.organizeCode = :organizeCode ");
hql.append(" and mem.isValid = :isValid ");
hql.append(" and mem.isDeleted = :isDeleted ");
if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) {
hql.append(" and mem.moduleCode like :moduleCode ");
}
if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) {
hql.append(" and mem.moduleName like :moduleName ");
}
}
private void packParameterForQueryModuleExcelManage(Query query, MesModuleExcel mesModuleExcel) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, mesModuleExcel.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_VALID, mesModuleExcel.getIsValid());
query.setParameter(MesExtConstWords.IS_VALID1, CommonEnumUtil.IS_VAILD.VAILD.getValue());
query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) {
query.setParameter(MesExtConstWords.MODULE_CODE, "%" + mesModuleExcel.getModuleCode() + "%");
}
if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) {
query.setParameter(MesExtConstWords.MODULE_NAME, "%" + mesModuleExcel.getModuleName() + "%");
}
}
}

@ -2,7 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -26,15 +26,15 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao {
private EntityManager entityManager;
@Override
public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode, List<Integer> statusList) {
StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " +
public List<MesWorkOrderModel> sumMesWorkOrderQtyToSap(String organizeCode, List<Integer> statusList) {
StringBuffer hql = new StringBuffer("select new " + MesWorkOrderModel.class.getName() + "(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " +
" from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " +
"and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion");
Query query = entityManager.createQuery(hql.toString(), MesWorkOrder.class);
query.setParameter("organizeCode",organizeCode);
query.setParameter("isValid",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted",CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("statusList",statusList);
Query query = entityManager.createQuery(hql.toString(), MesWorkOrderModel.class);
query.setParameter("organizeCode", organizeCode);
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("statusList", statusList);
return query.getResultList();
}
}

@ -0,0 +1,109 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 13:30
* @Modify:
**/
@Service
public class MesYfReportDaoImpl implements IMesYfReportDao {
@Autowired
private EntityManager entityManager;
@Override
public ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) {
StringBuilder dataQuerySql = new StringBuilder();
StringBuilder countQuerySql = new StringBuilder();
StringBuilder commonQuerySql = new StringBuilder();
dataQuerySql.append("select new ")
.append(MesDeviceDataQueryReportResultModel.class.getName())
.append("(organizeCode, workCenterCode, workCellCode, workOrderNo, serialNumber, ")
.append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser) ");
countQuerySql.append("select count(1) ");
commonQuerySql.append("from MesWorkCellScanMonitorLog " +
"where isValid = :isValid and isDeleted = :isDeleted and organizeCode = :organizeCode " +
"and createDatetime >= :createDateTimeStart and createDatetime <= :createDateTimeEnd ");
//非空查询条件拼接语句
if (!StringUtils.isEmpty(queryReportModel.getWorkCenterCode())) {
commonQuerySql.append("and workCenterCode = :workCenterCode ");
}
if (!StringUtils.isEmpty(queryReportModel.getWorkCellCode())) {
commonQuerySql.append("and workCellCode = :workCellCode ");
}
if (!StringUtils.isEmpty(queryReportModel.getWorkOrderNo())) {
commonQuerySql.append("and workOrderNo = :workOrderNo ");
}
if (!StringUtils.isEmpty(queryReportModel.getSerialNumber())) {
commonQuerySql.append("and serialNumber = :serialNumber ");
}
if (!StringUtils.isEmpty(queryReportModel.getEquipmentCode())) {
commonQuerySql.append("and equipmentCode = :equipmentCode ");
}
if (!StringUtils.isEmpty(queryReportModel.getLogType())) {
commonQuerySql.append("and logType = :logType ");
}
Query dataQuery = entityManager.createQuery(dataQuerySql.append(commonQuerySql).toString(), MesDeviceDataQueryReportResultModel.class);
dataQuery.setParameter("isValid", CommonEnumUtil.IS_VAILD.VAILD.getValue());
dataQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
dataQuery.setParameter("organizeCode", queryReportModel.getOrganizeCode());
dataQuery.setParameter("createDateTimeStart", queryReportModel.getCreateDateTimeStart());
dataQuery.setParameter("createDateTimeEnd", queryReportModel.getCreateDateTimeEnd());
Query countQuery = entityManager.createQuery(countQuerySql.append(commonQuerySql).toString());
countQuery.setParameter("isValid", CommonEnumUtil.IS_VAILD.VAILD.getValue());
countQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
countQuery.setParameter("organizeCode", queryReportModel.getOrganizeCode());
countQuery.setParameter("createDateTimeStart", queryReportModel.getCreateDateTimeStart());
countQuery.setParameter("createDateTimeEnd", queryReportModel.getCreateDateTimeEnd());
if (!StringUtils.isEmpty(queryReportModel.getWorkCenterCode())) {
dataQuery.setParameter("workCenterCode", queryReportModel.getWorkCenterCode());
countQuery.setParameter("workCenterCode", queryReportModel.getWorkCenterCode());
}
if (!StringUtils.isEmpty(queryReportModel.getWorkCellCode())) {
dataQuery.setParameter("workCellCode", queryReportModel.getWorkCellCode());
countQuery.setParameter("workCellCode", queryReportModel.getWorkCellCode());
}
if (!StringUtils.isEmpty(queryReportModel.getWorkOrderNo())) {
dataQuery.setParameter("workOrderNo", queryReportModel.getWorkOrderNo());
countQuery.setParameter("workOrderNo", queryReportModel.getWorkOrderNo());
}
if (!StringUtils.isEmpty(queryReportModel.getSerialNumber())) {
dataQuery.setParameter("serialNumber", queryReportModel.getSerialNumber());
countQuery.setParameter("serialNumber", queryReportModel.getSerialNumber());
}
if (!StringUtils.isEmpty(queryReportModel.getEquipmentCode())) {
dataQuery.setParameter("equipmentCode", queryReportModel.getEquipmentCode());
countQuery.setParameter("equipmentCode", queryReportModel.getEquipmentCode());
}
if (!StringUtils.isEmpty(queryReportModel.getLogType())) {
dataQuery.setParameter("logType", queryReportModel.getLogType());
countQuery.setParameter("logType", queryReportModel.getLogType());
}
//本次查询满足条件的总数
int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult()));
pager = PagerHelper.getPager(pager, count);
//查询本页数据
dataQuery.setMaxResults(pager.getPageSize());
dataQuery.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize());
List<MesDeviceDataQueryReportResultModel> resultList = dataQuery.getResultList();
return new ListPager<>(resultList, pager);
}
}

@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Description :
@ -208,6 +209,14 @@ public class WmsSAPDbTranslator extends WmsSAPDbSyncBase {
return defaultValue;
}
//表达式包含 :NotTrans 或 NotTrans
boolean hasNotTrans = false;
if (defaultValue.toString().endsWith(WmsSAPDbExpression.NOT_TRANS)) {
defaultValue = defaultValue.toString().replace(":" + WmsSAPDbExpression.NOT_TRANS, "");
defaultValue = defaultValue.toString().replace(WmsSAPDbExpression.NOT_TRANS, "");
hasNotTrans = true;
}
Object objResult;
try {
@ -221,6 +230,10 @@ public class WmsSAPDbTranslator extends WmsSAPDbSyncBase {
+ JSONObject.toJSONString(rowMap));
}
//添加NotTrans
if (!Objects.isNull(objResult) && hasNotTrans) {
objResult = objResult + ":" + WmsSAPDbExpression.NOT_TRANS;
}
// 计算后返回
return objResult;
}

@ -3,7 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
@ -61,15 +61,15 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob {
LOGGER.info("汇总工单给SAP开始 -----start");
for (String organizeCode : organizeCodeList) {
List<MesWorkOrder> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)){
mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList);
List<MesWorkOrderModel> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)) {
mesWorkOrderToSapService.doMesWorkOrder(organizeCode, mesWorkOrderList);
}
}
LOGGER.info("汇总工单给SAP开始结束 ----- end");
} catch (Exception e) {
LOGGER.error("汇总工单给SAP任务结束e:{}",e.toString());
LOGGER.error("汇总工单给SAP任务结束e:{}", e.toString());
}
}

@ -24,6 +24,7 @@ public class MesPackingDefineServiceImpl extends BaseMesService<MesPackingDefine
protected void setPackQueryBean(MesPackingDefine bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPackCode(), "packCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPackName(), "packName", packBean);
DdlPreparedPack.getNumEqualPack(bean.getCheckLotnumberFlag(), "checkLotnumberFlag", packBean);
}
@Override

@ -18,23 +18,43 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
protected void setPackQueryBean(MesWorkCellExtendCfg bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCodeBak(), "workCenterCodeBak", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCodeBak(), "workCellCodeBak", packBean);
}
protected void onInsertBean(MesWorkCellExtendCfg item) {
// 数据校验
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空");
ValidatorBean.checkNotNull(item.getWorkCenterCodeBak(), "子产线不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空");
ValidatorBean.checkNotZero(item.getSeq(), "顺序不能为0");
if(item.getExtendType().equalsIgnoreCase("10")){
if(!item.getWorkCenterCode().equalsIgnoreCase(item.getWorkCenterCodeBak())){
MesException.throwMesBusiException("主子关系时产线【%s】与子产线【%s】需一致请检查数据",
item.getWorkCenterCode(),item.getWorkCenterCodeBak());
}
}
//1.子产线 子工位表里面唯一(无论类型)
DdlPackBean mainPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", mainPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", mainPackBean);
if (baseRDao.isExitByHql(mainPackBean)) {
MesException.throwMesBusiException("工作中心【%s】主工位【%s】数据已经存在请检查数据",
item.getWorkCenterCode(),item.getWorkCellCode(),item.getWorkCellCodeBak());
}
//2.主工位和子工位各自唯一
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCodeBak(), "workCenterCodeBak", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCodeBak(), "workCellCodeBak", partPackBean);
if (baseRDao.isExitByHql(partPackBean)) {
MesException.throwMesBusiException("工作中心【%s】主工位【%s】子工位【%s】数据界已经存在请检查数据",
MesException.throwMesBusiException("工作中心【%s】子工位【%s】数据界已经存在请检查数据",
item.getWorkCenterCode(),item.getWorkCellCode(),item.getWorkCellCodeBak());
}
}
protected void onUpdateBean(MesWorkCellExtendCfg item) {

@ -17,6 +17,7 @@ public class MesWorkCellService extends BaseMesService<MesWorkCell> implements
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCellName(), "workCellName", packBean);
DdlPreparedPack.getNumEqualPack(bean.getGrade(), "grade", packBean);
}
}

@ -7,7 +7,6 @@ import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
@ -16,19 +15,20 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.DateUtilExt;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.model.wms.WmsProductModel;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
@ -85,7 +85,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//获取相同类型 相同标识 生产序号最大值的
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", orderPackBean);
DdlPreparedPack.getNumEqualPack(bean.getOrderFlag(), "orderFlag", orderPackBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), "orderFlag", orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean);
MesWorkOrder result = baseRDao.getByProperty(orderPackBean);
@ -107,6 +107,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
copyMesWorkOrder.setProduceSeq((long) (produceSeq + 1));
copyMesWorkOrder.setQty(1D);
copyMesWorkOrder.setWorkOrderNo(resultList.get(0));
copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
@ -136,7 +137,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
bean.setWorkOrderNo(resultList.get(0));
bean.setQty(bean.getQty());
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
@ -232,7 +233,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (result.getWorkOrderStatus() >= MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) {
if (!Objects.equals(bean.getPartNo(), result.getPartNo())) {
MesException.throwMesBusiException(String.format("工单状态为【%s】不允许修改物料",
MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus())));
MesExtEnumUtil.ORDER_STATUS.valueOfDescription(result.getWorkOrderStatus())));
}
}
@ -249,22 +250,17 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//更新状态
if (bean.getWorkOrderStatus() > 0) {
if (MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()) {
if (MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() != result.getWorkOrderStatus()) {
MesException.throwMesBusiException(String.format("工单状态为【%s】不为创建不允许发布",
MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus())));
}
}
result.setWorkOrderStatus(bean.getWorkOrderStatus());
}
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
result.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(result, AuthUtil.getSessionUser().getUserName());
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
BeanUtils.copyProperties(result, workOrderLog, "id");
workOrderLogService.insert(workOrderLog);
baseRDao.update(result);
return bean;
return result;
}
@ -286,6 +282,25 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean);
packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq asc,workOrderNo asc ");
}
@Override
protected void setBeanModel(List<MesWorkOrder> mesWorkOrderList) {
//查询工作中心名称
if(CollectionUtils.isEmpty(mesWorkOrderList)){
return;
}
MesWorkOrder mesWorkOrder = mesWorkOrderList.iterator().next();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getInPackList(mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).filter(workCenterCode -> !StringUtils.isEmpty(workCenterCode)).distinct().collect(Collectors.toList()), "workCenterCode", ddlPackBean);
List<MesWorkCenter> mesWorkCenterList = mesWorkCenterRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(mesWorkCenterList)) {
return;
}
Map<String, String> mesWorkCenterMap = mesWorkCenterList.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName));
mesWorkOrderList.forEach(t->{
t.setWorkCenterName(mesWorkCenterMap.get(t.getWorkCenterCode()));
});
}
@Override
protected void onInsertBean(MesWorkOrder item) {
@ -293,6 +308,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// 数据校验
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
@ -308,19 +324,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
//若工单类型为排序 标识为 N E P S
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue()) {
throw ImppExceptionBuilder.newInstance()
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识",
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getDescription()
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getDescription(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getDescription(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getDescription()))
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.build();
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag())&&
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag())&&
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue().equals(item.getOrderFlag())&&
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识",
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
}
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
packPlanTime(item);
@ -353,15 +365,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()) {
throw ImppExceptionBuilder.newInstance()
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail(String.format("工单标识为【%s】请选择 【%s】、【%s】 标识",
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getDescription(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getDescription()))
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.build();
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag())&&
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag())&&
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】 标识",
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
}
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
packPlanTime(item);
@ -730,8 +740,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
@Override
public void deleteUnSortOrder(String userName, String organizeCode) {
public void deleteUnSortOrder(String userName, String organizeCode, List<String> partNoList) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(partNoList, "partNo", ddlPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue(), "workOrderType", ddlPackBean);
DdlPreparedPack.getStringSmallerNotEqualPack(TimeTool.getToday(), "planStartTime", ddlPackBean);
DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), "workOrderStatus", ddlPackBean);
@ -930,7 +941,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
@Override
public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode) {
public List<MesWorkOrderModel> sumMesWorkOrderQtyToSap(String organizeCode) {
List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
// statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());

@ -5,8 +5,8 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -19,7 +19,7 @@ import java.util.Objects;
public class MesWorkOrderToSapServiceImpl extends BaseMesService<MesWorkOrderToSap> implements IMesWorkOrderToSapService {
@Override
public MesWorkOrderToSap insert(MesWorkOrder mesWorkOrder) {
public MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder) {
MesWorkOrderToSap mesWorkOrderToSap = new MesWorkOrderToSap(mesWorkOrder.getOrganizeCode(),
mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion(),
mesWorkOrder.getQty(), mesWorkOrder.getPlanStartTime());
@ -28,10 +28,10 @@ public class MesWorkOrderToSapServiceImpl extends BaseMesService<MesWorkOrderToS
}
@Override
public void doMesWorkOrder(String organizeCode,List<MesWorkOrder> mesWorkOrderList) {
public void doMesWorkOrder(String organizeCode,List<MesWorkOrderModel> mesWorkOrderList) {
Pager pager = new Pager(1,1);
DdlPackBean ddlPackBean = null;
for (MesWorkOrder mesWorkOrder : mesWorkOrderList) {
for (MesWorkOrderModel mesWorkOrder : mesWorkOrderList) {
mesWorkOrder.setOrganizeCode(organizeCode);
mesWorkOrder.setModifyUser("job");
//计划开始时间+物料查询发送Sap的数据

@ -0,0 +1,107 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file;
import cn.estsh.i3plus.ext.mes.api.base.file.IMesModuleExcelService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesModuleExcelDao;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.ext.mes.apiservice.utils.HuaWeiOBSUtil;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.sqlpack.MesExtHqlPack;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesFile;
import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel;
import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel;
import cn.estsh.i3plus.pojo.mes.repository.MesFileRepository;
import com.obs.services.model.PutObjectResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
* @Description : EXCEL
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:52
* @Modify:
**/
@Slf4j
@Service
public class MesModuleExcelServiceImpl extends BaseMesService<MesModuleExcel> implements IMesModuleExcelService {
@Autowired
private IMesModuleExcelDao mesModuleExcelDao;
@Autowired
private MesFileRepository mesFileRDao;
@Override
public ListPager<MesModuleExcelModel> queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) {
pager = PagerHelper.getPager(pager, mesModuleExcelDao.queryModuleExcelCount(mesModuleExcel));
List<MesModuleExcelModel> moduleExcelManageModelList = mesModuleExcelDao.queryModuleExcelByPager(mesModuleExcel, pager);
return new ListPager(moduleExcelManageModelList, pager);
}
@Override
public void insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) {
DdlPackBean packBean = MesExtHqlPack.getAllBaseData(mesModuleExcel.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesModuleExcel.getModuleCode(), MesExtConstWords.MODULE_CODE, packBean);
MesModuleExcel moduleExcelManageDb = baseRDao.getByProperty(packBean);
if (null != moduleExcelManageDb) {
MesException.throwMesBusiException("模块代码【%s】记录已存在", mesModuleExcel.getModuleCode());
}
MesFile f = getMesFile(file, mesModuleExcel);
mesModuleExcel.setFileId(mesFileRDao.insert(f).getId());
ConvertBean.serviceModelInitialize(mesModuleExcel, mesModuleExcel.getCreateUser());
baseRDao.insert(mesModuleExcel);
}
@Override
public void updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) {
MesModuleExcel moduleExcelManageDb = baseRDao.getById(mesModuleExcel.getId());
if (moduleExcelManageDb == null) {
MesException.throwMesBusiException("ID【%s】记录不存在", mesModuleExcel.getId());
}
//改变文件时清除fileUrl
if (StringUtils.isEmpty(mesModuleExcel.getFileUrl())) {
MesFile mesFile = getMesFile(file, mesModuleExcel);
moduleExcelManageDb.setFileId(mesFileRDao.insert(mesFile).getId());
}
moduleExcelManageDb.setModuleName(mesModuleExcel.getModuleName());
ConvertBean.serviceModelUpdate(moduleExcelManageDb, mesModuleExcel.getModifyUser());
baseRDao.update(moduleExcelManageDb);
}
private MesFile getMesFile(MultipartFile file, MesModuleExcel mesModuleExcel) {
String fileName = file.getOriginalFilename();
PutObjectResult putObjectResult = null;
try {
putObjectResult = HuaWeiOBSUtil.putObjectByMultipartFile(MesCommonConstant.OBS_BUCKET_NAME, fileName, file);
} catch (IOException e) {
MesException.throwMesBusiException("文件上传失败");
}
MesFile mesFile = new MesFile();
mesFile.setOrganizeCode(mesModuleExcel.getOrganizeCode());
mesFile.setFileName(fileName);
mesFile.setFileUrl(putObjectResult.getObjectUrl());
mesFile.setFileSize(String.valueOf(file.getSize()));
mesFile.setGroupName(putObjectResult.getBucketName());
mesFile.setFileType(fileName != null && fileName.contains(".") ? fileName.substring(fileName.indexOf(".") + 1) : "");
mesFile.setFileOriginName(fileName);
ConvertBean.serviceModelInitialize(mesFile, mesModuleExcel.getCreateUser());
return mesFile;
}
}

@ -0,0 +1,30 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 11:31
* @Modify:
**/
@Service
public class MesYfReportServiceImpl implements IMesYfReportService {
@Autowired
private IMesYfReportDao mesYfReportDao;
@Override
public ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) {
return mesYfReportDao.queryMesDeviceDataByPager(queryReportModel, pager);
}
}

@ -0,0 +1,48 @@
package cn.estsh.i3plus.ext.mes.pojo.model.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 11:38
* @Modify:
**/
@Data
@ApiModel("设备数据查询报表-查询条件封装")
public class MesDeviceDataQueryReportConditionModel {
@ApiParam(value = "组织代码")
private String organizeCode;
/**
*
*/
@ApiParam(value = "工作中心(产线)")
private String workCenterCode;
@ApiParam(value = "工作单元代码(工位)")
private String workCellCode;
@ApiParam(value = "生产工单号(工单)")
private String workOrderNo;
@ApiParam(value = "过程条码(主条码)")
private String serialNumber;
@ApiParam(value = "设备代码(设备编号)")
private String equipmentCode;
@ApiParam(value = "日志类型")
private Integer logType;
@ApiParam(value = "创建日期查询用,查询起始日期")
private String createDateTimeStart;
@ApiParam(value = "创建日期查询用,查询结束日期")
private String createDateTimeEnd;
}

@ -0,0 +1,71 @@
package cn.estsh.i3plus.ext.mes.pojo.model.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
/**
* @Description : -
* @Reference :
* @Author : logic
* @CreateDate : 2024/6/15 13:23
* @Modify:
**/
@Data
@ApiModel("设备数据查询报表-查询结果封装")
public class MesDeviceDataQueryReportResultModel {
@ApiParam(value = "ERP工厂号组织代码")
private String organizeCode;
@ApiParam(value = "工作中心(产线)")
private String workCenterCode;
@ApiParam(value = "工作单元代码(工位)")
private String workCellCode;
@ApiParam(value = "生产工单号(工单)")
private String workOrderNo;
@ApiParam(value = "过程条码(主条码)")
private String serialNumber;
@ApiParam(value = "日志类型")
private Integer logType;
@ApiParam(value = "日志内容")
private String message;
@ApiParam(value = "错误类型")
private String errorType;
@ApiParam(value = "设备代码(设备编号)")
private String equipmentCode;
@ApiParam(value = "设备名称")
private String equipmentName;
@ApiParam(value = "创建时间")
private String createDatetime;
@ApiParam(value = "创建人")
private String createUser;
public MesDeviceDataQueryReportResultModel(String organizeCode, String workCenterCode, String workCellCode,
String workOrderNo, String serialNumber, Integer logType, String message,
String errorType, String equipmentCode, String equipmentName,
String createDatetime, String createUser) {
this.organizeCode = organizeCode;
this.workCenterCode = workCenterCode;
this.workCellCode = workCellCode;
this.workOrderNo = workOrderNo;
this.serialNumber = serialNumber;
this.logType = logType;
this.message = message;
this.errorType = errorType;
this.equipmentCode = equipmentCode;
this.equipmentName = equipmentName;
this.createDatetime = createDatetime;
this.createUser = createUser;
}
}
Loading…
Cancel
Save