forked from I3-YF/i3plus-mes-yfai
Merge remote-tracking branch 'origin/dev' into dev
commit
4d68d813e3
@ -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/7/19 11:54
|
||||
* @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,17 @@
|
||||
package cn.estsh.i3plus.ext.mes.api.busi;
|
||||
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesDefectType;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
/**
|
||||
* @Description :缺陷记录
|
||||
* @Reference :
|
||||
* @Author : junsheng.li
|
||||
* @CreateDate 2024/7/19 15:32
|
||||
* @Modify:
|
||||
**/
|
||||
public interface IMesInputDefectRecordService {
|
||||
|
||||
@ApiOperation(value = "生成缺陷记录")
|
||||
void savePartInspection(MesProduceSn mesProduceSn, String userName, MesDefectType mesDefect,String defectLocation);
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
import cn.estsh.i3plus.platform.common.tool.MathOperation
|
||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean
|
||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack
|
||||
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement
|
||||
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.util.StringUtils
|
||||
|
||||
/**
|
||||
* @Description : MES2PISCES-发运单
|
||||
* @Reference :
|
||||
* @Author : gsz
|
||||
* @CreateDate 2024/7/14 10:59
|
||||
* @Modify:
|
||||
* */
|
||||
class MesToPiscesMesJisShipping {
|
||||
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesMesJisShipping.class)
|
||||
|
||||
@Autowired
|
||||
private MesShippingOrderManagementRepository mesShippingOrderManagementRepository;
|
||||
|
||||
def filterData(MesInterfaceDataMapper mapper, List<Map<String, Object>> srcData) throws Exception {
|
||||
if (srcData == null || srcData.size() == 0) {
|
||||
return srcData
|
||||
}
|
||||
Map<String, MesShippingOrderManagement> mesPartShippingGroupMap = new HashMap<>();
|
||||
String organizeCode = mapper.getOrganizeCode();
|
||||
Map<String, Map<String, Object>> destData = new HashMap<>();
|
||||
for (Map<String, Object> rowMap : srcData) {
|
||||
if (!StringUtils.isEmpty(rowMap.get("shipping_order_code"))) {
|
||||
MesShippingOrderManagement mesShipping = getMesShipping(organizeCode, String.valueOf(rowMap.get("shipping_order_code")), mesPartShippingGroupMap)
|
||||
if (!Objects.isNull(mesShipping)) {
|
||||
rowMap.put("HANDLE_FID", mesShipping.getFid())
|
||||
} else {
|
||||
LOGGER.info("shipping_order_code:{}信息不存在", String.valueOf(rowMap.get("shipping_order_code")))
|
||||
}
|
||||
}
|
||||
//数据汇总
|
||||
String key = String.valueOf(rowMap.get("HANDLE_FID")) + String.valueOf("part_no")
|
||||
if (destData.containsKey(key)) {
|
||||
destData.get(key).put("quantity_per_car", MathOperation.add(Double.valueOf(destData.get(key).get("quantity_per_car") + ""), Double.valueOf(rowMap.get("quantity_per_car") + "")))
|
||||
} else {
|
||||
destData.put(key, rowMap)
|
||||
}
|
||||
}
|
||||
return new ArrayList<>(destData.values());
|
||||
}
|
||||
|
||||
private MesShippingOrderManagement getMesShipping(String organizeCode, String shippingCode, Map<String, MesShippingOrderManagement> mesPartShippingGroupMap) {
|
||||
if (Objects.isNull(mesPartShippingGroupMap) || !mesPartShippingGroupMap.containsKey(shippingCode)) {
|
||||
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||
DdlPreparedPack.getStringEqualPack(shippingCode, "shippingCode", ddlPackBean);
|
||||
mesPartShippingGroupMap.put(shippingCode, mesShippingOrderManagementRepository.getByProperty(ddlPackBean))
|
||||
}
|
||||
return mesPartShippingGroupMap.get(shippingCode);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
|
||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg
|
||||
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
|
||||
import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgRepository
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
|
||||
import org.springframework.util.CollectionUtils
|
||||
|
||||
import javax.annotation.Resource
|
||||
|
||||
/**
|
||||
* @Description : 跨工厂防错
|
||||
* @Reference :
|
||||
* @Author : junsheng.li
|
||||
* @CreateDate 2024/7/22 11:03
|
||||
* @Modify:
|
||||
* */
|
||||
class PiscesToMesProductSn {
|
||||
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(PiscesToMesProductSn.class)
|
||||
|
||||
@Autowired
|
||||
private IMesCrossOrganizeCfgRepository mesCrossOrganizeCfgRepository;
|
||||
|
||||
@Resource(name = "pisces1DataSource")
|
||||
private DynamicDataSourceProxy pisces1DataSource;
|
||||
|
||||
def readData(MesInterfaceDataMapper mapper) throws Exception {
|
||||
String organizeCode = mapper.getOrganizeCode();
|
||||
List<MesCrossOrganizeCfg> crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode));
|
||||
if (CollectionUtils.isEmpty(crossOrganizeCfgList)) {
|
||||
LOGGER.info("未查询到跨工厂配置");
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<Map<String, Object>> srcData = new ArrayList<>();
|
||||
//循环处理数据
|
||||
for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("srcOrganizeCode", crossOrganizeCfg.getSrcOrganizeCode())
|
||||
params.put("partNo", crossOrganizeCfg.getPartNo())
|
||||
String sql = "select top "+mapper.getSrcGetLimit()+" * from " + mapper.getSrcTableName() + " where PLANT = :srcOrganizeCode and PART_NO = :partNo and " + mapper.getSrcWhere() + " order by "+mapper.getSrcOrderBy()
|
||||
//查询待同步的数据
|
||||
List<Map<String, Object>> dataList = queryDataTable(sql, params);
|
||||
if (!CollectionUtils.isEmpty(dataList)) {
|
||||
srcData.addAll(dataList);
|
||||
}
|
||||
}
|
||||
return srcData;
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> queryDataTable(String sql, Map<String, Object> params) {
|
||||
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(pisces1DataSource.getDataSource())
|
||||
return namedJdbcTemplate.queryForList(sql, params);
|
||||
}
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
|
||||
import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService;
|
||||
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCenterService;
|
||||
import cn.estsh.i3plus.ext.mes.api.busi.IMesInputDefectRecordService;
|
||||
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
|
||||
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesDefectType;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesMove;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail;
|
||||
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesMoveRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionDetailRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
||||
import cn.estsh.impp.framework.boot.util.ResultBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Description : 缺陷记录
|
||||
* @Reference :
|
||||
* @Author : junsheng.li
|
||||
* @CreateDate 2024/7/19 15:52
|
||||
* @Modify:
|
||||
**/
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MesInputDefectRecordServiceImpl implements IMesInputDefectRecordService {
|
||||
@Autowired
|
||||
private MesMoveRepository moveRepository;
|
||||
|
||||
@Autowired
|
||||
private MesPartInspectionRepository partInspectionRepository;
|
||||
|
||||
@Autowired
|
||||
private MesPartInspectionDetailRepository partInspectionDetailRepository;
|
||||
|
||||
@Autowired
|
||||
private IMesConfigService configService;
|
||||
|
||||
@Autowired
|
||||
private ISyncFuncService syncFuncService;
|
||||
|
||||
@Autowired
|
||||
private MesProduceSnRepository mesProduceSnRepository;
|
||||
|
||||
@Autowired
|
||||
private IMesPartSapService mesPartSapService;
|
||||
|
||||
@Autowired
|
||||
private IMesWorkCenterService workCenterService;
|
||||
|
||||
@Override
|
||||
public void savePartInspection(MesProduceSn mesProduceSn, String userName, MesDefectType mesDefect,String defectLocation) {
|
||||
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesProduceSn.getPartNo(), mesProduceSn.getOrganizeCode());
|
||||
MesPartInspection mesPartInspection = partInspectionRepository.insert(createPartInspection(mesPartSap, mesProduceSn.getProductSn(), mesProduceSn.getOrganizeCode(), userName));
|
||||
saveDetail(mesProduceSn.getOrganizeCode(), mesDefect, mesPartInspection.getId(), userName,defectLocation);
|
||||
//更新条码状态
|
||||
mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue());
|
||||
ConvertBean.serviceModelInitialize(mesProduceSn, userName);
|
||||
mesProduceSnRepository.update(mesProduceSn);
|
||||
//移库
|
||||
createMove(mesPartSap, mesPartInspection.getId(), configService.getCfgValue(mesProduceSn.getOrganizeCode(), "LGORT"), configService.getCfgValue(mesProduceSn.getOrganizeCode(), "UMLGO"), mesProduceSn);
|
||||
}
|
||||
|
||||
private void saveDetail(String organizeCode, MesDefectType mesDefect, long partInspectionId, String userName,String defectLocation) {
|
||||
MesPartInspectionDetail detail = new MesPartInspectionDetail();
|
||||
if (!Objects.isNull(mesDefect)) {
|
||||
detail.setDefectTypeId(mesDefect.getId());
|
||||
BeanUtils.copyProperties(mesDefect, detail);
|
||||
}
|
||||
detail.setId(null);
|
||||
detail.setDefectLocation(defectLocation);
|
||||
detail.setFrontBack(MesExtEnumUtil.DEFECT_ALARM_CONFIG_SIDES.FRONT.getValue());
|
||||
detail.setOrganizeCode(organizeCode);
|
||||
detail.setPid(partInspectionId);
|
||||
ConvertBean.serviceModelInitialize(detail, userName);
|
||||
partInspectionDetailRepository.insert(detail);
|
||||
}
|
||||
|
||||
private MesPartInspection createPartInspection(MesPartSap mesPartSap, String sn, String org, String userName) {
|
||||
MesPartInspection partInspection = new MesPartInspection();
|
||||
partInspection.setOrganizeCode(org);
|
||||
partInspection.setPartNo(mesPartSap.getPartNo());
|
||||
partInspection.setPartName(mesPartSap.getPartName());
|
||||
partInspection.setInspectionDate(TimeTool.getToday());
|
||||
partInspection.setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue());
|
||||
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue());
|
||||
partInspection.setSn(sn);
|
||||
partInspection.setQty(MesCommonConstant.TRUE_INTEGER);
|
||||
partInspection.setSourceType(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue());
|
||||
ConvertBean.serviceModelInitialize(partInspection, userName);
|
||||
return partInspection;
|
||||
}
|
||||
|
||||
/**
|
||||
* 移库
|
||||
*
|
||||
* @param source 来源
|
||||
* @param target 目标
|
||||
* @return
|
||||
*/
|
||||
private void createMove(MesPartSap mesPartSap, long partInspectionId, String source, String target, MesProduceSn mesProduceSn) {
|
||||
GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM");
|
||||
serialNoModel.setPartNo(mesPartSap.getPartNo());
|
||||
ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, AuthUtil.getSessionUser().getUserName(), mesProduceSn.getOrganizeCode(), 1);
|
||||
String zrsum = "";
|
||||
if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) {
|
||||
zrsum = (rb.getResultList().get(0)).toString();
|
||||
}
|
||||
|
||||
MesMove move = new MesMove();
|
||||
move.setMatnr(mesPartSap.getPartNo());
|
||||
move.setOrganizeCode(mesProduceSn.getOrganizeCode());
|
||||
move.setFactoryCode(mesProduceSn.getOrganizeCode());
|
||||
move.setLgort(source);
|
||||
move.setUmlgo(target);
|
||||
move.setMenge(1d);
|
||||
move.setMeins(mesPartSap.getUnit());
|
||||
move.setZrsum(zrsum);
|
||||
move.setPostDate(TimeTool.getToday());
|
||||
move.setPostTime(TimeTool.getTimeShortWithColon());
|
||||
move.setPartInspectionId(partInspectionId);
|
||||
move.setMoveType(MesExtEnumUtil.MOVE_TYPE.SUSPICIOUS_MOVE.getValue());
|
||||
move.setProductSn(mesProduceSn.getProductSn());
|
||||
move.setWorkCenter(workCenterService.getErpWorkCenterCode(mesProduceSn.getOrganizeCode(), mesProduceSn.getWorkCenterCode()));
|
||||
ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName());
|
||||
moveRepository.insert(move);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue