工单首检更改为Q管理

dev
yxw 2 years ago
parent 474ef6c08f
commit e02d45e8a0

@ -45,4 +45,6 @@ public interface IAntiStaticCheckDetailService {
List<String> queryCell(String orderNo, String organizeCode);
//List<String> queryProcessCodeList(String orderNo, String organizeCode);
}

@ -36,5 +36,5 @@ public interface IBuFirstOrderService {
* @param userName
* @return
*/
void updateMesFirstOrderDetail(MesFirstOrderDetail mesFirstOrderDetail, String userName);
String updateMesFirstOrderDetail(MesFirstOrderDetail mesFirstOrderDetail, String userName);
}

@ -1,25 +1,25 @@
package cn.estsh.i3plus.ext.mes.pcn.api.base.bu3;
/**
* @Author: xinwang.yi
* @CreateDate: 2023/04/17 9:31
* @Description:
**/
public interface IBuQManageService {
/**
*
* @param organizeCode
* @param workCenterCode 线
*/
//void generateWeekCheck(String organizeCode, String workCenterCode);
/**
*
* @param organizeCode
* @param workCenterCode 线
*/
void generateMonthCheck(String organizeCode, String workCenterCode);
}
//package cn.estsh.i3plus.ext.mes.pcn.api.base.bu3;
//
///**
// * @Author: xinwang.yi
// * @CreateDate: 2023/04/17 9:31 上午
// * @Description:
// **/
//public interface IBuQManageService {
//
// /**
// * 生成周点检
// * @param organizeCode 工厂代码
// * @param workCenterCode 产线代码
// */
// //void generateWeekCheck(String organizeCode, String workCenterCode);
//
// /**
// * 生成月点检
// * @param organizeCode 工厂代码
// * @param workCenterCode 产线代码
// */
// void generateMonthCheck(String organizeCode, String workCenterCode);
//
//
//}

@ -1,63 +1,63 @@
package cn.estsh.i3plus.ext.mes.pcn.api.base.ep;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpEquipmentCheckDetailModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import java.util.List;
public interface IEpEquipmentCheckDetailService {
/**
*
* @param equipmentCheck
* @param pager
* @return
*/
ListPager<EpEquipmentCheckDetailModel> queryByPager(MesEpEquipmentCheckDetail equipmentCheck, Pager pager);
/**
*
* @param equipmentCheck
* @return
*/
MesEpEquipmentCheckDetail insert(MesEpEquipmentCheckDetail equipmentCheck);
/**
*
*
* @param equipmentCheck
* @return
*/
void update(MesEpEquipmentCheckDetail equipmentCheck);
/**
*
*
* @param id
* @param status
* @return
*/
int updateIsValidById(long id, Integer status);
/**
*
* @param detail
* @return
*/
List<String> queryCell(MesEpEquipmentCheckDetail detail);
/**
*
* @param organizeCode
* @param workCenterCode
*/
void generateWeekCheck(String organizeCode, String workCenterCode);
/**
*
* @param organizeCode
* @param workCenterCode
*/
void generateMonthCheck(String organizeCode, String workCenterCode);
}
//package cn.estsh.i3plus.ext.mes.pcn.api.base.ep;
//
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpEquipmentCheckDetailModel;
//import cn.estsh.i3plus.pojo.base.bean.ListPager;
//import cn.estsh.i3plus.pojo.base.common.Pager;
//
//import java.util.List;
//
//public interface IEpEquipmentCheckDetailService {
// /**
// * 查询
// * @param equipmentCheck
// * @param pager
// * @return
// */
// ListPager<EpEquipmentCheckDetailModel> queryByPager(MesEpEquipmentCheckDetail equipmentCheck, Pager pager);
//
// /**
// * 新增
// * @param equipmentCheck
// * @return
// */
// MesEpEquipmentCheckDetail insert(MesEpEquipmentCheckDetail equipmentCheck);
//
// /**
// * 修改
// *
// * @param equipmentCheck
// * @return
// */
// void update(MesEpEquipmentCheckDetail equipmentCheck);
//
// /**
// * 根据
// *
// * @param id
// * @param status
// * @return
// */
// int updateIsValidById(long id, Integer status);
//
// /**
// * 查询工位
// * @param detail
// * @return
// */
// List<String> queryCell(MesEpEquipmentCheckDetail detail);
//
// /**
// * 生成月点检
// * @param organizeCode
// * @param workCenterCode
// */
// void generateWeekCheck(String organizeCode, String workCenterCode);
//
// /**
// * 生成周点检
// * @param organizeCode
// * @param workCenterCode
// */
// void generateMonthCheck(String organizeCode, String workCenterCode);
//}

