发运增加扫描日志信息

tags/yfai-pcn-ext-v2.3
jun 6 months ago
parent 5d48b239ff
commit a2dc24de4c

@ -2,12 +2,14 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesSortShippingCheckService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.log.MesServiceBusiScanLogService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesRedisLockUtil;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingCheckModel;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.repository.MesServiceBusiScanLogRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -16,6 +18,7 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -32,11 +35,16 @@ public class MesSortShippingCheckController {
@Autowired
private MesRedisLockUtil redisLockUtil;
@Autowired
private MesServiceBusiScanLogRepository mesServiceBusiScanLogRepository;
private static final String key = ":BUSI_LOCK:SORT_SHIPPING_CHECK:";
@GetMapping("/query-loading-order")
@ApiOperation(value = "查询发运单")
public ResultBean queryLoadingOrderNo(MesShippingOrderManagement shippingOrderManagement) {
MesServiceBusiScanLogService scanLogUtil = new MesServiceBusiScanLogService(MesSortShippingCheckController.class);
scanLogUtil.setMesServiceBusiScanLogRepository(mesServiceBusiScanLogRepository);
Boolean lockFlg = false;
String moduleKey = null;
@ -49,25 +57,32 @@ public class MesSortShippingCheckController {
organizeCode = !StringUtils.isEmpty(shippingOrderManagement.getOrganizeCode()) ? shippingOrderManagement.getOrganizeCode() : AuthUtil.getOrganize().getOrganizeCode();
userInfo = !StringUtils.isEmpty(shippingOrderManagement.getUserInfo()) ? shippingOrderManagement.getUserInfo() : AuthUtil.getSessionUser().getUserName();
scanLogUtil.setOrderNo(shippingOrderManagement.getShippingCode());
scanLogUtil.setOrganizeCode(organizeCode);
scanLogUtil.setUserName(userInfo);
moduleKey = organizeCode + key + "SHIPPING_CODE:" + shippingOrderManagement.getShippingCode();
log.info("工厂:{} 排序发运扫描发运单 --- {} --- START --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
scanLogUtil.info(String.format("工厂:%s 排序发运扫描发运单 --- %s --- START --- 操作人:%s --- THREAD:%s", organizeCode, moduleKey, userInfo, Thread.currentThread().getName()));
//加锁
lockFlg = redisLockUtil.redisLock(moduleKey);
log.info("工厂:{} 排序发运扫描发运单 --- {} --- LOCKED --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
scanLogUtil.info(String.format("工厂:%s 排序发运扫描发运单 --- %s --- LOCKED --- 操作人:%s --- THREAD:%s", organizeCode, moduleKey, userInfo, Thread.currentThread().getName()));
// 数据校验
ValidatorBean.checkNotNull(shippingOrderManagement.getShippingCode(), "发运单不能为空");
shippingOrderManagement.setOrganizeCode(organizeCode);
ConvertBean.serviceModelUpdate(shippingOrderManagement, userInfo);
long start = System.currentTimeMillis();
MesSortShippingCheckModel model = sortShippingCheckService.doShippingOrderNoQuery(shippingOrderManagement);
long end = System.currentTimeMillis();
scanLogUtil.info("扫描发运单执行结束", end - start);
return ResultBean.success(model.getMsg()).setResultObject(model);
} catch (ImppBusiException imppException) {
scanLogUtil.error(imppException.getErrorMsg());
return ResultBean.fail(imppException);
} catch (Exception e) {
scanLogUtil.error(ExceptionUtils.getStackTrace(e));
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
//解锁
@ -75,12 +90,15 @@ public class MesSortShippingCheckController {
redisLockUtil.redisUnLock(lockFlg, moduleKey);
log.info("工厂:{} 排序发运扫描发运单 --- {} --- UNLOCK --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
}
scanLogUtil.flush();
}
}
@PostMapping("/scan-sn")
@ApiOperation(value = "扫描条码")
public ResultBean saveSn(@RequestBody MesSortShippingCheckModel model) {
MesServiceBusiScanLogService scanLogUtil = new MesServiceBusiScanLogService(MesSortShippingCheckController.class);
scanLogUtil.setMesServiceBusiScanLogRepository(mesServiceBusiScanLogRepository);
Boolean lockFlg = false;
String moduleKey = null;
@ -93,15 +111,19 @@ public class MesSortShippingCheckController {
organizeCode = !StringUtils.isEmpty(model.getOrganizeCode()) ? model.getOrganizeCode() : AuthUtil.getOrganize().getOrganizeCode();
userInfo = !StringUtils.isEmpty(model.getUserInfo()) ? model.getUserInfo() : AuthUtil.getSessionUser().getUserName();
scanLogUtil.setOrderNo(model.getShippingCode());
scanLogUtil.setOrganizeCode(organizeCode);
scanLogUtil.setUserName(userInfo);
scanLogUtil.setSn(model.getSn());
//增加单据锁
moduleKey = organizeCode + key + "SHIPPING_CODE:" + model.getShippingCode();
log.info("工厂:{} 排序发运扫描条码 --- {} --- START --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
scanLogUtil.info(String.format("工厂:%s 排序发运扫描条码 --- %s --- START --- 操作人:%s --- THREAD:%s", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName()));
//加锁
lockFlg = redisLockUtil.redisLock(moduleKey);
log.info("工厂:{} 排序发运扫描条码 --- {} --- LOCKED --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
scanLogUtil.info(String.format("工厂:%s 排序发运扫描条码 --- %s --- LOCKED --- 操作人:%s --- THREAD:%s", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName()));
// 数据校验
ValidatorBean.checkNotNull(model.getShippingCode(), "发运单不能为空");
@ -109,11 +131,16 @@ public class MesSortShippingCheckController {
ValidatorBean.checkNotNull(model.getSn(), "条码不能为空");
model.setOrganizeCode(organizeCode);
model.setUserInfo(userInfo);
long start = System.currentTimeMillis();
sortShippingCheckService.saveSn(model);
long end = System.currentTimeMillis();
scanLogUtil.info("扫描发运条码执行结束", end - start);
return ResultBean.success(model.getMsg()).setResultObject(model);
} catch (ImppBusiException imppException) {
scanLogUtil.error(imppException.getErrorMsg());
return ResultBean.fail(imppException);
} catch (Exception e) {
scanLogUtil.error(ExceptionUtils.getStackTrace(e));
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
//解锁
@ -121,6 +148,7 @@ public class MesSortShippingCheckController {
redisLockUtil.redisUnLock(lockFlg, moduleKey);
log.info("工厂:{} 排序发运扫描条码 --- {} --- UNLOCK --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
}
scanLogUtil.flush();
}
}

@ -68,6 +68,7 @@ public class MesPartServiceImpl implements IMesPartService {
@Override
public MesPartSap getMesPartSapByPartNo(String partNo, String organizeCode) {
if(StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(partNo)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean);
MesPartSap mesPartSap = mesPartSapRDao.getByProperty(packBean);

@ -1,5 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesInputDefectRecordService;
@ -111,6 +112,10 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
private MesWorkOrderRepository workOrderRepository;
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private IMesPartService mesPartService;
@Override
public MesPartInspectionViewModel queryPartInspection(MesPartInspectionInputModel inputModel, String org) {
@ -237,6 +242,9 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
if(!StringUtils.isEmpty(model.getPartInspection())){
model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
if(!Objects.isNull(model.getPart())){
model.setPart(mesPartService.getMesPartSapByPartNo(model.getPart().getPartNo(), model.getOrganizeCode()));
}
//零件检测详情为空,则代表本次校验为合格。
if (CollectionUtils.isEmpty(model.getPartInspectionDetailList())) {
MesPartInspection partInspection;

@ -1,5 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNcProcessingService;
@ -112,6 +113,9 @@ public class MesNcProcessingService implements IMesNcProcessingService {
@Autowired
private MesWorkOrderRepository workOrderRepository;
@Autowired
private IMesPartService mesPartService;
@Override
public ListPager<MesPartInspection> queryPartInspectionByPager(MesPartInspection partInspection, Pager pager) {
@ -167,8 +171,7 @@ public class MesNcProcessingService implements IMesNcProcessingService {
public List<MesDefectType> queryPerson(String org) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.DEFECT_CATEGORY.RESPONSIBILITY.getValue(), "defectType", packBean);
List<MesDefectType> defectTypeList = defectTypeRepository.findByHqlWhere(packBean);
return defectTypeList;
return defectTypeRepository.findByHqlWhere(packBean);
}
@Override
@ -183,7 +186,9 @@ public class MesNcProcessingService implements IMesNcProcessingService {
@Override
public void saveNc(MesNcProcessingInputModel model, String org, boolean isOrder) {
if(!Objects.isNull(model.getPart())){
model.setPart(mesPartService.getMesPartSapByPartNo(model.getPart().getPartNo(), model.getOrganizeCode()));
}
if (model.getPartInspection().getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) {
Integer type = model.getType();
MesDefectType person = StringUtil.isEmpty(model.getPerson())?new MesDefectType():model.getPerson();

@ -204,7 +204,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
pullingOrderInfo.setPullingOrderPartInfos(pullingOrderPartInfos);
}
pullingOrderInfo.setWorkOrderNoLast(!StringUtil.isEmpty(pullingOrderInfo.getWorkOrderNo())?pullingOrderInfo.getWorkOrderNo().substring(pullingOrderInfo.getWorkOrderNo().length() - MesPcnExtConstWords.THREE):"");
pullingOrderInfo.setWorkOrderNo(!StringUtil.isEmpty(pullingOrderInfo.getWorkOrderNo())?pullingOrderInfo.getWorkOrderNo().substring(MesPcnExtConstWords.ZERO,pullingOrderInfo.getWorkOrderNo().length() - MesPcnExtConstWords.THREE):"");
pullingOrderInfo.setWorkOrderNoPre(!StringUtil.isEmpty(pullingOrderInfo.getWorkOrderNo())?pullingOrderInfo.getWorkOrderNo().substring(MesPcnExtConstWords.ZERO,pullingOrderInfo.getWorkOrderNo().length() - MesPcnExtConstWords.THREE):"");
pullingOrderInfo.setCustOrderNoLast(!StringUtil.isEmpty(pullingOrderInfo.getCustOrderNo())?pullingOrderInfo.getCustOrderNo().substring(pullingOrderInfo.getCustOrderNo().length() - MesPcnExtConstWords.FOUR):"");
pullingOrderInfo.setPartName("车型:"+pullingOrderInfo.getPartName());

@ -0,0 +1,86 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.log;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.MesServiceBusiScanLog;
import cn.estsh.i3plus.pojo.mes.repository.MesServiceBusiScanLogRepository;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
@Data
public class MesServiceBusiScanLogService {
private Logger LOGGER = null;
private MesServiceBusiScanLogRepository mesServiceBusiScanLogRepository;
private String orderNo = "";
private String sn = "";
private String organizeCode = "";
private String userName = "";
private String callClass = "";
private String callFun = "";
private static final String INFO = "INFO";
private static final String ERROR = "ERROR";
private List<MesServiceBusiScanLog> mesServiceBusiScanLogs = new ArrayList<>();
public MesServiceBusiScanLogService() {
mesServiceBusiScanLogs.clear();
}
public MesServiceBusiScanLogService(Class<?> clazz) {
this();
LOGGER = LoggerFactory.getLogger(clazz);
this.callClass = clazz.getSimpleName();
}
//正常信息
public void info(String msg) {
saveToDb(msg, 0, INFO);
LOGGER.info(msg);
}
public void info(String msg, long duration) {
saveToDb(msg, Integer.parseInt(duration + ""), INFO);
LOGGER.info(msg);
}
//错误日志
public void error(String msg) {
saveToDb(msg, 0, ERROR);
LOGGER.error(msg);
}
/**
* @param msg
*/
public void saveToDb(String msg, Integer duration, String logType) {
MesServiceBusiScanLog serviceLog = new MesServiceBusiScanLog();
serviceLog.setOrderNo(this.orderNo);
serviceLog.setSn(this.sn);
serviceLog.setDuration(duration);
serviceLog.setOrganizeCode(this.organizeCode);
serviceLog.setCallClass(this.callClass);
serviceLog.setCallFun(this.callFun);
serviceLog.setMessage(msg);
serviceLog.setLogType(logType);
ConvertBean.serviceModelInitialize(serviceLog, this.userName);
mesServiceBusiScanLogs.add(serviceLog);
}
/**
*
*/
public void flush() {
if (mesServiceBusiScanLogs != null && mesServiceBusiScanLogs.size() > 0) {
if (mesServiceBusiScanLogRepository != null) {
mesServiceBusiScanLogRepository.saveAll(mesServiceBusiScanLogs);
mesServiceBusiScanLogs.clear();
}
}
}
}
Loading…
Cancel
Save