1、工单汇总回传SAP异常问题修复

2、导入模板功能开发
tags/yfai-mes-ext-v1.0
jun 11 months ago
parent bedb0c264c
commit 4bd046e407

@ -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;
@ -18,7 +19,7 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
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,33 @@
package cn.estsh.i3plus.ext.mes.api.base.file;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:19
* @Modify:
**/
public interface IMesFileService {
/**
*
* @param file
* @return
*/
@ApiOperation(value = "上传文件", notes = "上传文件")
SysFile uploadFile(MultipartFile file);
/**
*
* @param resp
* @param fileUrl url
* @return
*/
void getFileByUrl(HttpServletResponse resp, String fileUrl);
}

@ -0,0 +1,69 @@
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);
/**
* EXCEL
*
* @param resp
* @param fileUrl URL
*/
@ApiOperation(value = "下载模块EXCEL模板", notes = "下载模块EXCEL模板")
void doDownLoadModuleExcel(HttpServletResponse resp, String fileUrl);
/**
*
*
* @param organizeCode
* @param templateCode
* @return
*/
@ApiOperation(value = "获取文件", notes = "获取文件")
MesFile getTemplateFile(String organizeCode, String templateCode);
}

@ -125,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,118 @@
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.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.util.StringUtils;
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;
import javax.servlet.http.HttpServletResponse;
/**
* @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());
mesModuleExcel.setCreateUser(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());
mesModuleExcel.setModifyUser(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);
}
}
@PostMapping(value = "/down-load")
@ApiOperation(value = "下载模块EXCEL模板")
public ResultBean doDownLoadModuleExcelManage(HttpServletResponse resp, String fileUrl) {
try {
if (StringUtils.isEmpty(fileUrl)) {
MesException.throwMesBusiException("请选择需要操作的资源。");
}
moduleExcelService.doDownLoadModuleExcel(resp, fileUrl);
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,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,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,11 +26,11 @@ 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 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());

@ -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,7 +61,7 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob {
LOGGER.info("汇总工单给SAP开始 -----start");
for (String organizeCode : organizeCodeList) {
List<MesWorkOrder> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
List<MesWorkOrderModel> mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)) {
mesWorkOrderToSapService.doMesWorkOrder(organizeCode, mesWorkOrderList);
}

@ -15,6 +15,7 @@ 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;
@ -938,7 +939,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,136 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file;
import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.fileservice.ImppFileService;
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 javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/17 14:21
* @Modify:
**/
@Slf4j
@Service
public class MesFileServiceImpl implements IMesFileService {
@Autowired
private ImppFileService imppFileService;
@Override
public SysFile uploadFile(MultipartFile file) {
SysFile sysFile;
try {
log.info("文件大小{}", file.getBytes().length);
sysFile = save2FastDfs(file);
log.info("after save2FastDfs {}", sysFile);
} catch (IOException e) {
log.error("FastDFS上传文件出错{}", e.getMessage() + "\r" + e.getStackTrace());
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode())
.setErrorDetail("上传文件至文件服务器出错了。信息为:%s", e.getMessage())
.build();
}
if (null == sysFile) {
log.error("FastDFS上传文件出错");
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode())
.setErrorDetail("FastDFS上传文件出错")
.build();
}
if (StringUtils.isEmpty(sysFile.getFileTypeId())) {
log.error("FastDFS上传文件出错{}", "未在字典中定义该文件类型无法上传成功请先添加file_type字典");
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode())
.setErrorDetail("未在字典中定义该文件类型无法上传成功请先添加file_type字典")
.build();
}
return sysFile;
}
/**
* FastDfs
*
* @param multipartFile
* @return URL
* @throws IOException
*/
private SysFile save2FastDfs(MultipartFile multipartFile) throws IOException {
SysFile sysFile = imppFileService.upload(multipartFile, CommonEnumUtil.SOFT_TYPE.MES.getValue());
return sysFile;
}
@Override
public void getFileByUrl(HttpServletResponse resp, String fileUrl) {
InputStream inputStream = getInputStream(fileUrl);
writeFile(resp, inputStream);
}
private static InputStream getInputStream(String urlPath) {
InputStream inputStream = null;
HttpURLConnection httpURLConnection;
try {
URL url = new URL(urlPath);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setConnectTimeout(3000);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("GET");
int responseCode = httpURLConnection.getResponseCode();
System.out.println("responseCode is:" + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
inputStream = httpURLConnection.getInputStream();
} else {
inputStream = httpURLConnection.getErrorStream();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
private static void writeFile(HttpServletResponse resp, InputStream inputStream) {
OutputStream out = null;
try {
out = resp.getOutputStream();
int len;
byte[] b = new byte[1024];
while ((len = inputStream.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

@ -0,0 +1,135 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file;
import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService;
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.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.enumutil.CommonEnumUtil;
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 cn.estsh.i3plus.pojo.platform.bean.SysFile;
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 javax.servlet.http.HttpServletResponse;
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 IMesFileService mesFileService;
@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());
}
SysFile sysFile = mesFileService.uploadFile(file);
if (sysFile.getFileTypeId() == null) {
log.error("FastDFS上传文件出错{}", "未在字典中定义该文件类型无法上传成功请先添加file_type字典");
MesException.throwMesBusiException("未在字典中定义该文件类型无法上传成功请先添加file_type字典");
}
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());
}
if (file == null && StringUtils.isEmpty(mesModuleExcel.getFileId())) {
MesException.throwMesBusiException("上传的文件为null后台未能接收到");
}
//改变文件时清除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);
}
@Override
public void doDownLoadModuleExcel(HttpServletResponse resp, String fileUrl) {
mesFileService.getFileByUrl(resp, fileUrl);
}
@Override
public MesFile getTemplateFile(String organizeCode, String templateCode) {
MesModuleExcel moduleExcelManageDb = baseRDao.getByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.MODULE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), templateCode});
if (null == moduleExcelManageDb || StringUtils.isEmpty(moduleExcelManageDb.getFileId())) {
MesException.throwMesBusiException("模板代码为【%s】数据信息不存在", templateCode);
}
MesFile fileDb = mesFileRDao.getById(moduleExcelManageDb.getFileId());
if (null == fileDb || StringUtils.isEmpty(fileDb.getFileUrl())) {
MesException.throwMesBusiException("模板代码为【%s】对应文件信息不存在", templateCode);
}
return fileDb;
}
private MesFile getMesFile(MultipartFile file, MesModuleExcel mesModuleExcel) {
SysFile sysFile = mesFileService.uploadFile(file);
MesFile mesFile = new MesFile();
mesFile.setOrganizeCode(mesModuleExcel.getOrganizeCode());
mesFile.setFileName(sysFile.getDfsFileName());
mesFile.setFileUrl(sysFile.getFilePath());
mesFile.setFileSize(String.valueOf(sysFile.getFileSize()));
mesFile.setFileType(String.valueOf(sysFile.getFileTypeName()));
mesFile.setFileOriginName(sysFile.getFileOriginalName());
mesFile.setGroupName(sysFile.getDfsGroupName());
mesFile.setSyncTag(0);
ConvertBean.serviceModelInitialize(mesFile, mesModuleExcel.getModifyUser());
return mesFile;
}
}
Loading…
Cancel
Save