@ -51,6 +51,19 @@ public class AntiStaticCheckDetailController {
}
}
//@GetMapping("query-process-code-list")
//@ApiOperation(value = "查询工序代码下拉框")
//public ResultBean queryProcessCode(String orderNo, String organizeCode) {
// try {
// return ResultBean.success("查询成功").setResultList(this.antiStaticCheckDetailService.queryProcessCodeList(orderNo, organizeCode))
// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
//}
@PutMapping("update")
@ApiOperation(value = "修改")
public ResultBean update(@RequestBody MesAntiStaticCheckDetail detail) {

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
* @Description:
**/
@RestController
@Api(tags = "工单首检")
@Api(tags = "工单首检(改为Q管理)")
@RequestMapping(CommonConstWords.BASE_URL_MES_PCN+ "/first")
public class FirstOrderController extends MesPcnBaseController {
@ -60,7 +60,7 @@ public class FirstOrderController extends MesPcnBaseController {
* @return
*/
@GetMapping(value = "/mes-first-order-detail/find")
@ApiOperation(value = "查询首检单明细数据")
@ApiOperation(value = "查询首检单Q管理明细数据")
public ResultBean findMesFirstOrderDetail(String orderNo, String organizeCode) {
try {
return ResultBean.success("查询成功").setResultList(firstOrderService.findMesFirstOrderDetail(orderNo, organizeCode))
@ -80,7 +80,7 @@ public class FirstOrderController extends MesPcnBaseController {
* @return
*/
@PutMapping(value = "/mes-first-order-detail/update")
@ApiOperation(value = "修改首检明细信息")
@ApiOperation(value = "修改首检Q管理明细信息")
public ResultBean updateMesFirstOrderDetail(MesFirstOrderDetail mesFirstOrderDetail, String userName) {
try {
firstOrderService.updateMesFirstOrderDetail(mesFirstOrderDetail, userName);

@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
* @Description:
**/
@RestController
@Api(tags = "工单首检")
@Api(tags = "工单首检改为Q管理")
@RequestMapping(CommonConstWords.BASE_URL_MES_PCN+ "/bu-ext/first")
public class BuFirstOrderController extends MesPcnBaseController {
@ -58,7 +58,7 @@ public class BuFirstOrderController extends MesPcnBaseController {
* @return
*/
@GetMapping(value = "/mes-first-order-detail/find")
@ApiOperation(value = "查询首检单明细数据")
@ApiOperation(value = "查询首检单改为Q管理明细数据")
public ResultBean findMesFirstOrderDetail(String orderNo, String organizeCode) {
try {
return ResultBean.success("查询成功").setResultList(firstOrderService.findMesFirstOrderDetail(orderNo, organizeCode))
@ -77,12 +77,12 @@ public class BuFirstOrderController extends MesPcnBaseController {
* @return
*/
@PutMapping(value = "/mes-first-order-detail/update")
@ApiOperation(value = "修改首检明细信息")
@ApiOperation(value = "修改Q管理明细信息")
public ResultBean updateMesFirstOrderDetail(@RequestBody MesFirstOrderDetail mesFirstOrderDetail) {
try {
String userName = AuthUtil.getSessionUser().getUserName();
firstOrderService.updateMesFirstOrderDetail(mesFirstOrderDetail, userName);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(firstOrderService.updateMesFirstOrderDetail(mesFirstOrderDetail, userName));
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {

@ -1,56 +1,56 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base.bu;
import cn.estsh.i3plus.ext.mes.pcn.api.base.bu3.IBuQManageService;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.impp.framework.base.controller.MesPcnBaseController;
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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: xinwang.yi
* @CreateDate: 2023/04/17 09:14
* @Description:
**/
@RestController
@Api(tags = "Q管理作业")
@RequestMapping(CommonConstWords.BASE_URL_MES_PCN + "/bu/q-manage")
public class BuQManageController extends MesPcnBaseController {
@Autowired
private IBuQManageService qManageService;
//@PostMapping("/generate-week")
//@ApiOperation(value = "生成周点检")
//public ResultBean generateWeekCheck(String organizeCode, String workCenterCode) {
//
// try {
// qManageService.generateWeekCheck(organizeCode, workCenterCode);
// return ResultBean.success("扫描成功");
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
//}
@PostMapping("/generate-month")
@ApiOperation(value = "生成月点检")
public ResultBean generateMonthCheck(String organizeCode, String workCenterCode) {
try {
qManageService.generateMonthCheck(organizeCode, workCenterCode);
return ResultBean.success("生成成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base.bu;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.bu3.IBuQManageService;
//import cn.estsh.i3plus.platform.common.util.CommonConstWords;
//import cn.estsh.impp.framework.base.controller.MesPcnBaseController;
//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.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * @Author: xinwang.yi
// * @CreateDate: 2023/04/17 09:14
// * @Description:
// **/
//@RestController
//@Api(tags = "Q管理作业")
//@RequestMapping(CommonConstWords.BASE_URL_MES_PCN + "/bu/q-manage")
//public class BuQManageController extends MesPcnBaseController {
//
// @Autowired
// private IBuQManageService qManageService;
//
// //@PostMapping("/generate-week")
// //@ApiOperation(value = "生成周点检")
// //public ResultBean generateWeekCheck(String organizeCode, String workCenterCode) {
// //
// // try {
// // qManageService.generateWeekCheck(organizeCode, workCenterCode);
// // return ResultBean.success("扫描成功");
// // } catch (ImppBusiException busExcep) {
// // return ResultBean.fail(busExcep);
// // } catch (Exception e) {
// // return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// // }
// //}
//
// @PostMapping("/generate-month")
// @ApiOperation(value = "生成月点检")
// public ResultBean generateMonthCheck(String organizeCode, String workCenterCode) {
//
// try {
// qManageService.generateMonthCheck(organizeCode, workCenterCode);
// return ResultBean.success("生成成功");
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//}

@ -1,122 +1,122 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base.ep;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpEquipmentCheckDetailService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpMesOrderJobService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpOrderJobModel;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
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.web.bind.annotation.*;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-dev
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2021-12-13 17:08
*/
@RestController
@Api(tags = "EP设备点检")
@RequestMapping(CommonConstWords.BASE_URL_MES_PCN + "/ep-ext/order-job")
public class EpEquipmentCheckDetailController {
@Autowired
private IEpEquipmentCheckDetailService mesEquipmentCheckService;
@Autowired
private IEpMesOrderJobService orderJobService;
@GetMapping("/equipment-check-detail/query")
@ApiOperation(value = "条件分页查询设备点检详细")
public ResultBean queryPager(MesEpEquipmentCheckDetail detail, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(this.mesEquipmentCheckService.queryByPager(detail, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param detail
* @return
*/
@PutMapping("/equipment-check-detail/update")
@ApiOperation(value = "修改")
public ResultBean update(@RequestBody MesEpEquipmentCheckDetail detail) {
try {
this.mesEquipmentCheckService.update(detail);
return ResultBean.success("扫描成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/equipment-check/query")
@ApiOperation(value = "条件分页查询单据")
public ResultBean queryPager(EpOrderJobModel orderJob) {
try {
return ResultBean.success("查询成功").setResultList(orderJobService.queryMesOrderJob(orderJob))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/equipment-check/generate-week")
@ApiOperation(value = "生成周点检")
public ResultBean generateWeekCheck(String organizeCode, String workCenterCode) {
try {
mesEquipmentCheckService.generateWeekCheck(organizeCode, workCenterCode);
return ResultBean.success("生成成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/equipment-check/generate-month")
@ApiOperation(value = "生成月点检")
public ResultBean generateMonthCheck(String organizeCode, String workCenterCode) {
try {
mesEquipmentCheckService.generateMonthCheck(organizeCode, workCenterCode);
return ResultBean.success("生成成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/query-cell")
@ApiOperation(value = "查询工序代码下拉框")
public ResultBean queryCell(MesEpEquipmentCheckDetail detail) {
try {
return ResultBean.success("查询成功").setResultList(this.mesEquipmentCheckService.queryCell(detail))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base.ep;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpEquipmentCheckDetailService;
//import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpMesOrderJobService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpOrderJobModel;
//import cn.estsh.i3plus.platform.common.util.CommonConstWords;
//import cn.estsh.i3plus.pojo.base.common.Pager;
//import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
//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.web.bind.annotation.*;
//
///**
// * @PROJECT_NAME: i3plus-mes-panasonic-dev
// * @DESCRIPTION:
// * @USER: xinwang.yi
// * @DATE: 2021-12-13 17:08
// */
//@RestController
//@Api(tags = "EP设备点检")
//@RequestMapping(CommonConstWords.BASE_URL_MES_PCN + "/ep-ext/order-job")
//public class EpEquipmentCheckDetailController {
//
// @Autowired
// private IEpEquipmentCheckDetailService mesEquipmentCheckService;
//
// @Autowired
// private IEpMesOrderJobService orderJobService;
//
// @GetMapping("/equipment-check-detail/query")
// @ApiOperation(value = "条件分页查询设备点检详细")
// public ResultBean queryPager(MesEpEquipmentCheckDetail detail, Pager pager) {
// try {
// return ResultBean.success("查询成功").setListPager(this.mesEquipmentCheckService.queryByPager(detail, pager))
// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
// /**
// * 物料点检作业
// *
// * @param detail
// * @return
// */
// @PutMapping("/equipment-check-detail/update")
// @ApiOperation(value = "修改")
// public ResultBean update(@RequestBody MesEpEquipmentCheckDetail detail) {
// try {
// this.mesEquipmentCheckService.update(detail);
// return ResultBean.success("扫描成功")
// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
// @GetMapping("/equipment-check/query")
// @ApiOperation(value = "条件分页查询单据")
// public ResultBean queryPager(EpOrderJobModel orderJob) {
// try {
// return ResultBean.success("查询成功").setResultList(orderJobService.queryMesOrderJob(orderJob))
// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
// @PostMapping("/equipment-check/generate-week")
// @ApiOperation(value = "生成周点检")
// public ResultBean generateWeekCheck(String organizeCode, String workCenterCode) {
//
// try {
// mesEquipmentCheckService.generateWeekCheck(organizeCode, workCenterCode);
// return ResultBean.success("生成成功");
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
// @PostMapping("/equipment-check/generate-month")
// @ApiOperation(value = "生成月点检")
// public ResultBean generateMonthCheck(String organizeCode, String workCenterCode) {
//
// try {
// mesEquipmentCheckService.generateMonthCheck(organizeCode, workCenterCode);
// return ResultBean.success("生成成功");
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
// @GetMapping("/query-cell")
// @ApiOperation(value = "查询工序代码下拉框")
// public ResultBean queryCell(MesEpEquipmentCheckDetail detail) {
// try {
// return ResultBean.success("查询成功").setResultList(this.mesEquipmentCheckService.queryCell(detail))
// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
// } catch (ImppBusiException busExcep) {
// return ResultBean.fail(busExcep);
// } catch (Exception e) {
// return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
// }
// }
//
//}

@ -1,7 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.pcn.api.job.IAntiStaticCheckOrderService;
import cn.estsh.i3plus.ext.mes.pcn.api.job.IProjectTourConfirmOrderService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

@ -150,6 +150,16 @@ public class AntiStaticCheckDetailService implements IAntiStaticCheckDetailServi
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
}
//@Override
//public List<String> queryProcessCodeList(String orderNo, String organizeCode) {
// DdlPackBean packBean = MesHqlPack.getMesAllData(organizeCode);
// DdlPreparedPack.getStringEqualPack(orderNo, "orderJobNo", packBean);
// List<MesAntiStaticCheckDetail> details = antiStaticCheckDetailRepository.findByHqlWhere(packBean);
// return (details.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCellCode())))
// .map(MesAntiStaticCheckDetail::getProcessCode).collect(Collectors.toList()))
// .stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
//}
/**
*

@ -135,12 +135,12 @@ public class MesOrderJobService implements IMesOrderJobService {
List<MesPersonCheckDetail> personCheckDetailList = personCheckDetailRDao.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(personCheckDetailList)? true : false;
case Q_MANAGE:
//判断当前明细数据中【刀头是否完好】字段存在数据
List<MesQManageTaskDetail> qDetailsTotal = qManageTaskDetailRDao.findByHqlWhere(packBean);
DdlPreparedPack.getStringNotBlanklPack("isIntact", packBean);
List<MesQManageTaskDetail> qDetails = qManageTaskDetailRDao.findByHqlWhere(packBean);
return qDetails.size() == qDetailsTotal.size() ? true : false;
//case Q_MANAGE:
// //判断当前明细数据中【刀头是否完好】字段存在数据
// List<MesQManageTaskDetail> qDetailsTotal = qManageTaskDetailRDao.findByHqlWhere(packBean);
// DdlPreparedPack.getStringNotBlanklPack("isIntact", packBean);
// List<MesQManageTaskDetail> qDetails = qManageTaskDetailRDao.findByHqlWhere(packBean);
// return qDetails.size() == qDetailsTotal.size() ? true : false;
case EQU_CHECK:
DdlPackBean equPackBean = MesPcnHqlPack.getAllBaseData(organizeCode);
@ -152,14 +152,14 @@ public class MesOrderJobService implements IMesOrderJobService {
return CollectionUtils.isEmpty(equDetails) ? true : false;
//兼容EP
case EP_EQU_CHECK:
DdlPackBean epEquPackBean = MesPcnHqlPack.getAllBaseData(organizeCode);
DdlPreparedPack.getStringEqualPack(orderNo, "orderJobNo", epEquPackBean);
DdlPreparedPack.getNotInPack(Stream.of(MesPcnExtEnumUtil.EQU_CHECK_RESULT.QUALIFIED.getValue(),
MesPcnExtEnumUtil.EQU_CHECK_RESULT.EQUIPMENT_ABNORMAL.getValue(),
MesPcnExtEnumUtil.EQU_CHECK_RESULT.EQUIPMENT_FAILURE.getValue()).collect(Collectors.toList()), "checkResult", epEquPackBean);
List<MesEpEquipmentCheckDetail> epEquDetails = epEquDetailRepository.findByHqlWhere(epEquPackBean);
return CollectionUtils.isEmpty(epEquDetails) ? true : false;
//case EP_EQU_CHECK:
// DdlPackBean epEquPackBean = MesPcnHqlPack.getAllBaseData(organizeCode);
// DdlPreparedPack.getStringEqualPack(orderNo, "orderJobNo", epEquPackBean);
// DdlPreparedPack.getNotInPack(Stream.of(MesPcnExtEnumUtil.EQU_CHECK_RESULT.QUALIFIED.getValue(),
// MesPcnExtEnumUtil.EQU_CHECK_RESULT.EQUIPMENT_ABNORMAL.getValue(),
// MesPcnExtEnumUtil.EQU_CHECK_RESULT.EQUIPMENT_FAILURE.getValue()).collect(Collectors.toList()), "checkResult", epEquPackBean);
// List<MesEpEquipmentCheckDetail> epEquDetails = epEquDetailRepository.findByHqlWhere(epEquPackBean);
// return CollectionUtils.isEmpty(epEquDetails) ? true : false;
case ESD_CHECK:
DdlPackBean antPackBean = MesPcnHqlPack.getAllBaseData(organizeCode);
@ -246,19 +246,19 @@ public class MesOrderJobService implements IMesOrderJobService {
DdlPreparedPack.getInPackList(statusList, "orderStatus", packBean);
List<MesOrderJob> mesOrderJobs = mesOrderJobRDao.findByHqlWhere(packBean);
if (!CollectionUtils.isEmpty(mesOrderJobs)) {
for (MesOrderJob orderJob : mesOrderJobs) {
if(orderJob.getOrderType() == MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue() && orderJob.getCheckType().equals(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.MONTH_CHECK.getValue())) continue;
packBean = DdlPackBean.getDdlPackBean(mesOrderJob.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderJob.getWorkOrderNo(), "orderNo", packBean);
MesWorkOrder mesWorkOrder = mesWorkOrderRDao.getByProperty(packBean);
if (mesWorkOrder != null) {
orderJob.setPartNo(mesWorkOrder.getPartNo());
orderJob.setPartNameRdd(mesWorkOrder.getPartNameRdd());
}
}
}
//if (!CollectionUtils.isEmpty(mesOrderJobs)) {
// for (MesOrderJob orderJob : mesOrderJobs) {
// if(orderJob.getOrderType() == MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue() && orderJob.getCheckType().equals(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.MONTH_CHECK.getValue())) continue;
// packBean = DdlPackBean.getDdlPackBean(mesOrderJob.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(orderJob.getWorkOrderNo(), "orderNo", packBean);
//
// MesWorkOrder mesWorkOrder = mesWorkOrderRDao.getByProperty(packBean);
// if (mesWorkOrder != null) {
// orderJob.setPartNo(mesWorkOrder.getPartNo());
// orderJob.setPartNameRdd(mesWorkOrder.getPartNameRdd());
// }
// }
//}
return mesOrderJobs;
}

@ -823,7 +823,8 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
.build();
}
if (MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() == workOrderStatus &&
if (workOrderExt.getWorkOrderType() != MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() &&
MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() == workOrderStatus &&
(null == lastWorkOrderStatus || MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() == lastWorkOrderStatus)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
List<MesAffiliatedStartConfig> mesAffiliatedStartConfigs = affiliatedStartConfigRepository.findByHqlWhere(ddlPackBean);
@ -870,36 +871,36 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
//完成
//校验工单是否是暂停状态
//修改返工工单状态
if(workOrderExt.getWorkOrderType() == MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue()) {
List<String> waterPurifierCodeList = !Optional.ofNullable(waterPurifierCode).isPresent() || StringUtils.isEmpty(waterPurifierCode.getCfgValue()) ? new ArrayList<>() : Arrays.asList(waterPurifierCode.getCfgValue().split(MesPcnExtConstWords.COMMA));
if(CollectionUtils.isEmpty(waterPurifierCodeList) || !waterPurifierCodeList.contains(workOrderExt.getWorkCenterCode())){
// 手动点击完成工单,存在未下线条码
if(!workOrderExt.getQty().equals(workOrderExt.getCompleteQty())) {
List<MesProduceSnRepair> produceSnRepairList = queryProduceSnRepairList(organizeCode, workOrderExt.getOrderNo());
if(!CollectionUtils.isEmpty(produceSnRepairList)) {
// 未下线条码
produceSnRepairList = produceSnRepairList.stream().filter(o -> StringUtils.isEmpty(o.getOutWorkCenterTime())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(produceSnRepairList)){
List<String> serialNumberList = produceSnRepairList.stream().map(MesProduceSnRepair::getSerialNumber).collect(Collectors.toList());
updateProduceSnRepair(organizeCode, serialNumberList);
updatePackage(organizeCode, serialNumberList);
unbindReworkRangeList(organizeCode, workOrderExt, serialNumberList, userInfo);
clearProdBindRecord(organizeCode, workOrderExt, TimeTool.getNowTime(true), serialNumberList, userInfo);
}
}
}
reworkOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.REWORK_ORDER_NO}, new Object[]{workOrderExt.getOrderNo()},
new String[]{ MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
new Object[]{MesPcnExtEnumUtil.WORK_ORDER_STATUS.CLOSE.getValue(), MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue(), AuthUtil.getSessionUser().getUserName(), TimeTool.getNowTime(true)});
}
}
//if(workOrderExt.getWorkOrderType() == MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue()) {
//
// List<String> waterPurifierCodeList = !Optional.ofNullable(waterPurifierCode).isPresent() || StringUtils.isEmpty(waterPurifierCode.getCfgValue()) ? new ArrayList<>() : Arrays.asList(waterPurifierCode.getCfgValue().split(MesPcnExtConstWords.COMMA));
// if(CollectionUtils.isEmpty(waterPurifierCodeList) || !waterPurifierCodeList.contains(workOrderExt.getWorkCenterCode())){
// // 手动点击完成工单,存在未下线条码
// if(!workOrderExt.getQty().equals(workOrderExt.getCompleteQty())) {
// List<MesProduceSnRepair> produceSnRepairList = queryProduceSnRepairList(organizeCode, workOrderExt.getOrderNo());
// if(!CollectionUtils.isEmpty(produceSnRepairList)) {
// // 未下线条码
// produceSnRepairList = produceSnRepairList.stream().filter(o -> StringUtils.isEmpty(o.getOutWorkCenterTime())).collect(Collectors.toList());
//
// if(!CollectionUtils.isEmpty(produceSnRepairList)){
// List<String> serialNumberList = produceSnRepairList.stream().map(MesProduceSnRepair::getSerialNumber).collect(Collectors.toList());
//
// updateProduceSnRepair(organizeCode, serialNumberList);
//
// updatePackage(organizeCode, serialNumberList);
//
// unbindReworkRangeList(organizeCode, workOrderExt, serialNumberList, userInfo);
//
// clearProdBindRecord(organizeCode, workOrderExt, TimeTool.getNowTime(true), serialNumberList, userInfo);
// }
// }
// }
//
// //reworkOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.REWORK_ORDER_NO}, new Object[]{workOrderExt.getOrderNo()},
// // new String[]{ MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
// // new Object[]{MesPcnExtEnumUtil.WORK_ORDER_STATUS.CLOSE.getValue(), MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue(), AuthUtil.getSessionUser().getUserName(), TimeTool.getNowTime(true)});
// }
//}
/*if (MesExtEnumUtil.WORK_ORDER_STATUS.PAUSE.getValue() != mesWorkOrder.getWorkOrderStatus()) {
throw ImppExceptionBuilder.newInstance().setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工单号【%s】的工单状态不是暂停状态不能完成", mesWorkOrder.getOrderNo())

@ -1,13 +1,11 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.bu;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IPartExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.bu.IBuFirstOrderService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IPackageExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesFirstOrderDetailRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesOrderJobRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesPackageExtRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesProduceSnExtRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -15,8 +13,6 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesContainer;
import cn.estsh.i3plus.pojo.mes.repository.MesContainerRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -35,25 +31,16 @@ import java.util.List;
public class BuFirstOrderService implements IBuFirstOrderService {
@Autowired
private IPartExtService partExtService;
@Autowired
private IPackageExtService packageExtService;
@Autowired
private MesOrderJobRepository orderJobRepository;
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@Autowired
private MesPackageExtRepository packageExtRepository;
@Autowired
private MesFirstOrderDetailRepository mesFirstOrderDetailRDao;
@Autowired
private MesContainerRepository containerRepository;
private MesProduceSnExtRepository produceSnExtRepository;
@Override
public void doCheckSerialNumber(String serialNumber, String orderNo, String workOrderNo, String organizeCode, String modifyUser) {
@ -66,6 +53,19 @@ public class BuFirstOrderService implements IBuFirstOrderService {
.build();
}
//扫描管理码
MesProduceSnExt produceSnExt = produceSnExtRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.SERIAL_NUMBER, MesPcnExtConstWords.WORK_ORDER_NO},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), serialNumber, workOrderNo});
if (produceSnExt == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("管理码[%s]不存在于当前工单中", serialNumber)
.build();
}
MesOrderJob orderJobDb = orderJobRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ORDER_NO},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), orderNo});
@ -94,136 +94,17 @@ public class BuFirstOrderService implements IBuFirstOrderService {
.build();
}
MesPartExt partExt = partExtService.getPartExt(organizeCode, workOrderExt.getPartNo());
if (null == partExt) {
MesOrderJob orderJobExist = orderJobRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.SERIAL_NUMBER},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), serialNumber});
if (null != orderJobExist) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("生产工单号[%s]关联的物料编码[%s]无效", workOrderNo, workOrderExt.getPartNo())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("产品条码[%s]已经绑定单据[%s],不可再次执行绑定", serialNumber, orderJobExist.getOrderNo())
.build();
}
if (StringUtils.isEmpty(partExt.getCategoryCode2()) || MesPcnExtEnumUtil.CATEGORY_CODE_2.OUTSIDE.getValue().equals(partExt.getCategoryCode2())) {
MesOrderJob orderJobExist = orderJobRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.SERIAL_NUMBER},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), serialNumber});
if (null != orderJobExist) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("包装条码[%s]已经绑定单据[%s],不可再次执行绑定", serialNumber, orderJobExist.getOrderNo())
.build();
}
//扫描包装条码
MesPackageExt packageExt = packageExtService.getPackageByPackNo(organizeCode, serialNumber);
if (null == packageExt) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("包装条码[%s]无效", serialNumber)
.build();
}
if (StringUtils.isEmpty(partExt.getCategoryCode2())) {
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != workOrderExt.getWorkOrderType()) {
if (!packageExt.getWorkOrderNo().equals(workOrderNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("生产工单[%s]未关联包装条码[%s]", workOrderNo, serialNumber)
.build();
} else {
if (!StringUtils.isEmpty(packageExt.getLastWorkOrderNo()) && !packageExt.getLastWorkOrderNo().equals(packageExt.getWorkOrderNo())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("包装条码[%s]已经关联返工工单[%s]", serialNumber, packageExt.getLastWorkOrderNo())
.build();
}
}
} else {
if (StringUtils.isEmpty(packageExt.getLastWorkOrderNo()) || !packageExt.getLastWorkOrderNo().equals(workOrderNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("返工工单[%s]未关联包装条码[%s]", workOrderNo, serialNumber)
.build();
}
}
} else {
if (!packageExt.getWorkOrderNo().equals(workOrderNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("生产工单[%s]未关联包装条码[%s]", workOrderNo, serialNumber)
.build();
}
}
} else {
//扫描CT_NO
MesContainer containerDb = containerRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.CT_NO},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), serialNumber});
if (null == containerDb) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("容器条码[%s]无效", serialNumber)
.build();
}
if (MesPcnExtEnumUtil.CONTAINER_USE_STATUS.LEISURE.getValue() == containerDb.getUseStatus()) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("容器条码[%s]未进行生产,请重新扫描", serialNumber)
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(serialNumber, MesPcnExtConstWords.CT_NO, packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.MODIFY_DATE_TIME}, packBean);
MesPackageExt packageExt = packageExtRepository.getByProperty(packBean);
if (null == packageExt) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("容器条码[%s]未关联包装条码", serialNumber)
.build();
}
if (!packageExt.getWorkOrderNo().equals(workOrderNo)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("容器条码[%s]关联的最新包装条码[%s]对应的生产工单[%s]与当前生产工单[%s]不一致",
serialNumber, packageExt.getPackageNo(), packageExt.getWorkOrderNo(), workOrderNo)
.build();
} else {
if (!StringUtils.isEmpty(packageExt.getLastWorkOrderNo()) && !packageExt.getLastWorkOrderNo().equals(packageExt.getWorkOrderNo())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("容器条码[%s]关联的包装条码[%s]已经关联返工工单[%s]", serialNumber, packageExt.getPackageNo(), packageExt.getLastWorkOrderNo())
.build();
}
}
MesOrderJob orderJobExist = orderJobRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.SERIAL_NUMBER},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), serialNumber});
if (null != orderJobExist) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("容器条码[%s]已经绑定单据[%s],不可再次执行绑定", serialNumber, orderJobExist.getOrderNo())
.build();
}
serialNumber = packageExt.getPackageNo();
}
orderJobDb.setSerialNumber(serialNumber);
ConvertBean.serviceModelUpdate(orderJobDb, modifyUser);
orderJobRepository.save(orderJobDb);
@ -241,7 +122,7 @@ public class BuFirstOrderService implements IBuFirstOrderService {
}
@Override
public void updateMesFirstOrderDetail(MesFirstOrderDetail mesFirstOrderDetail, String userName) {
public String updateMesFirstOrderDetail(MesFirstOrderDetail mesFirstOrderDetail, String userName) {
//上下限有值时,结果值为必填
if (!StringUtils.isEmpty(mesFirstOrderDetail.getUpLimit()) && !StringUtils.isEmpty(mesFirstOrderDetail.getDownLimit()) && StringUtils.isEmpty(mesFirstOrderDetail.getResultValue())){
@ -255,7 +136,7 @@ public class BuFirstOrderService implements IBuFirstOrderService {
//根据单号查询任务主表信息
String orderNo = mesFirstOrderDetail.getOrderNo();
MesOrderJob mesOrderJob = orderJobRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "orderNo"},
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ORDER_NO},
new Object[]{mesFirstOrderDetail.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue(), orderNo});
@ -272,28 +153,46 @@ public class BuFirstOrderService implements IBuFirstOrderService {
if (!StringUtils.isEmpty(mesFirstOrderDetail.getUpLimit()) && StringUtils.isEmpty(mesFirstOrderDetail.getDownLimit())){
Double upLimit = Double.valueOf(mesFirstOrderDetail.getUpLimit());
if (resultValue > upLimit && mesFirstOrderDetail.getCheckResult().equals("10")){
mesFirstOrderDetail.setCheckResult("30");
}else if (resultValue <= upLimit && mesFirstOrderDetail.getCheckResult().equals("30")){
mesFirstOrderDetail.setCheckResult("20");
}else if (resultValue <= upLimit && mesFirstOrderDetail.getCheckResult().equals("20")){
mesFirstOrderDetail.setCheckResult("10");
}
}else if (StringUtils.isEmpty(mesFirstOrderDetail.getUpLimit()) && !StringUtils.isEmpty(mesFirstOrderDetail.getDownLimit())){
Double downLimit = Double.valueOf(mesFirstOrderDetail.getDownLimit());
if (resultValue < downLimit && mesFirstOrderDetail.getCheckResult().equals("10")){
mesFirstOrderDetail.setCheckResult("30");
}else if (resultValue >= downLimit && mesFirstOrderDetail.getCheckResult().equals("30")){
mesFirstOrderDetail.setCheckResult("20");
}else if (resultValue >= downLimit && mesFirstOrderDetail.getCheckResult().equals("20")){
mesFirstOrderDetail.setCheckResult("10");
}
}else if (!StringUtils.isEmpty(mesFirstOrderDetail.getUpLimit()) && !StringUtils.isEmpty(mesFirstOrderDetail.getDownLimit())){
Double upLimit = Double.valueOf(mesFirstOrderDetail.getUpLimit());
Double downLimit = Double.valueOf(mesFirstOrderDetail.getDownLimit());
if ((upLimit >= resultValue && resultValue >= downLimit) && mesFirstOrderDetail.getCheckResult().equals("30")){
if ((upLimit >= resultValue && resultValue >= downLimit) && mesFirstOrderDetail.getCheckResult().equals("20")){
mesFirstOrderDetail.setCheckResult("10");
}else if (!(upLimit >= resultValue && resultValue >= downLimit) && mesFirstOrderDetail.getCheckResult().equals("10")){
mesFirstOrderDetail.setCheckResult("30");
mesFirstOrderDetail.setCheckResult("20");
}
}
}
if (mesFirstOrderDetail.getManageType().equals(MesPcnExtEnumUtil.Q_MANAGE_MANAGE_TYPE.RESULT_TYPE.getValue()) && !StringUtils.isEmpty(mesFirstOrderDetail.getImportanceSafePartNo()) && StringUtils.isEmpty(mesFirstOrderDetail.getCheckResult())){
if (!mesFirstOrderDetail.getImportanceSafePartNo().equals(mesFirstOrderDetail.getCheckValue())) {
MesProduceSnExt produceSnExt = produceSnExtRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PRODUCT_SN},
new Object[]{mesFirstOrderDetail.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue(), mesFirstOrderDetail.getCheckValue()});
if (produceSnExt == null || !produceSnExt.getPartNo().equals(mesFirstOrderDetail.getImportanceSafePartNo())) {
log.info("updateMesFirstOrderDetail --- 条码为空或条码的重要安全部品编码不一致");
mesFirstOrderDetail.setCheckValue("20");
} else {
mesFirstOrderDetail.setCheckValue("10");
}
} else {
mesFirstOrderDetail.setCheckValue("20");
}
}
//修改首检单明细数据
mesFirstOrderDetail.setSpotCheckUser(userName);
ConvertBean.serviceModelUpdate(mesFirstOrderDetail, userName);
@ -305,5 +204,6 @@ public class BuFirstOrderService implements IBuFirstOrderService {
orderJobRepository.save(mesOrderJob);
return mesFirstOrderDetail.getCheckResult();
}
}

@ -144,12 +144,12 @@ public class BuMesOrderJobService implements IBuMesOrderJobService {
List<MesPersonCheckDetail> personCheckDetailList = personCheckDetailRDao.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(personCheckDetailList)? true : false;
case Q_MANAGE:
//判断当前明细数据中【刀头是否完好】字段存在数据
List<MesQManageTaskDetail> qDetailsTotal = qManageTaskDetailRDao.findByHqlWhere(packBean);
DdlPreparedPack.getStringNotBlanklPack("isIntact", packBean);
List<MesQManageTaskDetail> qDetails = qManageTaskDetailRDao.findByHqlWhere(packBean);
return qDetails.size() == qDetailsTotal.size() ? true : false;
//case Q_MANAGE:
// //判断当前明细数据中【刀头是否完好】字段存在数据
// List<MesQManageTaskDetail> qDetailsTotal = qManageTaskDetailRDao.findByHqlWhere(packBean);
// DdlPreparedPack.getStringNotBlanklPack("isIntact", packBean);
// List<MesQManageTaskDetail> qDetails = qManageTaskDetailRDao.findByHqlWhere(packBean);
// return qDetails.size() == qDetailsTotal.size() ? true : false;
case EQU_CHECK:
DdlPackBean equPackBean = MesPcnHqlPack.getAllBaseData(organizeCode);

@ -1,146 +1,146 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.bu3;
import cn.estsh.i3plus.ext.mes.pcn.api.base.bu3.IBuQManageService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.pcn.util.DateUtil;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
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.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-bu
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2023-04-17 9:23
*/
@Service
public class BuQManageService implements IBuQManageService {
@Autowired
private MesOrderJobRepository orderJobRepository;
@Autowired
private MesQManageTaskDetailRepository qManageTaskDetailRepository;
@Autowired
private ISyncFuncService syncFuncService;
@Autowired
private MesWorkCenterExtRepository workCenterExtRepository;
@Autowired
private MesProcessQManageRepository processQManageRepository;
@Autowired
private MesProcessCellRepository processCellRepository;
//@Override
//public void generateWeekCheck(String organizeCode, String workCenterCode) {
// generateOrderJob(organizeCode, workCenterCode, MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.WEEK_CHECK.getValue());
//}
@Override
public void generateMonthCheck(String organizeCode, String workCenterCode) {
generateOrderJob(organizeCode, workCenterCode, MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.MONTH_CHECK.getValue());
}
private void generateOrderJob(String organizeCode, String workCenterCode, String checkType) {
List<MesProcessCell> processCellList = processCellRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCenterCode});
Map<String, MesProcessCell> processCellMap = processCellList.stream().collect(Collectors.toMap(o -> o.getProcessCode(), Function.identity(), (x, y) -> y));
List<MesProcessQManage> qManageList = findQManageByCenterCode(organizeCode, processCellList, checkType);
if (!CollectionUtils.isEmpty(qManageList)) {
MesWorkCenterExt workCenter = getWorkCenter(workCenterCode, organizeCode);
MesOrderJob newOrderJob = new MesOrderJob();
newOrderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
newOrderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
newOrderJob.setOrderNo(getOrderNo(organizeCode));
newOrderJob.setWorkCenterCode(workCenterCode);
newOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
newOrderJob.setOrderDate(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setWorkTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setGenerateTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setOrganizeCode(organizeCode);
newOrderJob.setIsValid(MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue());
newOrderJob.setIsDeleted(MesEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
newOrderJob.setCreateDatetime(DateUtil.formatDate());
newOrderJob.setModifyDatetime(DateUtil.formatDate());
newOrderJob.setCheckType(checkType);
newOrderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.MANUALLY_CREATE.getValue());
newOrderJob.setShiftCode(workCenter.getShiftCode());
MesOrderJob job = orderJobRepository.save(newOrderJob);
for (MesProcessQManage processQManage : qManageList) {
MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
qManageTaskDetail.setOrderNo(job.getOrderNo());
BeanUtils.copyProperties(processQManage, qManageTaskDetail, "id");
qManageTaskDetail.setCheckType(checkType);
qManageTaskDetail.setShiftCode(workCenter.getShiftCode());
qManageTaskDetail.setWorkCenterCode(workCenterCode);
MesProcessCell mesProcessCell = processCellMap.get(processQManage.getProcessCode());
if(mesProcessCell != null){
qManageTaskDetail.setWorkCellCode(mesProcessCell.getWorkCellCode());
qManageTaskDetail.setWorkCellName(mesProcessCell.getWorkCellName());
qManageTaskDetail.setProcessName(mesProcessCell.getProcessName());
}
qManageTaskDetailRepository.save(qManageTaskDetail);
}
}else{
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("产线【%s】未维护月点检项目请确认",workCenterCode)
.build();
}
}
private MesWorkCenterExt getWorkCenter(String workCenterCode, String organizeCode) {
return workCenterExtRepository.getByProperty(
new String[]{"workCenterCode", "organizeCode", "isValid", "isDeleted"},
new Object[]{workCenterCode, organizeCode,
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.IS_DEAL.NO.getValue()});
}
public List<MesProcessQManage> findQManageByCenterCode(String organizeCode, List<MesProcessCell> processCellList, String checkType) {
if(CollectionUtils.isEmpty(processCellList)) return null;
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, ddlPackBean);
DdlPreparedPack.getInPackList(processCellList.stream().map(MesProcessCell::getProcessCode).distinct().collect(Collectors.toList()), MesPcnExtConstWords.PROCESS_CODE, ddlPackBean);
return processQManageRepository.findByHqlWhere(ddlPackBean);
}
private String getOrderNo(String organizeCode) {
String orderNo = null;
try {
BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
if (oneCodeResult != null && oneCodeResult.isSuccess()) {
orderNo = oneCodeResult.getResultList().get(0).toString();
}
} catch (Exception e) {
}
return orderNo;
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.bu3;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.bu3.IBuQManageService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
//import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
//import cn.estsh.i3plus.mes.pcn.util.DateUtil;
//import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
//import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
//import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
//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.Date;
//import java.util.List;
//import java.util.Map;
//import java.util.function.Function;
//import java.util.stream.Collectors;
//
///**
// * @PROJECT_NAME: i3plus-mes-panasonic-bu
// * @DESCRIPTION:
// * @USER: xinwang.yi
// * @DATE: 2023-04-17 9:23
// */
//@Service
//public class BuQManageService implements IBuQManageService {
//
// @Autowired
// private MesOrderJobRepository orderJobRepository;
//
// @Autowired
// private MesQManageTaskDetailRepository qManageTaskDetailRepository;
//
// @Autowired
// private ISyncFuncService syncFuncService;
//
// @Autowired
// private MesWorkCenterExtRepository workCenterExtRepository;
//
// @Autowired
// private MesProcessQManageRepository processQManageRepository;
//
// @Autowired
// private MesProcessCellRepository processCellRepository;
//
// //@Override
// //public void generateWeekCheck(String organizeCode, String workCenterCode) {
// // generateOrderJob(organizeCode, workCenterCode, MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.WEEK_CHECK.getValue());
// //}
//
// @Override
// public void generateMonthCheck(String organizeCode, String workCenterCode) {
// generateOrderJob(organizeCode, workCenterCode, MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.MONTH_CHECK.getValue());
// }
//
// private void generateOrderJob(String organizeCode, String workCenterCode, String checkType) {
// List<MesProcessCell> processCellList = processCellRepository.findByProperty(
// new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
// new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCenterCode});
// Map<String, MesProcessCell> processCellMap = processCellList.stream().collect(Collectors.toMap(o -> o.getProcessCode(), Function.identity(), (x, y) -> y));
// List<MesProcessQManage> qManageList = findQManageByCenterCode(organizeCode, processCellList, checkType);
// if (!CollectionUtils.isEmpty(qManageList)) {
// MesWorkCenterExt workCenter = getWorkCenter(workCenterCode, organizeCode);
// MesOrderJob newOrderJob = new MesOrderJob();
// newOrderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
// newOrderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
// newOrderJob.setOrderNo(getOrderNo(organizeCode));
// newOrderJob.setWorkCenterCode(workCenterCode);
// newOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
// newOrderJob.setOrderDate(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setWorkTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setGenerateTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setOrganizeCode(organizeCode);
// newOrderJob.setIsValid(MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue());
// newOrderJob.setIsDeleted(MesEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// newOrderJob.setCreateDatetime(DateUtil.formatDate());
// newOrderJob.setModifyDatetime(DateUtil.formatDate());
// newOrderJob.setCheckType(checkType);
// newOrderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.MANUALLY_CREATE.getValue());
// newOrderJob.setShiftCode(workCenter.getShiftCode());
// MesOrderJob job = orderJobRepository.save(newOrderJob);
//
// for (MesProcessQManage processQManage : qManageList) {
// MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
// qManageTaskDetail.setOrderNo(job.getOrderNo());
// BeanUtils.copyProperties(processQManage, qManageTaskDetail, "id");
// qManageTaskDetail.setCheckType(checkType);
// qManageTaskDetail.setShiftCode(workCenter.getShiftCode());
// qManageTaskDetail.setWorkCenterCode(workCenterCode);
// MesProcessCell mesProcessCell = processCellMap.get(processQManage.getProcessCode());
// if(mesProcessCell != null){
// qManageTaskDetail.setWorkCellCode(mesProcessCell.getWorkCellCode());
// qManageTaskDetail.setWorkCellName(mesProcessCell.getWorkCellName());
// qManageTaskDetail.setProcessName(mesProcessCell.getProcessName());
// }
//
// qManageTaskDetailRepository.save(qManageTaskDetail);
// }
// }else{
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
// .setErrorDetail("产线【%s】未维护月点检项目请确认",workCenterCode)
// .build();
// }
// }
//
// private MesWorkCenterExt getWorkCenter(String workCenterCode, String organizeCode) {
// return workCenterExtRepository.getByProperty(
// new String[]{"workCenterCode", "organizeCode", "isValid", "isDeleted"},
// new Object[]{workCenterCode, organizeCode,
// CommonEnumUtil.IS_VAILD.VAILD.getValue(),
// CommonEnumUtil.IS_DEAL.NO.getValue()});
// }
//
// public List<MesProcessQManage> findQManageByCenterCode(String organizeCode, List<MesProcessCell> processCellList, String checkType) {
// if(CollectionUtils.isEmpty(processCellList)) return null;
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, ddlPackBean);
// DdlPreparedPack.getInPackList(processCellList.stream().map(MesProcessCell::getProcessCode).distinct().collect(Collectors.toList()), MesPcnExtConstWords.PROCESS_CODE, ddlPackBean);
//
// return processQManageRepository.findByHqlWhere(ddlPackBean);
// }
//
// private String getOrderNo(String organizeCode) {
// String orderNo = null;
// try {
// BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
// if (oneCodeResult != null && oneCodeResult.isSuccess()) {
// orderNo = oneCodeResult.getResultList().get(0).toString();
// }
// } catch (Exception e) {
// }
// return orderNo;
// }
//}

@ -1,415 +1,415 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.ep;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpEquipmentCheckDetailService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheck;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOrderJob;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkCenterExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpEquipmentCheckDetailModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesEpEquipmentCheckDetailRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesEpEquipmentCheckRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesOrderJobRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesWorkCenterExtRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.pcn.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.TimeTool;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
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.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.sqlpack.MesHqlPack;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-dev
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2021-12-14 10:32
*/
@Service
public class EpEquipmentCheckDetailService implements IEpEquipmentCheckDetailService {
@Autowired
private MesEpEquipmentCheckRepository epEquipmentCheckRepository;
@Autowired
private MesEpEquipmentCheckDetailRepository equDetailRepository;
@Autowired
private MesOrderJobRepository mesOrderJobRepository;
@Autowired
private MesWorkCenterExtRepository workCenterRepository;
@Autowired
private ISyncFuncService syncFuncService;
@Override
public ListPager<EpEquipmentCheckDetailModel> queryByPager(MesEpEquipmentCheckDetail equipmentCheck, Pager pager) {
String workCenterCode = equipmentCheck.getWorkCenterCode();
String organizeCode = equipmentCheck.getOrganizeCode();
DdlPackBean packBean = MesHqlPack.getMesAllData(organizeCode);
DdlPreparedPack.getStringEqualPack(equipmentCheck.getOrderJobNo(), MesPcnExtConstWords.ORDER_JOB_NO, packBean);
DdlPreparedPack.getStringEqualPack(equipmentCheck.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getNumEqualPack(equipmentCheck.getIsValid(), MesPcnExtConstWords.IS_VALID, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
pager = PagerHelper.getPager(pager, equDetailRepository.findByHqlWhereCount(packBean));
List<MesEpEquipmentCheckDetail> equipmentCheckDetails = equDetailRepository.findByHqlWherePage(packBean, pager);
List<EpEquipmentCheckDetailModel> epEquipmentCheckDetailModels = new ArrayList<>();
for(MesEpEquipmentCheckDetail epEquipmentCheckDetail: equipmentCheckDetails){
EpEquipmentCheckDetailModel epEquipmentCheckDetailModel = new EpEquipmentCheckDetailModel();
BeanUtils.copyProperties(epEquipmentCheckDetail, epEquipmentCheckDetailModel);
epEquipmentCheckDetailModel.setResutlTypeName(MesPcnExtEnumUtil.EP_EQUIPMENT_CHECK_RESULT_TYPE.valueOfDescription(epEquipmentCheckDetailModel.getResultType()));
epEquipmentCheckDetailModels.add(epEquipmentCheckDetailModel);
}
return new ListPager(epEquipmentCheckDetailModels, pager);
}
/**
*
*
* @param equipmentCheck
* @return
*/
@Override
public MesEpEquipmentCheckDetail insert(MesEpEquipmentCheckDetail equipmentCheck) {
ConvertBean.modelInitialize(equipmentCheck, AuthUtil.getSessionUser());
equipmentCheck.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return equDetailRepository.insert(equipmentCheck);
}
/**
*
*
* @param equipmentCheck
* @return
*/
@Override
public void update(MesEpEquipmentCheckDetail equipmentCheck) {
//1、判断单据是否存在
Long id = equipmentCheck.getId();
MesEpEquipmentCheckDetail equipmentCheckMeta = equDetailRepository.getById(id);
if (ObjectUtils.isEmpty(equipmentCheckMeta)) {
throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode(), "点检信息不存在");
}
ConvertBean.serviceModelUpdate(equipmentCheckMeta, equipmentCheck.getModifyUser());
equipmentCheckMeta.setSpotCheckTime(equipmentCheckMeta.getModifyDatetime());
equipmentCheckMeta.setSpotCheckUser(equipmentCheckMeta.getModifyUser());
//根据单号查询任务主表信息
String orderJobNo = equipmentCheckMeta.getOrderJobNo();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(equipmentCheck.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderJobNo, MesPcnExtConstWords.ORDER_NO, ddlPackBean);
MesOrderJob mesOrderJob = mesOrderJobRepository.getByProperty(ddlPackBean);
if(null == mesOrderJob){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("单据【%s】不存在",orderJobNo)
.build();
}
switch (MesPcnExtEnumUtil.EP_EQUIPMENT_CHECK_RESULT_TYPE.valueOfDescription(equipmentCheck.getResultType())){
case MesPcnExtConstWords.COMPARE_TYPE:
if(StringUtils.isEmpty(equipmentCheck.getResultValue())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
equipmentCheckMeta.setResultValue("");
}else{
try{
Double.valueOf(equipmentCheck.getResultValue());
}catch (Exception e){
throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION.getCode(), "实际值不是数值型");
}
//如果上限值和下限值为空
if(StringUtils.isEmpty(equipmentCheckMeta.getUpLimit()) && StringUtils.isEmpty(equipmentCheckMeta.getDownLimit())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
}else if(!StringUtils.isEmpty(equipmentCheckMeta.getDownLimit()) && !StringUtils.isEmpty(equipmentCheckMeta.getUpLimit())){
Double downLimit = Double.valueOf(equipmentCheckMeta.getDownLimit());
Double upLimit = Double.valueOf(equipmentCheckMeta.getUpLimit());
Double resultValue = Double.valueOf(equipmentCheck.getResultValue());
//如果实际值在规定范围之内
if(resultValue>= downLimit && resultValue<= upLimit){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
if(StringUtils.isEmpty(equipmentCheck.getCheckResult())){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
}else if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
} else {
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}else{
//实际值不在范围之内
//如果点检结果是空的
if(StringUtils.isEmpty(equipmentCheck.getCheckResult())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
}else{
//如果点检结果是10
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
}else{
//20 40 原值保存
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}
}
} else if(!StringUtils.isEmpty(equipmentCheckMeta.getDownLimit())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
if(Double.valueOf(equipmentCheck.getResultValue()) < Double.valueOf(equipmentCheckMeta.getDownLimit())){
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
}else{
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}else{
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
}else{
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}
}else if(!StringUtils.isEmpty(equipmentCheckMeta.getUpLimit())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
if(Double.valueOf(equipmentCheck.getResultValue()) > Double.valueOf(equipmentCheckMeta.getUpLimit())){
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
}else{
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}else{
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
}else{
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}
}
}
break;
case MesPcnExtConstWords.RESULT_TYPE:
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
break;
case MesPcnExtConstWords.EQUAL_TYPE:
//点检结果为空的时候
if(StringUtils.isEmpty(equipmentCheckMeta.getStandardValue()) && StringUtils.isEmpty(equipmentCheck.getCheckResult())){
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
}else{
//结果不为空
equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
//标准值不为空
if(!StringUtils.isEmpty(equipmentCheckMeta.getStandardValue())){
//用户输入的标准值和之前设定的标准值都不为空
if(equipmentCheckMeta.getStandardValue().equals(equipmentCheck.getResultValue())){
if(!StringUtils.isEmpty(equipmentCheck.getCheckResult())){
//当标准值一致但点检结果为30时
if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
}else{
// 20 & 40 原值保存
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}else{
// 标准值一致,点检结果为空
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
}
}else{
//如果点检结果为空
if(equipmentCheck.getCheckResult()==MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
}else{
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}
}else{
// 标准值为空 保存备注和结果
equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
}
}
break;
}
mesOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CHECKING.getValue());
ConvertBean.serviceModelUpdate(mesOrderJob,equipmentCheck.getCreateUser());
mesOrderJobRepository.save(mesOrderJob);
ConvertBean.serviceModelUpdate(equipmentCheckMeta,equipmentCheck.getCreateUser());
equipmentCheckMeta.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
equDetailRepository.save(equipmentCheckMeta);
}
private MesWorkCenterExt getWorkCenter(String workCenterCode, String organizeCode) {
return workCenterRepository.getByProperty(
new String[]{MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED},
new Object[]{workCenterCode, organizeCode,
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.IS_DEAL.NO.getValue()});
}
/**
*
*
* @param id
* @param status
* @return
*/
@Override
public int updateIsValidById(long id, Integer status) {
//1、判断单据是否存在
MesEpEquipmentCheckDetail equipmentCheck = equDetailRepository.getById(id);
if (ObjectUtils.isEmpty(equipmentCheck)) {
throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode(), "自动配置不存在");
}
return equDetailRepository.updateByProperties(new String[]{ MesPcnExtConstWords.ID}, new Object[]{id},
new String[]{MesConstWords.IS_VALID, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
new Object[]{status, AuthUtil.getSessionUser().getUserName(), TimeTool.getNowTime(true)});
}
@Override
public List<String> queryCell(MesEpEquipmentCheckDetail detail) {
DdlPackBean packBean = MesHqlPack.getMesAllData(detail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(detail.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(detail.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(detail.getOrderJobNo(), "orderJobNo", packBean);
List<MesEpEquipmentCheckDetail> details = equDetailRepository.findByHqlWhere(packBean);
return details.stream().map(MesEpEquipmentCheckDetail::getWorkCellCode).distinct().collect(Collectors.toList());
}
@Override
public void generateWeekCheck(String organizeCode,String workCenterCode) {
generateOrderJob(organizeCode,workCenterCode,MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue());
}
@Override
public void generateMonthCheck(String organizeCode,String workCenterCode) {
generateOrderJob(organizeCode,workCenterCode,MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue());
}
//生产单据作业
private void generateOrderJob(String organizeCode, String workCenterCode, String checkType) {
List<MesEpEquipmentCheck> mesEquipmentChecks = findEquByCenterCode(organizeCode, workCenterCode, checkType);
if (!CollectionUtils.isEmpty(mesEquipmentChecks)) {
MesWorkCenterExt workCenter = getWorkCenter(workCenterCode, organizeCode);
//根据设备编号来进行分组
Map<String, List<MesEpEquipmentCheck>> resultMap = mesEquipmentChecks.stream().filter(mesEquipmentCheck -> mesEquipmentCheck.getEquNo() != null && !StringUtils.isEmpty(mesEquipmentCheck.getEquNo())).collect(Collectors.groupingBy(MesEpEquipmentCheck::getEquNo));
for (String key: resultMap.keySet()){
MesOrderJob newOrderJob = new MesOrderJob();
newOrderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
newOrderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue());
newOrderJob.setOrderNo(getOrderNo(organizeCode));
newOrderJob.setWorkCenterCode(workCenterCode);
newOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
newOrderJob.setOrderDate(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setWorkTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setGenerateTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
newOrderJob.setOrganizeCode(organizeCode);
newOrderJob.setIsValid(MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue());
newOrderJob.setIsDeleted(MesEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
newOrderJob.setCreateDatetime(DateUtil.formatDate());
newOrderJob.setModifyDatetime(DateUtil.formatDate());
newOrderJob.setCheckType(checkType);
newOrderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.MANUALLY_CREATE.getValue());
newOrderJob.setShiftCode(workCenter.getShiftCode());
MesOrderJob job = mesOrderJobRepository.save(newOrderJob);
List<MesEpEquipmentCheck> epEquipmentChecks = resultMap.get(key);
for (MesEpEquipmentCheck mesEquipmentCheck : epEquipmentChecks) {
MesEpEquipmentCheckDetail mesEquipmentCheckDetail = new MesEpEquipmentCheckDetail();
mesEquipmentCheckDetail.setOrderJobNo(job.getOrderNo());
BeanUtils.copyProperties(mesEquipmentCheck, mesEquipmentCheckDetail, MesPcnExtConstWords.ID);
mesEquipmentCheckDetail.setCheckType(checkType);
mesEquipmentCheckDetail.setEquNo(mesEquipmentCheck.getEquNo());
mesEquipmentCheckDetail.setResultType(mesEquipmentCheck.getResultType());
mesEquipmentCheckDetail.setEquName(mesEquipmentCheck.getEquName());
mesEquipmentCheckDetail.setShiftCode(workCenter.getShiftCode());
mesEquipmentCheckDetail.setStandardValue(mesEquipmentCheck.getStandardValue());
mesEquipmentCheckDetail.setDownLimit(mesEquipmentCheck.getDownLimit());
mesEquipmentCheckDetail.setUpLimit(mesEquipmentCheck.getUpLimit());
mesEquipmentCheckDetail.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
equDetailRepository.save(mesEquipmentCheckDetail);
}
}
}
}
public List<MesEpEquipmentCheck> findEquByCenterCode(String organizeCode, String workCenterCode, String checkType) {
DdlPackBean ddlPackBean2 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(checkType, "checkType", ddlPackBean2);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean2);
return epEquipmentCheckRepository.findByHqlWhere(ddlPackBean2);
}
private String getOrderNo(String organizeCode) {
String orderNo = "";
BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
if (oneCodeResult != null && oneCodeResult.isSuccess()) {
orderNo = oneCodeResult.getResultList().get(0).toString();
} else {
throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(),ImppExceptionEnum.SYSTEM_EXCEPTION.getCode(),"生成唯一工单号失败");
}
return orderNo;
}
/**
*
*
* @param softTypeCode softTypeCode
* @param errorDetailString
* @param imppExceptionEnumCode
* @param args
*/
private void throwImppException(String softTypeCode, String errorDetailString, String imppExceptionEnumCode, Object... args) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(softTypeCode)
.setErrorCode(imppExceptionEnumCode)
.setErrorDetail(errorDetailString, args)
.build();
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.ep;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.ep.IEpEquipmentCheckDetailService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheck;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesEpEquipmentCheckDetail;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOrderJob;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkCenterExt;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpEquipmentCheckDetailModel;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesEpEquipmentCheckDetailRepository;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesEpEquipmentCheckRepository;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesOrderJobRepository;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesWorkCenterExtRepository;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
//import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
//import cn.estsh.i3plus.mes.pcn.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.TimeTool;
//import cn.estsh.i3plus.platform.common.util.MesConstWords;
//import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
//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.enumutil.MesEnumUtil;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
//import cn.estsh.i3plus.pojo.mes.sqlpack.MesHqlPack;
//import cn.estsh.impp.framework.boot.auth.AuthUtil;
//import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.ObjectUtils;
//import org.springframework.util.StringUtils;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @PROJECT_NAME: i3plus-mes-panasonic-dev
// * @DESCRIPTION:
// * @USER: xinwang.yi
// * @DATE: 2021-12-14 10:32
// */
//@Service
//public class EpEquipmentCheckDetailService implements IEpEquipmentCheckDetailService {
//
// @Autowired
// private MesEpEquipmentCheckRepository epEquipmentCheckRepository;
//
// @Autowired
// private MesEpEquipmentCheckDetailRepository equDetailRepository;
//
// @Autowired
// private MesOrderJobRepository mesOrderJobRepository;
// @Autowired
// private MesWorkCenterExtRepository workCenterRepository;
// @Autowired
// private ISyncFuncService syncFuncService;
//
// @Override
// public ListPager<EpEquipmentCheckDetailModel> queryByPager(MesEpEquipmentCheckDetail equipmentCheck, Pager pager) {
// String workCenterCode = equipmentCheck.getWorkCenterCode();
// String organizeCode = equipmentCheck.getOrganizeCode();
// DdlPackBean packBean = MesHqlPack.getMesAllData(organizeCode);
// DdlPreparedPack.getStringEqualPack(equipmentCheck.getOrderJobNo(), MesPcnExtConstWords.ORDER_JOB_NO, packBean);
// DdlPreparedPack.getStringEqualPack(equipmentCheck.getWorkCellCode(), "workCellCode", packBean);
//
// DdlPreparedPack.getNumEqualPack(equipmentCheck.getIsValid(), MesPcnExtConstWords.IS_VALID, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// pager = PagerHelper.getPager(pager, equDetailRepository.findByHqlWhereCount(packBean));
// List<MesEpEquipmentCheckDetail> equipmentCheckDetails = equDetailRepository.findByHqlWherePage(packBean, pager);
// List<EpEquipmentCheckDetailModel> epEquipmentCheckDetailModels = new ArrayList<>();
// for(MesEpEquipmentCheckDetail epEquipmentCheckDetail: equipmentCheckDetails){
// EpEquipmentCheckDetailModel epEquipmentCheckDetailModel = new EpEquipmentCheckDetailModel();
// BeanUtils.copyProperties(epEquipmentCheckDetail, epEquipmentCheckDetailModel);
// epEquipmentCheckDetailModel.setResutlTypeName(MesPcnExtEnumUtil.EP_EQUIPMENT_CHECK_RESULT_TYPE.valueOfDescription(epEquipmentCheckDetailModel.getResultType()));
// epEquipmentCheckDetailModels.add(epEquipmentCheckDetailModel);
// }
// return new ListPager(epEquipmentCheckDetailModels, pager);
// }
//
// /**
// * 新增
// *
// * @param equipmentCheck
// * @return
// */
// @Override
// public MesEpEquipmentCheckDetail insert(MesEpEquipmentCheckDetail equipmentCheck) {
// ConvertBean.modelInitialize(equipmentCheck, AuthUtil.getSessionUser());
// equipmentCheck.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
// return equDetailRepository.insert(equipmentCheck);
// }
//
// /**
// * 修改
// *
// * @param equipmentCheck
// * @return
// */
// @Override
// public void update(MesEpEquipmentCheckDetail equipmentCheck) {
// //1、判断单据是否存在
// Long id = equipmentCheck.getId();
// MesEpEquipmentCheckDetail equipmentCheckMeta = equDetailRepository.getById(id);
// if (ObjectUtils.isEmpty(equipmentCheckMeta)) {
// throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode(), "点检信息不存在");
// }
//
// ConvertBean.serviceModelUpdate(equipmentCheckMeta, equipmentCheck.getModifyUser());
// equipmentCheckMeta.setSpotCheckTime(equipmentCheckMeta.getModifyDatetime());
// equipmentCheckMeta.setSpotCheckUser(equipmentCheckMeta.getModifyUser());
//
// //根据单号查询任务主表信息
// String orderJobNo = equipmentCheckMeta.getOrderJobNo();
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(equipmentCheck.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(orderJobNo, MesPcnExtConstWords.ORDER_NO, ddlPackBean);
// MesOrderJob mesOrderJob = mesOrderJobRepository.getByProperty(ddlPackBean);
//
// if(null == mesOrderJob){
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
// .setErrorDetail("单据【%s】不存在",orderJobNo)
// .build();
// }
//
// switch (MesPcnExtEnumUtil.EP_EQUIPMENT_CHECK_RESULT_TYPE.valueOfDescription(equipmentCheck.getResultType())){
// case MesPcnExtConstWords.COMPARE_TYPE:
// if(StringUtils.isEmpty(equipmentCheck.getResultValue())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// equipmentCheckMeta.setResultValue("");
// }else{
// try{
// Double.valueOf(equipmentCheck.getResultValue());
// }catch (Exception e){
// throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION.getCode(), "实际值不是数值型");
// }
// //如果上限值和下限值为空
// if(StringUtils.isEmpty(equipmentCheckMeta.getUpLimit()) && StringUtils.isEmpty(equipmentCheckMeta.getDownLimit())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// }else if(!StringUtils.isEmpty(equipmentCheckMeta.getDownLimit()) && !StringUtils.isEmpty(equipmentCheckMeta.getUpLimit())){
// Double downLimit = Double.valueOf(equipmentCheckMeta.getDownLimit());
// Double upLimit = Double.valueOf(equipmentCheckMeta.getUpLimit());
// Double resultValue = Double.valueOf(equipmentCheck.getResultValue());
// //如果实际值在规定范围之内
// if(resultValue>= downLimit && resultValue<= upLimit){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
//
// if(StringUtils.isEmpty(equipmentCheck.getCheckResult())){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// }else if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// } else {
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
//
// }else{
// //实际值不在范围之内
// //如果点检结果是空的
// if(StringUtils.isEmpty(equipmentCheck.getCheckResult())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
// }else{
// //如果点检结果是10
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// }else{
// //20 40 原值保存
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }
// }
// } else if(!StringUtils.isEmpty(equipmentCheckMeta.getDownLimit())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// if(Double.valueOf(equipmentCheck.getResultValue()) < Double.valueOf(equipmentCheckMeta.getDownLimit())){
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
// }else{
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }else{
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// }else{
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }
// }else if(!StringUtils.isEmpty(equipmentCheckMeta.getUpLimit())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// if(Double.valueOf(equipmentCheck.getResultValue()) > Double.valueOf(equipmentCheckMeta.getUpLimit())){
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
// }else{
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }else{
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// }else{
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }
// }
// }
// break;
// case MesPcnExtConstWords.RESULT_TYPE:
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// break;
// case MesPcnExtConstWords.EQUAL_TYPE:
// //点检结果为空的时候
// if(StringUtils.isEmpty(equipmentCheckMeta.getStandardValue()) && StringUtils.isEmpty(equipmentCheck.getCheckResult())){
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// }else{
// //结果不为空
// equipmentCheckMeta.setRemark(equipmentCheck.getRemark());
// equipmentCheckMeta.setResultValue(equipmentCheck.getResultValue());
// //标准值不为空
// if(!StringUtils.isEmpty(equipmentCheckMeta.getStandardValue())){
// //用户输入的标准值和之前设定的标准值都不为空
// if(equipmentCheckMeta.getStandardValue().equals(equipmentCheck.getResultValue())){
// if(!StringUtils.isEmpty(equipmentCheck.getCheckResult())){
// //当标准值一致但点检结果为30时
// if(equipmentCheck.getCheckResult() == MesPcnExtConstWords.NG){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// }else{
// // 20 & 40 原值保存
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }else{
// // 标准值一致,点检结果为空
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.OK);
// }
// }else{
// //如果点检结果为空
// if(equipmentCheck.getCheckResult()==MesPcnExtConstWords.OK && !MesPcnExtConstWords.INCONFORMITY.equals(equipmentCheck.getRemark())){
// equipmentCheckMeta.setCheckResult(MesPcnExtConstWords.NG);
// }else{
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }
// }else{
// // 标准值为空 保存备注和结果
// equipmentCheckMeta.setCheckResult(equipmentCheck.getCheckResult());
// }
// }
// break;
// }
//
// mesOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CHECKING.getValue());
// ConvertBean.serviceModelUpdate(mesOrderJob,equipmentCheck.getCreateUser());
// mesOrderJobRepository.save(mesOrderJob);
// ConvertBean.serviceModelUpdate(equipmentCheckMeta,equipmentCheck.getCreateUser());
// equipmentCheckMeta.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
// equDetailRepository.save(equipmentCheckMeta);
//
// }
//
// private MesWorkCenterExt getWorkCenter(String workCenterCode, String organizeCode) {
// return workCenterRepository.getByProperty(
// new String[]{MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED},
// new Object[]{workCenterCode, organizeCode,
// CommonEnumUtil.IS_VAILD.VAILD.getValue(),
// CommonEnumUtil.IS_DEAL.NO.getValue()});
// }
//
// /**
// * 根据
// *
// * @param id
// * @param status
// * @return
// */
// @Override
// public int updateIsValidById(long id, Integer status) {
// //1、判断单据是否存在
// MesEpEquipmentCheckDetail equipmentCheck = equDetailRepository.getById(id);
// if (ObjectUtils.isEmpty(equipmentCheck)) {
// throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(), ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode(), "自动配置不存在");
// }
//
// return equDetailRepository.updateByProperties(new String[]{ MesPcnExtConstWords.ID}, new Object[]{id},
// new String[]{MesConstWords.IS_VALID, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
// new Object[]{status, AuthUtil.getSessionUser().getUserName(), TimeTool.getNowTime(true)});
// }
//
// @Override
// public List<String> queryCell(MesEpEquipmentCheckDetail detail) {
// DdlPackBean packBean = MesHqlPack.getMesAllData(detail.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(detail.getWorkCellCode(), "workCellCode", packBean);
// DdlPreparedPack.getStringEqualPack(detail.getWorkCenterCode(), "workCenterCode", packBean);
// DdlPreparedPack.getStringEqualPack(detail.getOrderJobNo(), "orderJobNo", packBean);
// List<MesEpEquipmentCheckDetail> details = equDetailRepository.findByHqlWhere(packBean);
// return details.stream().map(MesEpEquipmentCheckDetail::getWorkCellCode).distinct().collect(Collectors.toList());
// }
//
// @Override
// public void generateWeekCheck(String organizeCode,String workCenterCode) {
// generateOrderJob(organizeCode,workCenterCode,MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue());
// }
//
// @Override
// public void generateMonthCheck(String organizeCode,String workCenterCode) {
// generateOrderJob(organizeCode,workCenterCode,MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue());
// }
//
// //生产单据作业
// private void generateOrderJob(String organizeCode, String workCenterCode, String checkType) {
// List<MesEpEquipmentCheck> mesEquipmentChecks = findEquByCenterCode(organizeCode, workCenterCode, checkType);
// if (!CollectionUtils.isEmpty(mesEquipmentChecks)) {
// MesWorkCenterExt workCenter = getWorkCenter(workCenterCode, organizeCode);
// //根据设备编号来进行分组
// Map<String, List<MesEpEquipmentCheck>> resultMap = mesEquipmentChecks.stream().filter(mesEquipmentCheck -> mesEquipmentCheck.getEquNo() != null && !StringUtils.isEmpty(mesEquipmentCheck.getEquNo())).collect(Collectors.groupingBy(MesEpEquipmentCheck::getEquNo));
// for (String key: resultMap.keySet()){
// MesOrderJob newOrderJob = new MesOrderJob();
// newOrderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
// newOrderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue());
// newOrderJob.setOrderNo(getOrderNo(organizeCode));
// newOrderJob.setWorkCenterCode(workCenterCode);
// newOrderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
// newOrderJob.setOrderDate(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setWorkTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setGenerateTime(DateUtil.formatDate("yyyy-MM-dd", new Date()));
// newOrderJob.setOrganizeCode(organizeCode);
// newOrderJob.setIsValid(MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue());
// newOrderJob.setIsDeleted(MesEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// newOrderJob.setCreateDatetime(DateUtil.formatDate());
// newOrderJob.setModifyDatetime(DateUtil.formatDate());
// newOrderJob.setCheckType(checkType);
// newOrderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.MANUALLY_CREATE.getValue());
// newOrderJob.setShiftCode(workCenter.getShiftCode());
//
// MesOrderJob job = mesOrderJobRepository.save(newOrderJob);
//
// List<MesEpEquipmentCheck> epEquipmentChecks = resultMap.get(key);
//
// for (MesEpEquipmentCheck mesEquipmentCheck : epEquipmentChecks) {
// MesEpEquipmentCheckDetail mesEquipmentCheckDetail = new MesEpEquipmentCheckDetail();
// mesEquipmentCheckDetail.setOrderJobNo(job.getOrderNo());
// BeanUtils.copyProperties(mesEquipmentCheck, mesEquipmentCheckDetail, MesPcnExtConstWords.ID);
// mesEquipmentCheckDetail.setCheckType(checkType);
// mesEquipmentCheckDetail.setEquNo(mesEquipmentCheck.getEquNo());
// mesEquipmentCheckDetail.setResultType(mesEquipmentCheck.getResultType());
// mesEquipmentCheckDetail.setEquName(mesEquipmentCheck.getEquName());
// mesEquipmentCheckDetail.setShiftCode(workCenter.getShiftCode());
// mesEquipmentCheckDetail.setStandardValue(mesEquipmentCheck.getStandardValue());
// mesEquipmentCheckDetail.setDownLimit(mesEquipmentCheck.getDownLimit());
// mesEquipmentCheckDetail.setUpLimit(mesEquipmentCheck.getUpLimit());
// mesEquipmentCheckDetail.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
// equDetailRepository.save(mesEquipmentCheckDetail);
// }
// }
// }
//
//
// }
//
// public List<MesEpEquipmentCheck> findEquByCenterCode(String organizeCode, String workCenterCode, String checkType) {
// DdlPackBean ddlPackBean2 = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(checkType, "checkType", ddlPackBean2);
// DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean2);
// return epEquipmentCheckRepository.findByHqlWhere(ddlPackBean2);
//
// }
//
// private String getOrderNo(String organizeCode) {
// String orderNo = "";
// BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
// if (oneCodeResult != null && oneCodeResult.isSuccess()) {
// orderNo = oneCodeResult.getResultList().get(0).toString();
// } else {
// throwImppException(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode(),ImppExceptionEnum.SYSTEM_EXCEPTION.getCode(),"生成唯一工单号失败");
// }
// return orderNo;
// }
//
//
// /**
// * 异常
// *
// * @param softTypeCode softTypeCode
// * @param errorDetailString 错误消息字符串
// * @param imppExceptionEnumCode 异常代码
// * @param args 参数
// */
// private void throwImppException(String softTypeCode, String errorDetailString, String imppExceptionEnumCode, Object... args) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(softTypeCode)
// .setErrorCode(imppExceptionEnumCode)
// .setErrorDetail(errorDetailString, args)
// .build();
// }
//}

@ -1,257 +1,257 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ICheckErrorLogService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkOrderStartService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
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 org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author wangjie
* @version 1.0
* @date 2021/1/13 9:28
**/
@Slf4j
@Service("qManageOrderService")
public class QManageOrderService implements IWorkOrderStartService {
@Autowired
private MesWorkCenterExtRepository workCenterExtRepository;
@Autowired
private MesOrderRuleRepository orderRuleRepository;
@Autowired
private MesProcessCellRepository processCellRepository;
@Autowired
private MesProcessQManageRepository processQManageRepository;
@Autowired
private MesOrderJobRepository orderJobRepository;
@Autowired
private MesQManageTaskDetailRepository qManageTaskDetailRepository;
@Autowired
private ISyncFuncService syncFuncService;
@Autowired
private ICheckErrorLogService checkErrorLogService;
@Override
public void doGenCheckOrder(MesWorkOrderExt workOrderExt, String userInfo) {
MesCheckErrorLog checkErrorLog = new MesCheckErrorLog();
checkErrorLog.setGenerationMethod(MesPcnExtEnumUtil.GENERATION_METHOD.FROM_WORK_ORDER_START.getValue());
checkErrorLog.setGeneratingModule(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getDescription());
String msg;
try {
MesWorkCenterExt workCenterExt = workCenterExtRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workOrderExt.getWorkCenterCode()});
if (null == workCenterExt) {
msg = String.format("Q管理生成单据:工单[%s]生产线[%s]无效", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
msg = String.format("Q管理生成单据:工单[%s]生产线[%s]未启动班次", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
List<MesOrderRule> orderRuleList = orderRuleRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED,
MesPcnExtConstWords.ORDER_TYPE, MesPcnExtConstWords.CREATE_RULE, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(), workOrderExt.getWorkCenterCode()});
Optional<MesOrderRule> orderRuleOp = CollectionUtils.isEmpty(orderRuleList) ? null :
orderRuleList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getShiftCode()) && o.getShiftCode().equals(workCenterExt.getShiftCode()))).findFirst();
if (null == orderRuleOp || !orderRuleOp.isPresent()) {
orderRuleOp = CollectionUtils.isEmpty(orderRuleList) ? null : orderRuleList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getShiftCode()))).findFirst();
}
if (null == orderRuleOp || !orderRuleOp.isPresent()) {
msg = String.format("Q管理生成单据:工单[%s]未配置生产线代码[%s][工单创建][Q管理]班次为[%s]或班次为空的单据规则信息,请检查", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode(), workCenterExt.getShiftCode());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
List<MesProcessCell> processCellList = processCellRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workOrderExt.getWorkCenterCode()});
Map<String, List<MesProcessCell>> processCodeMap = CollectionUtils.isEmpty(processCellList) ? null :
processCellList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(MesProcessCell::getProcessCode));
if (CollectionUtils.isEmpty(processCodeMap)) {
msg = String.format("Q管理生成单据:工单[%s]生产线代码[%s]未维护工序工位信息", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
List<String> processCodeList = new ArrayList<>(processCodeMap.keySet());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderExt.getPartNo(), MesPcnExtConstWords.PART_NO, packBean);
DdlPreparedPack.getInPackList(processCodeList, MesPcnExtConstWords.PROCESS_CODE, packBean);
List<MesProcessQManage> processQManageList = processQManageRepository.findByHqlWhere(packBean);
processQManageList = CollectionUtils.isEmpty(processQManageList) ? null :processQManageList.stream().filter(o-> StringUtils.isEmpty(o.getCheckType()) || o.getCheckType().equals(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.ORDER_CHECK.getValue())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(processQManageList)) {
msg = String.format("Q管理生成单据:工单[%s]物料编码[%s]与工序代码%s未配置Q管理项目信息,请检查", workOrderExt.getOrderNo(), workOrderExt.getPartNo(), processCodeList.toString());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
//根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息
packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
DdlPreparedPack.getStringEqualPack(workOrderExt.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(workCenterExt.getShiftCode(), MesPcnExtConstWords.SHIFT_CODE, packBean);
DdlPreparedPack.getStringEqualPack(workCenterExt.getWorkTime(), MesPcnExtConstWords.WORK_TIME, packBean);
DdlPreparedPack.getStringEqualPack(workOrderExt.getOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
List<MesOrderJob> orderJobList = orderJobRepository.findByHqlWhere(packBean);
if (CollectionUtils.isEmpty(orderJobList)) {
String orderNo = insertMesOrderJob(workOrderExt, workCenterExt, orderRuleOp.get().getTaskType(), userInfo, checkErrorLog);
if (StringUtils.isEmpty(orderNo)) {
return;
}
insertMesQManageTaskDetail(orderNo, processQManageList, processCodeMap, userInfo);
}else {
msg = String.format("Q管理点检生成单据:工单[%s]已经生成过Q管理作业点检单", workOrderExt.getOrderNo());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return;
}
/*else {
//根据作业单号查询明细数据
List<MesQManageTaskDetail> qManageTaskDetailList = new ArrayList<>();
List<String> orderNoList = orderJobList.stream().filter(o -> null != o).map(MesOrderJob::getOrderNo).collect(Collectors.toList());
for (String orderNo : orderNoList) {
if (StringUtils.isEmpty(orderNo)) {
continue;
}
packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderNo, MesPcnExtConstWords.ORDER_NO, packBean);
qManageTaskDetailList.addAll(qManageTaskDetailRepository.findByHqlWhere(packBean));
}
Map<String, List<MesProcessQManage>> processQManageDbMap = CollectionUtils.isEmpty(processQManageList) ? null :
processQManageList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND)
.add(o.getProcessCode()).add(o.getPartNo()).add(o.getManageProjects()).add(o.getScrewType()).add(o.getTighteningTorque()).toString()));
Map<String, List<MesQManageTaskDetail>> qManageTaskDetailDbMap = CollectionUtils.isEmpty(qManageTaskDetailList) ? null :
qManageTaskDetailList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND)
.add(o.getProcessCode()).add(o.getPartNo()).add(o.getManageProjects()).add(o.getScrewType()).add(o.getTighteningTorque()).toString()));
List<MesProcessQManage> newProcessQManageList = null;
//获取两个存在差异的数据
for (String key : processQManageDbMap.keySet()) {
if (CollectionUtils.isEmpty(qManageTaskDetailDbMap) || !qManageTaskDetailDbMap.containsKey(key)) {
if (CollectionUtils.isEmpty(newProcessQManageList)) {
newProcessQManageList = new ArrayList<>();
}
newProcessQManageList.addAll(processQManageDbMap.get(key));
}
}
if (!CollectionUtils.isEmpty(newProcessQManageList)) {
String orderNo = insertMesOrderJob(workOrderExt, workCenterExt, orderRuleOp.get().getTaskType(), userInfo, checkErrorLog);
if (StringUtils.isEmpty(orderNo)) {
return;
}
insertMesQManageTaskDetail(orderNo, newProcessQManageList, processCodeMap, userInfo);
}
}*/
} catch (Exception e) {
checkErrorLogService.insertCheckErrorLog(checkErrorLog, e.getMessage(), userInfo);
log.info(e.getMessage());
}
}
private String insertMesOrderJob(MesWorkOrderExt workOrderExt, MesWorkCenterExt workCenterExt, Integer taskType, String userInfo, MesCheckErrorLog checkErrorLog){
List<String> orderNoList = getOrderNoByRuleCode(1,
MesPcnExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), userInfo, workOrderExt.getOrganizeCode());
if (CollectionUtils.isEmpty(orderNoList)) {
String msg = String.format("Q管理生成单据:工单[%s]单据编号未生成成功", workOrderExt.getOrderNo());
log.info(msg);
checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
return null;
}
MesOrderJob orderJob = new MesOrderJob();
orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
orderJob.setTaskType(taskType);
orderJob.setOrderNo(orderNoList.get(0));
orderJob.setWorkCenterCode(workOrderExt.getWorkCenterCode());
orderJob.setShiftCode(workCenterExt.getShiftCode());
orderJob.setWorkOrderNo(workOrderExt.getOrderNo());
orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
orderJob.setWorkTime(workCenterExt.getWorkTime());
orderJob.setOrderDate(TimeTool.getToday());
orderJob.setGenerateTime(TimeTool.getNowTime(true));
orderJob.setOrganizeCode(workOrderExt.getOrganizeCode());
ConvertBean.serviceModelInitialize(orderJob, userInfo);
orderJobRepository.insert(orderJob);
return orderJob.getOrderNo();
}
private void insertMesQManageTaskDetail(String orderNo, List<MesProcessQManage> processQManageList, Map<String, List<MesProcessCell>> processCodeMap, String userInfo){
for(MesProcessQManage processQManage : processQManageList){
if (null == processQManage) {
continue;
}
MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
BeanUtils.copyProperties(processQManage, qManageTaskDetail, MesPcnExtConstWords.ID);
qManageTaskDetail.setOrderNo(orderNo);
List<MesProcessCell> processCellList = processCodeMap.get(processQManage.getProcessCode());
if (!CollectionUtils.isEmpty(processCellList)) {
qManageTaskDetail.setWorkCellCode(processCellList.get(0).getWorkCellCode());
qManageTaskDetail.setWorkCellName(processCellList.get(0).getWorkCellName());
qManageTaskDetail.setProcessName(processCellList.get(0).getProcessName());
}
qManageTaskDetail.setIsTeamConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
qManageTaskDetail.setIsQualityConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
qManageTaskDetail.setCheckType(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.ORDER_CHECK.getValue());
ConvertBean.serviceModelInitialize(qManageTaskDetail, userInfo);
qManageTaskDetailRepository.insert(qManageTaskDetail);
}
}
public List<String> getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) {
genSerialNoModel.setRuleCode(ruleCode);
BaseResultBean<String> serialNumberBean;
try {
serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number));
} catch (Exception e) {
return null;
}
if (serialNumberBean != null && serialNumberBean.isSuccess()) {
return serialNumberBean.getResultList();
} else {
return null;
}
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.ICheckErrorLogService;
//import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkOrderStartService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
//import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
//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 org.springframework.util.StringUtils;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * @author wangjie
// * @version 1.0
// * @date 2021/1/13 9:28
// **/
//@Slf4j
//@Service("qManageOrderService")
//public class QManageOrderService implements IWorkOrderStartService {
//
// @Autowired
// private MesWorkCenterExtRepository workCenterExtRepository;
//
// @Autowired
// private MesOrderRuleRepository orderRuleRepository;
//
// @Autowired
// private MesProcessCellRepository processCellRepository;
//
// @Autowired
// private MesProcessQManageRepository processQManageRepository;
//
// @Autowired
// private MesOrderJobRepository orderJobRepository;
//
// @Autowired
// private MesQManageTaskDetailRepository qManageTaskDetailRepository;
//
// @Autowired
// private ISyncFuncService syncFuncService;
//
// @Autowired
// private ICheckErrorLogService checkErrorLogService;
//
// @Override
// public void doGenCheckOrder(MesWorkOrderExt workOrderExt, String userInfo) {
// MesCheckErrorLog checkErrorLog = new MesCheckErrorLog();
// checkErrorLog.setGenerationMethod(MesPcnExtEnumUtil.GENERATION_METHOD.FROM_WORK_ORDER_START.getValue());
// checkErrorLog.setGeneratingModule(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getDescription());
//
// String msg;
// try {
// MesWorkCenterExt workCenterExt = workCenterExtRepository.getByProperty(
// new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
// new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workOrderExt.getWorkCenterCode()});
// if (null == workCenterExt) {
// msg = String.format("Q管理生成单据:工单[%s]生产线[%s]无效", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
// if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
// msg = String.format("Q管理生成单据:工单[%s]生产线[%s]未启动班次", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
// List<MesOrderRule> orderRuleList = orderRuleRepository.findByProperty(
// new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED,
// MesPcnExtConstWords.ORDER_TYPE, MesPcnExtConstWords.CREATE_RULE, MesPcnExtConstWords.WORK_CENTER_CODE},
// new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
// MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(), workOrderExt.getWorkCenterCode()});
// Optional<MesOrderRule> orderRuleOp = CollectionUtils.isEmpty(orderRuleList) ? null :
// orderRuleList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getShiftCode()) && o.getShiftCode().equals(workCenterExt.getShiftCode()))).findFirst();
// if (null == orderRuleOp || !orderRuleOp.isPresent()) {
// orderRuleOp = CollectionUtils.isEmpty(orderRuleList) ? null : orderRuleList.stream().filter(o -> (null != o && StringUtils.isEmpty(o.getShiftCode()))).findFirst();
// }
// if (null == orderRuleOp || !orderRuleOp.isPresent()) {
// msg = String.format("Q管理生成单据:工单[%s]未配置生产线代码[%s][工单创建][Q管理]班次为[%s]或班次为空的单据规则信息,请检查", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode(), workCenterExt.getShiftCode());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
//
// List<MesProcessCell> processCellList = processCellRepository.findByProperty(
// new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
// new Object[]{workOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workOrderExt.getWorkCenterCode()});
// Map<String, List<MesProcessCell>> processCodeMap = CollectionUtils.isEmpty(processCellList) ? null :
// processCellList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(MesProcessCell::getProcessCode));
// if (CollectionUtils.isEmpty(processCodeMap)) {
// msg = String.format("Q管理生成单据:工单[%s]生产线代码[%s]未维护工序工位信息", workOrderExt.getOrderNo(), workOrderExt.getWorkCenterCode());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
// List<String> processCodeList = new ArrayList<>(processCodeMap.keySet());
//
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(workOrderExt.getPartNo(), MesPcnExtConstWords.PART_NO, packBean);
// DdlPreparedPack.getInPackList(processCodeList, MesPcnExtConstWords.PROCESS_CODE, packBean);
// List<MesProcessQManage> processQManageList = processQManageRepository.findByHqlWhere(packBean);
// processQManageList = CollectionUtils.isEmpty(processQManageList) ? null :processQManageList.stream().filter(o-> StringUtils.isEmpty(o.getCheckType()) || o.getCheckType().equals(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.ORDER_CHECK.getValue())).collect(Collectors.toList());
// if (CollectionUtils.isEmpty(processQManageList)) {
// msg = String.format("Q管理生成单据:工单[%s]物料编码[%s]与工序代码%s未配置Q管理项目信息,请检查", workOrderExt.getOrderNo(), workOrderExt.getPartNo(), processCodeList.toString());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
//
// //根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息
// packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
// DdlPreparedPack.getStringEqualPack(workOrderExt.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterExt.getShiftCode(), MesPcnExtConstWords.SHIFT_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterExt.getWorkTime(), MesPcnExtConstWords.WORK_TIME, packBean);
// DdlPreparedPack.getStringEqualPack(workOrderExt.getOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
// List<MesOrderJob> orderJobList = orderJobRepository.findByHqlWhere(packBean);
// if (CollectionUtils.isEmpty(orderJobList)) {
// String orderNo = insertMesOrderJob(workOrderExt, workCenterExt, orderRuleOp.get().getTaskType(), userInfo, checkErrorLog);
// if (StringUtils.isEmpty(orderNo)) {
// return;
// }
// insertMesQManageTaskDetail(orderNo, processQManageList, processCodeMap, userInfo);
// }else {
// msg = String.format("Q管理点检生成单据:工单[%s]已经生成过Q管理作业点检单", workOrderExt.getOrderNo());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return;
// }
// /*else {
// //根据作业单号查询明细数据
// List<MesQManageTaskDetail> qManageTaskDetailList = new ArrayList<>();
// List<String> orderNoList = orderJobList.stream().filter(o -> null != o).map(MesOrderJob::getOrderNo).collect(Collectors.toList());
// for (String orderNo : orderNoList) {
// if (StringUtils.isEmpty(orderNo)) {
// continue;
// }
// packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(orderNo, MesPcnExtConstWords.ORDER_NO, packBean);
// qManageTaskDetailList.addAll(qManageTaskDetailRepository.findByHqlWhere(packBean));
// }
//
// Map<String, List<MesProcessQManage>> processQManageDbMap = CollectionUtils.isEmpty(processQManageList) ? null :
// processQManageList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND)
// .add(o.getProcessCode()).add(o.getPartNo()).add(o.getManageProjects()).add(o.getScrewType()).add(o.getTighteningTorque()).toString()));
//
// Map<String, List<MesQManageTaskDetail>> qManageTaskDetailDbMap = CollectionUtils.isEmpty(qManageTaskDetailList) ? null :
// qManageTaskDetailList.stream().filter(o -> null != o).collect(Collectors.groupingBy(o -> new StringJoiner(MesPcnExtConstWords.AND)
// .add(o.getProcessCode()).add(o.getPartNo()).add(o.getManageProjects()).add(o.getScrewType()).add(o.getTighteningTorque()).toString()));
//
// List<MesProcessQManage> newProcessQManageList = null;
// //获取两个存在差异的数据
// for (String key : processQManageDbMap.keySet()) {
// if (CollectionUtils.isEmpty(qManageTaskDetailDbMap) || !qManageTaskDetailDbMap.containsKey(key)) {
// if (CollectionUtils.isEmpty(newProcessQManageList)) {
// newProcessQManageList = new ArrayList<>();
// }
// newProcessQManageList.addAll(processQManageDbMap.get(key));
// }
// }
//
// if (!CollectionUtils.isEmpty(newProcessQManageList)) {
// String orderNo = insertMesOrderJob(workOrderExt, workCenterExt, orderRuleOp.get().getTaskType(), userInfo, checkErrorLog);
// if (StringUtils.isEmpty(orderNo)) {
// return;
// }
// insertMesQManageTaskDetail(orderNo, newProcessQManageList, processCodeMap, userInfo);
// }
// }*/
// } catch (Exception e) {
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, e.getMessage(), userInfo);
// log.info(e.getMessage());
// }
//
// }
//
//
// private String insertMesOrderJob(MesWorkOrderExt workOrderExt, MesWorkCenterExt workCenterExt, Integer taskType, String userInfo, MesCheckErrorLog checkErrorLog){
// List<String> orderNoList = getOrderNoByRuleCode(1,
// MesPcnExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), userInfo, workOrderExt.getOrganizeCode());
// if (CollectionUtils.isEmpty(orderNoList)) {
// String msg = String.format("Q管理生成单据:工单[%s]单据编号未生成成功", workOrderExt.getOrderNo());
// log.info(msg);
// checkErrorLogService.insertCheckErrorLog(checkErrorLog, msg, userInfo);
// return null;
// }
// MesOrderJob orderJob = new MesOrderJob();
// orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
// orderJob.setTaskType(taskType);
// orderJob.setOrderNo(orderNoList.get(0));
// orderJob.setWorkCenterCode(workOrderExt.getWorkCenterCode());
// orderJob.setShiftCode(workCenterExt.getShiftCode());
// orderJob.setWorkOrderNo(workOrderExt.getOrderNo());
// orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
// orderJob.setWorkTime(workCenterExt.getWorkTime());
// orderJob.setOrderDate(TimeTool.getToday());
// orderJob.setGenerateTime(TimeTool.getNowTime(true));
// orderJob.setOrganizeCode(workOrderExt.getOrganizeCode());
// ConvertBean.serviceModelInitialize(orderJob, userInfo);
// orderJobRepository.insert(orderJob);
// return orderJob.getOrderNo();
// }
//
// private void insertMesQManageTaskDetail(String orderNo, List<MesProcessQManage> processQManageList, Map<String, List<MesProcessCell>> processCodeMap, String userInfo){
// for(MesProcessQManage processQManage : processQManageList){
// if (null == processQManage) {
// continue;
// }
// MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
// BeanUtils.copyProperties(processQManage, qManageTaskDetail, MesPcnExtConstWords.ID);
// qManageTaskDetail.setOrderNo(orderNo);
//
// List<MesProcessCell> processCellList = processCodeMap.get(processQManage.getProcessCode());
// if (!CollectionUtils.isEmpty(processCellList)) {
// qManageTaskDetail.setWorkCellCode(processCellList.get(0).getWorkCellCode());
// qManageTaskDetail.setWorkCellName(processCellList.get(0).getWorkCellName());
// qManageTaskDetail.setProcessName(processCellList.get(0).getProcessName());
// }
// qManageTaskDetail.setIsTeamConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// qManageTaskDetail.setIsQualityConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// qManageTaskDetail.setCheckType(MesPcnExtEnumUtil.MES_Q_MANAGER_CHECK_TYPE.ORDER_CHECK.getValue());
// ConvertBean.serviceModelInitialize(qManageTaskDetail, userInfo);
// qManageTaskDetailRepository.insert(qManageTaskDetail);
// }
// }
//
// public List<String> getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) {
// genSerialNoModel.setRuleCode(ruleCode);
// BaseResultBean<String> serialNumberBean;
// try {
// serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number));
// } catch (Exception e) {
// return null;
// }
// if (serialNumberBean != null && serialNumberBean.isSuccess()) {
// return serialNumberBean.getResultList();
// } else {
// return null;
// }
// }
//
//}

@ -1,297 +1,297 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job.ep;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkCenterExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.job.ep.IEpEquipmentCheckOrderService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
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 org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-dev
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2021-12-13 13:41
*/
@Slf4j
@Service
public class EpEquipmentCheckOrderService implements IEpEquipmentCheckOrderService {
@Autowired
private MesEpEquipmentCheckRepository equipmentCheckRepository;
@Autowired
private MesOrderRuleRepository orderRuleRepository;
@Autowired
private MesOrderJobRepository orderJobRepository;
@Autowired
private MesWorkOrderExtRepository workOrderExtRepository;
@Autowired
private MesEpEquipmentCheckDetailRepository equipmentCheckDetailRepository;
@Autowired
private IWorkCenterExtService workCenterExtService;
@Autowired
private ISyncFuncService syncFuncService;
@Override
public void doHandleEquipmentCheckOrder(String organizeCode) {
List<String> checkTypeList = getCheckTypelist();
for (String checkType : checkTypeList) {
if (StringUtils.isEmpty(checkType)) {
continue;
}
Boolean isSuccess = false;
List<MesEpEquipmentCheck> equipmentCheckList = getEquipmentCheckList(organizeCode, checkType);
if (CollectionUtils.isEmpty(equipmentCheckList)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,未配置[{}]类型的设备点检项目",
MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType));
continue;
}
List<String> workCenterCodeList = (equipmentCheckList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode())))
.map(MesEpEquipmentCheck::getWorkCenterCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成包含以下生产线{}",
MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), workCenterCodeList.toString());
for (String workCenterCode : workCenterCodeList) {
if (StringUtils.isEmpty(workCenterCode)) {
continue;
}
List<MesOrderRule> orderRuleList = getOrderRuleList(organizeCode, workCenterCode, checkType);
if (CollectionUtils.isEmpty(orderRuleList)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成,生产线[{}]未配置单据规则",
MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), workCenterCode);
continue;
}
List<MesWorkOrderExt> workOrderExtList = null;
if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
workOrderExtList = findWorkOrderList(organizeCode, workCenterCode);
}
for (MesOrderRule orderRule : orderRuleList) {
if (null == orderRule || StringUtils.isEmpty(orderRule.getProduceTime())) {
continue;
}
Boolean flag = false;
String produceTime = orderRule.getProduceTime() + MesPcnExtConstWords.APPEND_SECONDS;
String shiftCode = getCurShiftCode(organizeCode, workCenterCode, TimeTool.getToday());
if (StringUtils.isEmpty(orderRule.getShiftCode()) || StringUtils.isEmpty(shiftCode)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]设备点检单据存在生成时间[{}]的单据未配置班次或生产线未启动班次", workCenterCode, produceTime);
continue;
}
if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
if (TimeTool.stringParseToDate(TimeTool.getNowTime(MesPcnExtConstWords.TIME_FORMAT)).compareTo(TimeTool.stringParseToDate(produceTime)) >= 0) {
List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, checkType, produceTime);
if (CollectionUtils.isEmpty(orderJobList)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
if (CollectionUtils.isEmpty(workOrderExtList)) {
log.info("Pcn处理设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据,但未查询到启动或下达的工单",
workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
continue;
}
flag = true;
}
}
} else {
List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, checkType, produceTime);
if (CollectionUtils.isEmpty(orderJobList)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
flag = true;
}
}
if (flag) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]正在生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
List<MesEpEquipmentCheck> equipmentCheckListTemp = equipmentCheckList.stream().filter(o -> (null != o && o.getWorkCenterCode().equals(workCenterCode))).collect(Collectors.toList());
Map<String, List<MesEpEquipmentCheck>> resultMap = equipmentCheckListTemp.stream().filter(mesEquipmentCheck -> mesEquipmentCheck != null && !StringUtils.isEmpty(mesEquipmentCheck.getEquNo())).collect(Collectors.groupingBy(MesEpEquipmentCheck::getEquNo));
List<String> orderNoList= getOrderNo(organizeCode,resultMap.size());
if (CollectionUtils.isEmpty(orderNoList)) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]生成类型[{}]生成时间[{}]班次[{}]的设备点检单据时生成单据号失败",
workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
continue;
}
insertEquipmentCheckOrder(organizeCode, workCenterCode, shiftCode, checkType, produceTime, orderNoList, resultMap);
isSuccess = true;
}
}
}
if (isSuccess) {
log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成成功",
MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType));
break;
}
}
}
private String getCurShiftCode(String organizeCode, String workCenterCode, String workTime) {
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterAndTime(organizeCode, workCenterCode, workTime);
if (null != workCenterExt) {
return workCenterExt.getShiftCode();
}
return null;
}
private void insertEquipmentCheckOrder(String organizeCode, String workCenterCode, String shiftCode, String checkType, String produceTime, List<String> orderNoList, Map<String, List<MesEpEquipmentCheck>> resultMap) {
int orderNoIndex = 0;
for (String equNo : resultMap.keySet()) {
List<MesEpEquipmentCheck> itemList = resultMap.get(equNo);
MesOrderJob orderJob = new MesOrderJob();
orderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue());
orderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue());
orderJob.setOrderNo(orderNoList.get(orderNoIndex));
orderJob.setWorkCenterCode(workCenterCode);
orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
orderJob.setOrderDate(TimeTool.getToday());
orderJob.setWorkTime(orderJob.getOrderDate());
orderJob.setGenerateTime(orderJob.getOrderDate() + MesPcnExtConstWords.ONE_SPACE + produceTime);
orderJob.setCheckType(checkType);
orderJob.setShiftCode(shiftCode);
List<String> collect = (itemList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCellCode())))
.map(MesEpEquipmentCheck::getWorkCellCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
String cellCollect = org.apache.commons.lang.StringUtils.join(collect, MesPcnExtConstWords.COMMA);
orderJob.setCellCollect(cellCollect);
orderJob.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(orderJob, MesPcnExtConstWords.JOB);
orderJobRepository.insert(orderJob);
for (MesEpEquipmentCheck mesEquipmentCheck : itemList) {
MesEpEquipmentCheckDetail equipmentCheckDetail = new MesEpEquipmentCheckDetail();
BeanUtils.copyProperties(mesEquipmentCheck, equipmentCheckDetail, MesPcnExtConstWords.ID);
equipmentCheckDetail.setOrderJobNo(orderNoList.get(orderNoIndex));
equipmentCheckDetail.setCheckType(checkType);
equipmentCheckDetail.setEquNo(mesEquipmentCheck.getEquNo());
equipmentCheckDetail.setEquName(mesEquipmentCheck.getEquName());
equipmentCheckDetail.setShiftCode(shiftCode);
equipmentCheckDetail.setIsTeamConfirm(MesPcnExtEnumUtil.SHIFT_GROUP_CHECK.NO.getValue());
equipmentCheckDetail.setIsQualityConfirm(MesPcnExtEnumUtil.QUALITY_CHECK.NO.getValue());
equipmentCheckDetail.setOrganizeCode(organizeCode);
equipmentCheckDetail.setStandardValue(mesEquipmentCheck.getStandardValue());
equipmentCheckDetail.setDownLimit(mesEquipmentCheck.getDownLimit());
equipmentCheckDetail.setUpLimit(mesEquipmentCheck.getUpLimit());
equipmentCheckDetail.setResultType(mesEquipmentCheck.getResultType());
ConvertBean.serviceModelInitialize(equipmentCheckDetail, MesPcnExtConstWords.JOB);
equipmentCheckDetailRepository.insert(equipmentCheckDetail);
}
orderNoIndex++;
}
}
private List<String> getOrderNo(String organizeCode,int num) {
try {
BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, num);
log.info("获取生成单号的数量:{}",oneCodeResult.getResultList().size());
if (oneCodeResult != null && oneCodeResult.isSuccess()) {
return oneCodeResult.getResultList();
}
} catch (Exception e) {
}
return null;
}
private List<MesWorkOrderExt> findWorkOrderList(String organizeCode, String workCenterCode) {
List<MesWorkOrderExt> workOrderExtList = null;
List<MesWorkOrderExt> openList = getWorkOrderList(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue());
List<MesWorkOrderExt> landedList = getWorkOrderList(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
if (!CollectionUtils.isEmpty(openList) || !CollectionUtils.isEmpty(landedList)) {
workOrderExtList = new ArrayList<>();
if (!CollectionUtils.isEmpty(openList)) {
workOrderExtList.addAll(openList);
}
if (!CollectionUtils.isEmpty(landedList)) {
workOrderExtList.addAll(landedList);
}
}
return workOrderExtList;
}
private List<MesWorkOrderExt> getWorkOrderList(String organizeCode, String workCenterCode, Integer workOrderStatus) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(workOrderStatus, MesPcnExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
return workOrderExtRepository.findByHqlWhere(packBean);
}
private List<MesOrderJob> getOrderJobList(String organizeCode, String workCenterCode, String shiftCode, String checkType, String produceTime) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue(), MesPcnExtConstWords.HANDLER_METHOD, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(shiftCode, MesPcnExtConstWords.SHIFT_CODE, packBean);
DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
String nowProduceTime = TimeTool.getToday() + MesPcnExtConstWords.ONE_SPACE + produceTime;
String lastProduceTime;
if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
DdlPreparedPack.getStringEqualPack(nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean);
} else if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue())) {
lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.DAY_OF_YEAR, -7, MesPcnExtConstWords.DATETIME_FORMAT);
DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
} else if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue())) {
lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.DAY_OF_YEAR, -30, MesPcnExtConstWords.DATETIME_FORMAT);
DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
} else {
lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.YEAR, -1, MesPcnExtConstWords.DATETIME_FORMAT);
DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
}
return orderJobRepository.findByHqlWhere(packBean);
}
private List<MesOrderRule> getOrderRuleList(String organizeCode, String workCenterCode, String checkType) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_CREATE_RULE.TIME_TO_CREATE.getValue(), MesPcnExtConstWords.CREATE_RULE, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
return orderRuleRepository.findByHqlWhere(packBean);
}
private List<String> getCheckTypelist() {
List<String> checkTypeList = new ArrayList<>();
String dayCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue();
String weekCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue();
String monthCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue();
checkTypeList.add(weekCheck);
checkTypeList.add(dayCheck);
checkTypeList.add(monthCheck);
return checkTypeList;
}
private List<MesEpEquipmentCheck> getEquipmentCheckList(String organizeCode, String checkType) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
return equipmentCheckRepository.findByHqlWhere(packBean);
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job.ep;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkCenterExtService;
//import cn.estsh.i3plus.ext.mes.pcn.api.job.ep.IEpEquipmentCheckOrderService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
//import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
//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 org.springframework.util.StringUtils;
//
//import java.util.ArrayList;
//import java.util.Calendar;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @PROJECT_NAME: i3plus-mes-panasonic-dev
// * @DESCRIPTION:
// * @USER: xinwang.yi
// * @DATE: 2021-12-13 13:41
// */
//@Slf4j
//@Service
//public class EpEquipmentCheckOrderService implements IEpEquipmentCheckOrderService {
// @Autowired
// private MesEpEquipmentCheckRepository equipmentCheckRepository;
//
// @Autowired
// private MesOrderRuleRepository orderRuleRepository;
//
// @Autowired
// private MesOrderJobRepository orderJobRepository;
//
// @Autowired
// private MesWorkOrderExtRepository workOrderExtRepository;
//
// @Autowired
// private MesEpEquipmentCheckDetailRepository equipmentCheckDetailRepository;
//
// @Autowired
// private IWorkCenterExtService workCenterExtService;
//
// @Autowired
// private ISyncFuncService syncFuncService;
//
// @Override
// public void doHandleEquipmentCheckOrder(String organizeCode) {
// List<String> checkTypeList = getCheckTypelist();
//
// for (String checkType : checkTypeList) {
// if (StringUtils.isEmpty(checkType)) {
// continue;
// }
// Boolean isSuccess = false;
// List<MesEpEquipmentCheck> equipmentCheckList = getEquipmentCheckList(organizeCode, checkType);
// if (CollectionUtils.isEmpty(equipmentCheckList)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,未配置[{}]类型的设备点检项目",
// MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType));
// continue;
// }
// List<String> workCenterCodeList = (equipmentCheckList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode())))
// .map(MesEpEquipmentCheck::getWorkCenterCode).collect(Collectors.toList()))
// .stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成包含以下生产线{}",
// MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), workCenterCodeList.toString());
// for (String workCenterCode : workCenterCodeList) {
// if (StringUtils.isEmpty(workCenterCode)) {
// continue;
// }
// List<MesOrderRule> orderRuleList = getOrderRuleList(organizeCode, workCenterCode, checkType);
// if (CollectionUtils.isEmpty(orderRuleList)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成,生产线[{}]未配置单据规则",
// MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), workCenterCode);
// continue;
// }
//
// List<MesWorkOrderExt> workOrderExtList = null;
// if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
// workOrderExtList = findWorkOrderList(organizeCode, workCenterCode);
// }
//
// for (MesOrderRule orderRule : orderRuleList) {
// if (null == orderRule || StringUtils.isEmpty(orderRule.getProduceTime())) {
// continue;
// }
// Boolean flag = false;
// String produceTime = orderRule.getProduceTime() + MesPcnExtConstWords.APPEND_SECONDS;
// String shiftCode = getCurShiftCode(organizeCode, workCenterCode, TimeTool.getToday());
// if (StringUtils.isEmpty(orderRule.getShiftCode()) || StringUtils.isEmpty(shiftCode)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]设备点检单据存在生成时间[{}]的单据未配置班次或生产线未启动班次", workCenterCode, produceTime);
// continue;
// }
// if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
// if (TimeTool.stringParseToDate(TimeTool.getNowTime(MesPcnExtConstWords.TIME_FORMAT)).compareTo(TimeTool.stringParseToDate(produceTime)) >= 0) {
// List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, checkType, produceTime);
// if (CollectionUtils.isEmpty(orderJobList)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
// workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
// if (CollectionUtils.isEmpty(workOrderExtList)) {
// log.info("Pcn处理设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据,但未查询到启动或下达的工单",
// workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
// continue;
// }
// flag = true;
// }
// }
// } else {
// List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, checkType, produceTime);
// if (CollectionUtils.isEmpty(orderJobList)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]还未生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
// workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
// flag = true;
// }
// }
//
// if (flag) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]正在生成类型[{}]生成时间[{}]班次[{}]的设备点检单据",
// workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
// List<MesEpEquipmentCheck> equipmentCheckListTemp = equipmentCheckList.stream().filter(o -> (null != o && o.getWorkCenterCode().equals(workCenterCode))).collect(Collectors.toList());
// Map<String, List<MesEpEquipmentCheck>> resultMap = equipmentCheckListTemp.stream().filter(mesEquipmentCheck -> mesEquipmentCheck != null && !StringUtils.isEmpty(mesEquipmentCheck.getEquNo())).collect(Collectors.groupingBy(MesEpEquipmentCheck::getEquNo));
//
// List<String> orderNoList= getOrderNo(organizeCode,resultMap.size());
// if (CollectionUtils.isEmpty(orderNoList)) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,生产线[{}]生成类型[{}]生成时间[{}]班次[{}]的设备点检单据时生成单据号失败",
// workCenterCode, MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType), produceTime, shiftCode);
// continue;
// }
// insertEquipmentCheckOrder(organizeCode, workCenterCode, shiftCode, checkType, produceTime, orderNoList, resultMap);
// isSuccess = true;
// }
// }
// }
//
// if (isSuccess) {
// log.info("Pcn处理EP工厂设备点检单据生成JOB,[{}]类型的设备点检单据生成成功",
// MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType));
// break;
// }
// }
// }
//
// private String getCurShiftCode(String organizeCode, String workCenterCode, String workTime) {
// MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterAndTime(organizeCode, workCenterCode, workTime);
// if (null != workCenterExt) {
// return workCenterExt.getShiftCode();
// }
// return null;
// }
//
// private void insertEquipmentCheckOrder(String organizeCode, String workCenterCode, String shiftCode, String checkType, String produceTime, List<String> orderNoList, Map<String, List<MesEpEquipmentCheck>> resultMap) {
// int orderNoIndex = 0;
// for (String equNo : resultMap.keySet()) {
// List<MesEpEquipmentCheck> itemList = resultMap.get(equNo);
//
// MesOrderJob orderJob = new MesOrderJob();
//
// orderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
// orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue());
// orderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue());
// orderJob.setOrderNo(orderNoList.get(orderNoIndex));
// orderJob.setWorkCenterCode(workCenterCode);
// orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
// orderJob.setOrderDate(TimeTool.getToday());
// orderJob.setWorkTime(orderJob.getOrderDate());
// orderJob.setGenerateTime(orderJob.getOrderDate() + MesPcnExtConstWords.ONE_SPACE + produceTime);
// orderJob.setCheckType(checkType);
// orderJob.setShiftCode(shiftCode);
// List<String> collect = (itemList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCellCode())))
// .map(MesEpEquipmentCheck::getWorkCellCode).collect(Collectors.toList()))
// .stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// String cellCollect = org.apache.commons.lang.StringUtils.join(collect, MesPcnExtConstWords.COMMA);
// orderJob.setCellCollect(cellCollect);
// orderJob.setOrganizeCode(organizeCode);
// ConvertBean.serviceModelInitialize(orderJob, MesPcnExtConstWords.JOB);
// orderJobRepository.insert(orderJob);
// for (MesEpEquipmentCheck mesEquipmentCheck : itemList) {
// MesEpEquipmentCheckDetail equipmentCheckDetail = new MesEpEquipmentCheckDetail();
// BeanUtils.copyProperties(mesEquipmentCheck, equipmentCheckDetail, MesPcnExtConstWords.ID);
// equipmentCheckDetail.setOrderJobNo(orderNoList.get(orderNoIndex));
// equipmentCheckDetail.setCheckType(checkType);
// equipmentCheckDetail.setEquNo(mesEquipmentCheck.getEquNo());
// equipmentCheckDetail.setEquName(mesEquipmentCheck.getEquName());
// equipmentCheckDetail.setShiftCode(shiftCode);
// equipmentCheckDetail.setIsTeamConfirm(MesPcnExtEnumUtil.SHIFT_GROUP_CHECK.NO.getValue());
// equipmentCheckDetail.setIsQualityConfirm(MesPcnExtEnumUtil.QUALITY_CHECK.NO.getValue());
// equipmentCheckDetail.setOrganizeCode(organizeCode);
// equipmentCheckDetail.setStandardValue(mesEquipmentCheck.getStandardValue());
// equipmentCheckDetail.setDownLimit(mesEquipmentCheck.getDownLimit());
// equipmentCheckDetail.setUpLimit(mesEquipmentCheck.getUpLimit());
// equipmentCheckDetail.setResultType(mesEquipmentCheck.getResultType());
// ConvertBean.serviceModelInitialize(equipmentCheckDetail, MesPcnExtConstWords.JOB);
// equipmentCheckDetailRepository.insert(equipmentCheckDetail);
// }
// orderNoIndex++;
// }
// }
//
// private List<String> getOrderNo(String organizeCode,int num) {
// try {
// BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, num);
// log.info("获取生成单号的数量:{}",oneCodeResult.getResultList().size());
// if (oneCodeResult != null && oneCodeResult.isSuccess()) {
// return oneCodeResult.getResultList();
// }
// } catch (Exception e) {
// }
// return null;
// }
//
// private List<MesWorkOrderExt> findWorkOrderList(String organizeCode, String workCenterCode) {
// List<MesWorkOrderExt> workOrderExtList = null;
// List<MesWorkOrderExt> openList = getWorkOrderList(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue());
// List<MesWorkOrderExt> landedList = getWorkOrderList(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
// if (!CollectionUtils.isEmpty(openList) || !CollectionUtils.isEmpty(landedList)) {
// workOrderExtList = new ArrayList<>();
// if (!CollectionUtils.isEmpty(openList)) {
// workOrderExtList.addAll(openList);
// }
// if (!CollectionUtils.isEmpty(landedList)) {
// workOrderExtList.addAll(landedList);
// }
// }
// return workOrderExtList;
// }
//
// private List<MesWorkOrderExt> getWorkOrderList(String organizeCode, String workCenterCode, Integer workOrderStatus) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(workOrderStatus, MesPcnExtConstWords.WORK_ORDER_STATUS, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// return workOrderExtRepository.findByHqlWhere(packBean);
// }
//
// private List<MesOrderJob> getOrderJobList(String organizeCode, String workCenterCode, String shiftCode, String checkType, String produceTime) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue(), MesPcnExtConstWords.HANDLER_METHOD, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(shiftCode, MesPcnExtConstWords.SHIFT_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
// String nowProduceTime = TimeTool.getToday() + MesPcnExtConstWords.ONE_SPACE + produceTime;
// String lastProduceTime;
// if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue())) {
// DdlPreparedPack.getStringEqualPack(nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean);
// } else if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue())) {
// lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.DAY_OF_YEAR, -7, MesPcnExtConstWords.DATETIME_FORMAT);
// DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
// } else if (checkType.equals(MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue())) {
// lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.DAY_OF_YEAR, -30, MesPcnExtConstWords.DATETIME_FORMAT);
// DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
// } else {
// lastProduceTime = TimeTool.timeCalc(TimeTool.stringParseToDate(nowProduceTime), Calendar.YEAR, -1, MesPcnExtConstWords.DATETIME_FORMAT);
// DdlPreparedPack.timeBuilder(lastProduceTime, nowProduceTime, MesPcnExtConstWords.GENERATE_TIME, packBean, true);
// }
// return orderJobRepository.findByHqlWhere(packBean);
// }
//
// private List<MesOrderRule> getOrderRuleList(String organizeCode, String workCenterCode, String checkType) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.EP_EQU_CHECK.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_CREATE_RULE.TIME_TO_CREATE.getValue(), MesPcnExtConstWords.CREATE_RULE, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
// return orderRuleRepository.findByHqlWhere(packBean);
// }
//
// private List<String> getCheckTypelist() {
// List<String> checkTypeList = new ArrayList<>();
// String dayCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.DAY_CHECK.getValue();
// String weekCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.WEEK_CHECK.getValue();
// String monthCheck = MesPcnExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.MONTH_CHECK.getValue();
// checkTypeList.add(weekCheck);
// checkTypeList.add(dayCheck);
// checkTypeList.add(monthCheck);
// return checkTypeList;
// }
//
// private List<MesEpEquipmentCheck> getEquipmentCheckList(String organizeCode, String checkType) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(checkType, MesPcnExtConstWords.CHECK_TYPE, packBean);
// return equipmentCheckRepository.findByHqlWhere(packBean);
// }
//}

@ -1,247 +1,247 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job.ep;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkCenterExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.job.ep.IEpQManageCheckOrderService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
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 org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author: wangjie
* @CreateDate: 2019/8/23 1:16 PM
* @Description: EP-Q
**/
@Slf4j
@Service
public class EpQManageCheckOrderService implements IEpQManageCheckOrderService {
@Autowired
private MesProcessCellRepository processCellRepository;
@Autowired
private MesProcessQManageRepository processQManageRepository;
@Autowired
private MesQManageTaskDetailRepository qManageTaskDetailRepository;
@Autowired
private MesOrderRuleRepository orderRuleRepository;
@Autowired
private MesOrderJobRepository orderJobRepository;
@Autowired
private IWorkCenterExtService workCenterExtService;
@Autowired
private MesWorkOrderExtRepository workOrderExtRepository;
@Autowired
private ISyncFuncService syncFuncService;
@Override
public void doQManageCheckOrder(String organizeCode) {
List<MesOrderRule> orderRuleDbList = getOrderRuleList(organizeCode);
if (CollectionUtils.isEmpty(orderRuleDbList)) {
log.info("Pcn处理Q管理点检单生成JOB,未配置单据规则");
return;
}
Map<String, List<MesOrderRule>> workCenterCodeMap = orderRuleDbList.stream()
.filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()) && !StringUtils.isEmpty(o.getProduceTime())))
.collect(Collectors.groupingBy(MesOrderRule::getWorkCenterCode));
log.info("Pcn处理Q管理点检单生成JOB,生成包含以下生产线{}", CollectionUtils.isEmpty(workCenterCodeMap) ? null : workCenterCodeMap.keySet().toString());
for (String workCenterCode : workCenterCodeMap.keySet()) {
if (StringUtils.isEmpty(workCenterCode)) continue;
List<MesOrderRule> orderRuleList = workCenterCodeMap.get(workCenterCode);
if (CollectionUtils.isEmpty(orderRuleList)) continue;
MesWorkOrderExt workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode);
Map<String, List<MesProcessCell>> processCodeMap = getProcessCodeMapByCenter(organizeCode, workCenterCode);
List<String> processCodeList = getProcessCodeList(processCodeMap);
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]配置的数据量processCodeMap[{}],processCodeList[{}]",
workCenterCode, CollectionUtils.isEmpty(processCodeMap) ? 0 : processCodeMap.size(), CollectionUtils.isEmpty(processCodeList) ? 0 : processCodeList.size());
List<MesProcessQManage> processQManageList = getProcessQManageList(workOrderExt, processCodeList);
for (MesOrderRule orderRule : orderRuleList) {
if (null == orderRule) continue;
String produceTime = orderRule.getProduceTime() + MesPcnExtConstWords.APPEND_SECONDS;
if (TimeTool.stringParseToDate(TimeTool.getNowTime(MesPcnExtConstWords.TIME_FORMAT)).compareTo(TimeTool.stringParseToDate(produceTime)) >= 0) {
String shiftCode = getCurShiftCode(orderRule.getShiftCode(), organizeCode, workCenterCode);
if (StringUtils.isEmpty(shiftCode)) {
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]Q管理单据存在生成时间[{}]的单据规则,但未配置班次或生产线未启动班次", workCenterCode, produceTime);
continue;
}
List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, produceTime);
if (!CollectionUtils.isEmpty(orderJobList)) continue;
if (null == workOrderExt) {
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但未查询到启动或下达的工单", workCenterCode, produceTime, shiftCode);
continue;
}
if (CollectionUtils.isEmpty(processCodeList)) {
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但未配置工位工序关系", workCenterCode, produceTime, shiftCode);
continue;
}
if (CollectionUtils.isEmpty(processQManageList)) {
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但根据生产线查询到顺序最小的一个[{}]状态的工单[{}]关联的物料编码[{}]与工序代码{}未配置Q管理项目信息",
workCenterCode, produceTime, shiftCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus()), workOrderExt.getOrderNo(), workOrderExt.getPartNo(), processCodeList.toString());
continue;
}
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]正在生成时间[{}]班次[{}]的Q管理单据", workCenterCode, produceTime, shiftCode);
String orderNo = getOrderNo(organizeCode);
if (StringUtils.isEmpty(orderNo)) {
log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]生成时间[{}]班次[{}]的Q管理单据时生成单据号失败", workCenterCode, produceTime, shiftCode);
continue;
}
insertQManageCheckOrder(organizeCode, workCenterCode, shiftCode, produceTime, orderNo, processQManageList, processCodeMap);
}
}
}
}
private List<String> getProcessCodeList(Map<String, List<MesProcessCell>> processCodeMap) {
return CollectionUtils.isEmpty(processCodeMap) ? null : new ArrayList<>(processCodeMap.keySet()).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
}
private Map<String, List<MesProcessCell>> getProcessCodeMapByCenter(String organizeCode, String workCenterCode) {
List<MesProcessCell> processCellList = processCellRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCenterCode});
return CollectionUtils.isEmpty(processCellList) ? null :
processCellList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(MesProcessCell::getProcessCode));
}
private List<MesProcessQManage> getProcessQManageList(MesWorkOrderExt workOrderExt, List<String> processCodeList) {
if (null == workOrderExt) return null;
if (CollectionUtils.isEmpty(processCodeList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderExt.getPartNo(), MesPcnExtConstWords.PART_NO, packBean);
DdlPreparedPack.getInPackList(processCodeList, MesPcnExtConstWords.PROCESS_CODE, packBean);
return processQManageRepository.findByHqlWhere(packBean);
}
private List<MesOrderRule> getOrderRuleList(String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_CREATE_RULE.TIME_TO_CREATE.getValue(), MesPcnExtConstWords.CREATE_RULE, packBean);
return orderRuleRepository.findByHqlWhere(packBean);
}
private List<MesOrderJob> getOrderJobList(String organizeCode, String workCenterCode, String shiftCode, String produceTime) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue(), MesPcnExtConstWords.HANDLER_METHOD, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(shiftCode, MesPcnExtConstWords.SHIFT_CODE, packBean);
DdlPreparedPack.getStringEqualPack(TimeTool.getToday() + MesPcnExtConstWords.ONE_SPACE + produceTime, MesPcnExtConstWords.GENERATE_TIME, packBean);
return orderJobRepository.findByHqlWhere(packBean);
}
private String getCurShiftCode(String shiftCode, String organizeCode, String workCenterCode) {
if (StringUtils.isEmpty(shiftCode)) {
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(organizeCode, workCenterCode);
if (null != workCenterExt) {
shiftCode = workCenterExt.getShiftCode();
}
}
return shiftCode;
}
private MesWorkOrderExt getWorkOrderByStatus(String organizeCode, String workCenterCode) {
MesWorkOrderExt workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue());
if (null == workOrderExt) {
workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
}
return workOrderExt;
}
private MesWorkOrderExt getWorkOrderByStatus(String organizeCode, String workCenterCode, Integer workOrderStatus) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(workOrderStatus, MesPcnExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.SEQ}, packBean);
return workOrderExtRepository.getByProperty(packBean);
}
private String getOrderNo(String organizeCode) {
String orderNo = null;
try {
BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
if (oneCodeResult != null && oneCodeResult.isSuccess()) {
orderNo = oneCodeResult.getResultList().get(0).toString();
}
} catch (Exception e) {
}
return orderNo;
}
private void insertQManageCheckOrder(String organizeCode, String workCenterCode, String shiftCode, String produceTime, String orderNo, List<MesProcessQManage> processQManageList, Map<String, List<MesProcessCell>> processCodeMap) {
MesOrderJob orderJob = new MesOrderJob();
orderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
orderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue());
orderJob.setOrderNo(orderNo);
orderJob.setWorkCenterCode(workCenterCode);
orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
orderJob.setOrderDate(TimeTool.getToday());
orderJob.setWorkTime(orderJob.getOrderDate());
orderJob.setGenerateTime(orderJob.getOrderDate() + MesPcnExtConstWords.ONE_SPACE + produceTime);
orderJob.setShiftCode(shiftCode);
orderJob.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(orderJob, MesPcnExtConstWords.JOB);
orderJobRepository.insert(orderJob);
for (MesProcessQManage processQManage : processQManageList) {
MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
BeanUtils.copyProperties(processQManage, qManageTaskDetail, MesPcnExtConstWords.ID);
qManageTaskDetail.setOrderNo(orderNo);
List<MesProcessCell> processCellList = processCodeMap.get(processQManage.getProcessCode());
if (!CollectionUtils.isEmpty(processCellList)) {
qManageTaskDetail.setWorkCellCode(processCellList.get(0).getWorkCellCode());
qManageTaskDetail.setWorkCellName(processCellList.get(0).getWorkCellName());
qManageTaskDetail.setProcessName(processCellList.get(0).getProcessName());
}
qManageTaskDetail.setIsTeamConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
qManageTaskDetail.setIsQualityConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(qManageTaskDetail, MesPcnExtConstWords.JOB);
qManageTaskDetailRepository.insert(qManageTaskDetail);
}
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job.ep;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkCenterExtService;
//import cn.estsh.i3plus.ext.mes.pcn.api.job.ep.IEpQManageCheckOrderService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.*;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
//import cn.estsh.i3plus.mes.pcn.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.base.bean.BaseResultBean;
//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
//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 org.springframework.util.StringUtils;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @Author: wangjie
// * @CreateDate: 2019/8/23 1:16 PM
// * @Description: EP-Q管理单据定时任务
// **/
//@Slf4j
//@Service
//public class EpQManageCheckOrderService implements IEpQManageCheckOrderService {
//
// @Autowired
// private MesProcessCellRepository processCellRepository;
//
// @Autowired
// private MesProcessQManageRepository processQManageRepository;
//
// @Autowired
// private MesQManageTaskDetailRepository qManageTaskDetailRepository;
//
// @Autowired
// private MesOrderRuleRepository orderRuleRepository;
//
// @Autowired
// private MesOrderJobRepository orderJobRepository;
//
// @Autowired
// private IWorkCenterExtService workCenterExtService;
//
// @Autowired
// private MesWorkOrderExtRepository workOrderExtRepository;
//
// @Autowired
// private ISyncFuncService syncFuncService;
//
// @Override
// public void doQManageCheckOrder(String organizeCode) {
// List<MesOrderRule> orderRuleDbList = getOrderRuleList(organizeCode);
// if (CollectionUtils.isEmpty(orderRuleDbList)) {
// log.info("Pcn处理Q管理点检单生成JOB,未配置单据规则");
// return;
// }
//
// Map<String, List<MesOrderRule>> workCenterCodeMap = orderRuleDbList.stream()
// .filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()) && !StringUtils.isEmpty(o.getProduceTime())))
// .collect(Collectors.groupingBy(MesOrderRule::getWorkCenterCode));
// log.info("Pcn处理Q管理点检单生成JOB,生成包含以下生产线{}", CollectionUtils.isEmpty(workCenterCodeMap) ? null : workCenterCodeMap.keySet().toString());
//
// for (String workCenterCode : workCenterCodeMap.keySet()) {
// if (StringUtils.isEmpty(workCenterCode)) continue;
//
// List<MesOrderRule> orderRuleList = workCenterCodeMap.get(workCenterCode);
// if (CollectionUtils.isEmpty(orderRuleList)) continue;
//
// MesWorkOrderExt workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode);
//
// Map<String, List<MesProcessCell>> processCodeMap = getProcessCodeMapByCenter(organizeCode, workCenterCode);
// List<String> processCodeList = getProcessCodeList(processCodeMap);
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]配置的数据量processCodeMap[{}],processCodeList[{}]",
// workCenterCode, CollectionUtils.isEmpty(processCodeMap) ? 0 : processCodeMap.size(), CollectionUtils.isEmpty(processCodeList) ? 0 : processCodeList.size());
//
// List<MesProcessQManage> processQManageList = getProcessQManageList(workOrderExt, processCodeList);
//
// for (MesOrderRule orderRule : orderRuleList) {
// if (null == orderRule) continue;
//
// String produceTime = orderRule.getProduceTime() + MesPcnExtConstWords.APPEND_SECONDS;
//
// if (TimeTool.stringParseToDate(TimeTool.getNowTime(MesPcnExtConstWords.TIME_FORMAT)).compareTo(TimeTool.stringParseToDate(produceTime)) >= 0) {
//
// String shiftCode = getCurShiftCode(orderRule.getShiftCode(), organizeCode, workCenterCode);
// if (StringUtils.isEmpty(shiftCode)) {
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]Q管理单据存在生成时间[{}]的单据规则,但未配置班次或生产线未启动班次", workCenterCode, produceTime);
// continue;
// }
//
// List<MesOrderJob> orderJobList = getOrderJobList(organizeCode, workCenterCode, shiftCode, produceTime);
// if (!CollectionUtils.isEmpty(orderJobList)) continue;
//
// if (null == workOrderExt) {
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但未查询到启动或下达的工单", workCenterCode, produceTime, shiftCode);
// continue;
// }
//
// if (CollectionUtils.isEmpty(processCodeList)) {
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但未配置工位工序关系", workCenterCode, produceTime, shiftCode);
// continue;
// }
//
// if (CollectionUtils.isEmpty(processQManageList)) {
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]还未生成时间[{}]班次[{}]的Q管理点检单据,但根据生产线查询到顺序最小的一个[{}]状态的工单[{}]关联的物料编码[{}]与工序代码{}未配置Q管理项目信息",
// workCenterCode, produceTime, shiftCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus()), workOrderExt.getOrderNo(), workOrderExt.getPartNo(), processCodeList.toString());
// continue;
// }
//
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]正在生成时间[{}]班次[{}]的Q管理单据", workCenterCode, produceTime, shiftCode);
// String orderNo = getOrderNo(organizeCode);
// if (StringUtils.isEmpty(orderNo)) {
// log.info("Pcn处理Q管理点检单生成JOB,生产线[{}]生成时间[{}]班次[{}]的Q管理单据时生成单据号失败", workCenterCode, produceTime, shiftCode);
// continue;
// }
// insertQManageCheckOrder(organizeCode, workCenterCode, shiftCode, produceTime, orderNo, processQManageList, processCodeMap);
// }
// }
// }
//
// }
//
// private List<String> getProcessCodeList(Map<String, List<MesProcessCell>> processCodeMap) {
// return CollectionUtils.isEmpty(processCodeMap) ? null : new ArrayList<>(processCodeMap.keySet()).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// }
//
// private Map<String, List<MesProcessCell>> getProcessCodeMapByCenter(String organizeCode, String workCenterCode) {
// List<MesProcessCell> processCellList = processCellRepository.findByProperty(
// new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.WORK_CENTER_CODE},
// new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCenterCode});
// return CollectionUtils.isEmpty(processCellList) ? null :
// processCellList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()))).collect(Collectors.groupingBy(MesProcessCell::getProcessCode));
// }
//
// private List<MesProcessQManage> getProcessQManageList(MesWorkOrderExt workOrderExt, List<String> processCodeList) {
// if (null == workOrderExt) return null;
// if (CollectionUtils.isEmpty(processCodeList)) return null;
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderExt.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(workOrderExt.getPartNo(), MesPcnExtConstWords.PART_NO, packBean);
// DdlPreparedPack.getInPackList(processCodeList, MesPcnExtConstWords.PROCESS_CODE, packBean);
// return processQManageRepository.findByHqlWhere(packBean);
// }
//
// private List<MesOrderRule> getOrderRuleList(String organizeCode) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_CREATE_RULE.TIME_TO_CREATE.getValue(), MesPcnExtConstWords.CREATE_RULE, packBean);
// return orderRuleRepository.findByHqlWhere(packBean);
// }
//
// private List<MesOrderJob> getOrderJobList(String organizeCode, String workCenterCode, String shiftCode, String produceTime) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue(), MesPcnExtConstWords.TASK_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), MesPcnExtConstWords.ORDER_TYPE, packBean);
// DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue(), MesPcnExtConstWords.HANDLER_METHOD, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(shiftCode, MesPcnExtConstWords.SHIFT_CODE, packBean);
// DdlPreparedPack.getStringEqualPack(TimeTool.getToday() + MesPcnExtConstWords.ONE_SPACE + produceTime, MesPcnExtConstWords.GENERATE_TIME, packBean);
// return orderJobRepository.findByHqlWhere(packBean);
// }
//
// private String getCurShiftCode(String shiftCode, String organizeCode, String workCenterCode) {
// if (StringUtils.isEmpty(shiftCode)) {
// MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(organizeCode, workCenterCode);
// if (null != workCenterExt) {
// shiftCode = workCenterExt.getShiftCode();
// }
// }
// return shiftCode;
// }
//
// private MesWorkOrderExt getWorkOrderByStatus(String organizeCode, String workCenterCode) {
// MesWorkOrderExt workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue());
// if (null == workOrderExt) {
// workOrderExt = getWorkOrderByStatus(organizeCode, workCenterCode, MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
// }
// return workOrderExt;
// }
//
// private MesWorkOrderExt getWorkOrderByStatus(String organizeCode, String workCenterCode, Integer workOrderStatus) {
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getNumEqualPack(workOrderStatus, MesPcnExtConstWords.WORK_ORDER_STATUS, packBean);
// DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
// DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.SEQ}, packBean);
// return workOrderExtRepository.getByProperty(packBean);
// }
//
// private String getOrderNo(String organizeCode) {
// String orderNo = null;
// try {
// BaseResultBean oneCodeResult = syncFuncService.syncSerialNo(new GenSerialNoModel(MesPcnExtConstWords.ORDER_NO_RULE), null, organizeCode, 1);
// if (oneCodeResult != null && oneCodeResult.isSuccess()) {
// orderNo = oneCodeResult.getResultList().get(0).toString();
// }
// } catch (Exception e) {
// }
// return orderNo;
// }
//
// private void insertQManageCheckOrder(String organizeCode, String workCenterCode, String shiftCode, String produceTime, String orderNo, List<MesProcessQManage> processQManageList, Map<String, List<MesProcessCell>> processCodeMap) {
// MesOrderJob orderJob = new MesOrderJob();
// orderJob.setTaskType(MesPcnExtEnumUtil.MES_OR_TASK_TYPE.PREPARE_TASK.getValue());
// orderJob.setOrderType(MesPcnExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
// orderJob.setHandlerMethod(MesPcnExtEnumUtil.HANDLER_METHOD.AUTOMATICALLY_CREATED.getValue());
// orderJob.setOrderNo(orderNo);
// orderJob.setWorkCenterCode(workCenterCode);
// orderJob.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
// orderJob.setOrderDate(TimeTool.getToday());
// orderJob.setWorkTime(orderJob.getOrderDate());
// orderJob.setGenerateTime(orderJob.getOrderDate() + MesPcnExtConstWords.ONE_SPACE + produceTime);
// orderJob.setShiftCode(shiftCode);
// orderJob.setOrganizeCode(organizeCode);
// ConvertBean.serviceModelInitialize(orderJob, MesPcnExtConstWords.JOB);
// orderJobRepository.insert(orderJob);
//
// for (MesProcessQManage processQManage : processQManageList) {
// MesQManageTaskDetail qManageTaskDetail = new MesQManageTaskDetail();
// BeanUtils.copyProperties(processQManage, qManageTaskDetail, MesPcnExtConstWords.ID);
// qManageTaskDetail.setOrderNo(orderNo);
//
// List<MesProcessCell> processCellList = processCodeMap.get(processQManage.getProcessCode());
// if (!CollectionUtils.isEmpty(processCellList)) {
// qManageTaskDetail.setWorkCellCode(processCellList.get(0).getWorkCellCode());
// qManageTaskDetail.setWorkCellName(processCellList.get(0).getWorkCellName());
// qManageTaskDetail.setProcessName(processCellList.get(0).getProcessName());
// }
//
// qManageTaskDetail.setIsTeamConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// qManageTaskDetail.setIsQualityConfirm(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
// ConvertBean.serviceModelInitialize(qManageTaskDetail, MesPcnExtConstWords.JOB);
// qManageTaskDetailRepository.insert(qManageTaskDetail);
// }
// }
//}

@ -1,5 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.bean;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
@ -26,7 +28,7 @@ import java.io.Serializable;
@Table(name = "MES_FIRST_ORDER_DETAIL", indexes = {
@Index(columnList = "ORDER_NO")
})
@Api("MES_首检单明细")
@Api("MES_首检单明细改为Q管理")
public class MesFirstOrderDetail extends BaseBean implements Serializable {
private static final long serialVersionUID = -111793151238704774L;
@ -116,6 +118,27 @@ public class MesFirstOrderDetail extends BaseBean implements Serializable {
@ApiParam("结果值")
private String resultValue;
@Column(name = "MANAGE_TYPE")
@ApiParam("管理类型10-比值类型20-结果类型")
@AnnoOutputColumn(refClass = MesPcnExtEnumUtil.Q_MANAGE_MANAGE_TYPE.class, refForeignKey = "value", value = "description")
private String manageType;
@Column(name = "IMPORTANCE_SAFE_PART_NO")
@ApiParam("重要安全部品编码")
private String importanceSafePartNo;
@Column(name = "CHECK_FREQUENCY")
@ApiParam("检查频度")
private String checkFrequency;
@Column(name = "SAMPLE_QTY")
@ApiParam("样品数量")
private String sampleQty;
@Column(name = "CONFIRM_METHOD")
@ApiParam("确认方法")
private String confirmMethod;
@Transient
@ApiParam("生产工单号")
private String workOrderNo;

@ -1,5 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.bean;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
@ -64,4 +66,25 @@ public class MesProcessFirstItem extends BaseBean implements Serializable {
@ApiParam("下限值")
private String downLimit;
@Column(name = "MANAGE_TYPE")
@ApiParam("管理类型10-比值类型20-结果类型")
@AnnoOutputColumn(refClass = MesPcnExtEnumUtil.Q_MANAGE_MANAGE_TYPE.class, refForeignKey = "value", value = "description")
private String manageType;
@Column(name = "IMPORTANCE_SAFE_PART_NO")
@ApiParam("重要安全部品编码")
private String importanceSafePartNo;
@Column(name = "CHECK_FREQUENCY")
@ApiParam("检查频度")
private String checkFrequency;
@Column(name = "SAMPLE_QTY")
@ApiParam("样品数量")
private String sampleQty;
@Column(name = "CONFIRM_METHOD")
@ApiParam("确认方法")
private String confirmMethod;
}

@ -3206,4 +3206,49 @@ public class MesPcnExtEnumUtil {
return tmp;
}
}
/**
* Q
*/
public static enum Q_MANAGE_MANAGE_TYPE {
COMPARE_TYPE("10", "比值类型"),
RESULT_TYPE("20", "结果类型")
;
private String value;
private String description;
Q_MANAGE_MANAGE_TYPE(String value, String description) {
this.value = value;
this.description = description;
}
public String getValue() {
return value;
}
public String getDescription() {
return description;
}
public static String valueOfDescription(String val) {
String tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].value.equals(val)) {
tmp = values()[i].description;
}
}
return tmp;
}
public static String descriptionOfValue(String description) {
String tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].description.equals(description)) {
tmp = values()[i].value;
}
}
return tmp;
}
}
}

Loading…
Cancel
Save