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

tags/yfai-mes-ext-v1.0
LML丶 11 months ago
commit 22680d10ab

@ -115,8 +115,7 @@ public class WmsSAPDbQuery {
*/ */
public String partName(String organizeCode, String partNo) throws Exception { public String partName(String organizeCode, String partNo) throws Exception {
String sqlString = "select part_name from mes_part where organize_code='" + organizeCode String sqlString = "select part_name from mes_part where organize_code='" + organizeCode
+ "' and part_no='" + partNo + "' and part_no='" + partNo + "'";
+ "' and is_deleted=2 and is_valid=1";
List<Map<String, Object>> result = mesDataSourceProxy.queryMapList(sqlString, srcConn); List<Map<String, Object>> result = mesDataSourceProxy.queryMapList(sqlString, srcConn);

@ -22,7 +22,7 @@ public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGro
DdlPreparedPack.getStringEqualPack(bean.getPartProdGroupCode(), "partProdGroupCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getPartProdGroupCode(), "partProdGroupCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustomerPartNo(), "customerPartNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getCustPartNo(), "custPartNo", packBean);
} }

@ -74,7 +74,7 @@ public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> im
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode(), item.getCustomerCode()) .setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode())
.build(); .build();
} }
@ -93,7 +93,7 @@ public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> im
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode(), item.getCustomerCode()) .setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode())
.build(); .build();
} }
} }

@ -12,6 +12,8 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.List; import java.util.List;
@Service @Service
@ -56,9 +58,12 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
.setErrorDetail("【%s】区域【%s】产线【%s】班次代码生效时间内已经存在有效数据请检查数据", item.getAreaCode(), item.getWorkCenterCode(), item.getShiftCode()) .setErrorDetail("【%s】区域【%s】产线【%s】班次代码生效时间内已经存在有效数据请检查数据", item.getAreaCode(), item.getWorkCenterCode(), item.getShiftCode())
.build(); .build();
} }
//计算工时
item.setWorkTimes(houresBetweenTwoTime(item.getStartTime().split(":"),item.getEndTime().split(":")));
} }
protected void onUpdateBean(MesShift item) { protected void onUpdateBean(MesShift item) {
// 数据校验 // 数据校验
@ -90,6 +95,8 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
.setErrorDetail("【%s】区域【%s】产线【%s】班次代码生效时间内已经存在有效数据请检查数据", item.getAreaCode(), item.getWorkCenterCode(), item.getShiftCode()) .setErrorDetail("【%s】区域【%s】产线【%s】班次代码生效时间内已经存在有效数据请检查数据", item.getAreaCode(), item.getWorkCenterCode(), item.getShiftCode())
.build(); .build();
} }
//计算工时
item.setWorkTimes(houresBetweenTwoTime(item.getStartTime().split(":"),item.getEndTime().split(":")));
} }
@Override @Override
@ -104,4 +111,24 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
DdlPreparedPack.getStringBiggerPack(nowDate, "endDate", packBean); DdlPreparedPack.getStringBiggerPack(nowDate, "endDate", packBean);
return baseRDao.findByHqlWhere(packBean); return baseRDao.findByHqlWhere(packBean);
} }
public double houresBetweenTwoTime(String[] start, String[] end) {
// 定义起始时间和结束时间
LocalTime startTime = LocalTime.of(Integer.parseInt(start[0]), Integer.parseInt(start[1]), Integer.parseInt(start[2]));
LocalTime endTime = LocalTime.of(Integer.parseInt(end[0]), Integer.parseInt(end[1]), Integer.parseInt(end[2]));
// 计算时间间隔
long totalMinutes;
if (endTime.isBefore(startTime)) {
// 如果结束时间在起始时间之前,说明跨越了午夜
totalMinutes = ChronoUnit.MINUTES.between(startTime, LocalTime.MAX)
+ ChronoUnit.MINUTES.between(LocalTime.MIN, endTime);
} else {
totalMinutes = ChronoUnit.MINUTES.between(startTime, endTime);
}
// 计算小时
return (double)(totalMinutes / 60);
}
} }

@ -1,6 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCellExtendCfgService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCellExtendCfgService;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -17,6 +20,15 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空"); ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空"); ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空");
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCodeBak(), "workCellCodeBak", partPackBean);
if (baseRDao.isExitByHql(partPackBean)) {
MesException.throwMesBusiException("工作中心【%s】主工位【%s】子工位【%s】数据界已经存在请检查数据",
item.getWorkCenterCode(),item.getWorkCellCode(),item.getWorkCellCodeBak());
}
} }
protected void onUpdateBean(MesWorkCellExtendCfg item) { protected void onUpdateBean(MesWorkCellExtendCfg item) {
@ -24,6 +36,16 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空"); ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空"); ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空"); ValidatorBean.checkNotNull(item.getWorkCellCodeBak(), "子工位不能为空");
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCodeBak(), "workCellCodeBak", partPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", partPackBean);
if (baseRDao.isExitByHql(partPackBean)) {
MesException.throwMesBusiException("工作中心【%s】主工位【%s】子工位【%s】数据界已经存在请检查数据",
item.getWorkCenterCode(),item.getWorkCellCode(),item.getWorkCellCodeBak());
}
} }
} }

@ -139,67 +139,67 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
private void saveMesProductPlan(MesWorkOrder bean, boolean isInsert, boolean isReport) { private void saveMesProductPlan(MesWorkOrder bean, boolean isInsert, boolean isReport) {
if (StringUtil.isEmpty(bean.getPlanOrderNo())) { // if (StringUtil.isEmpty(bean.getPlanOrderNo())) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); // DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean); // DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean); // DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean); // DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean);
MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean); // MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
if (null == mesProductPlan) { // if (null == mesProductPlan) {
MesProductPlan mesPlanOrder = new MesProductPlan(); // MesProductPlan mesPlanOrder = new MesProductPlan();
mesPlanOrder.setPlanOrderNo(""); // mesPlanOrder.setPlanOrderNo("");
mesPlanOrder.setPlanQty(bean.getQty()); // mesPlanOrder.setPlanQty(bean.getQty());
mesPlanOrder.setPlanPartNo(bean.getPartNo()); // mesPlanOrder.setPlanPartNo(bean.getPartNo());
mesPlanOrder.setCompleteQty(0d); // mesPlanOrder.setCompleteQty(0d);
mesPlanOrder.setUncompleteQty(bean.getQty()); // mesPlanOrder.setUncompleteQty(bean.getQty());
mesPlanOrder.setUnit(bean.getUnit()); // mesPlanOrder.setUnit(bean.getUnit());
mesPlanOrder.setPlanStartDate(bean.getPlanStartTime()); // mesPlanOrder.setPlanStartDate(bean.getPlanStartTime());
mesPlanOrder.setPlanEndDate(bean.getPlanEndTime()); // mesPlanOrder.setPlanEndDate(bean.getPlanEndTime());
mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter()); // mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter());
mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode()); // mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode());
mesPlanOrder.setOrganizeCode(bean.getOrganizeCode()); // mesPlanOrder.setOrganizeCode(bean.getOrganizeCode());
ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser()); // ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser());
mesProductPlanRDao.insert(mesPlanOrder); // mesProductPlanRDao.insert(mesPlanOrder);
} else { // } else {
if (isInsert) { // if (isInsert) {
mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty())); // mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty()));
} else { // } else {
//报工 // //报工
if (isReport) { // if (isReport) {
mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum())); // mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
//报工调整 // //报工调整
} else { // } else {
mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum())); // mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
} // }
} // }
mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty())); // mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser()); // ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
mesProductPlanRDao.update(mesProductPlan); // mesProductPlanRDao.update(mesProductPlan);
} // }
} else { // } else {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); // DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean); // DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean); // DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean); // MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
if (null == mesProductPlan) { // if (null == mesProductPlan) {
MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo()); // MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo());
} // }
if (!isInsert) { // if (!isInsert) {
if (Objects.isNull(mesProductPlan.getCompleteQty())) { // if (Objects.isNull(mesProductPlan.getCompleteQty())) {
mesProductPlan.setCompleteQty(0d); // mesProductPlan.setCompleteQty(0d);
} // }
//报工 // //报工
if (isReport) { // if (isReport) {
mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum())); // mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
//报工调整 // //报工调整
} else { // } else {
mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum())); // mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
} // }
mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty())); // mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser()); // ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
mesProductPlanRDao.update(mesProductPlan); // mesProductPlanRDao.update(mesProductPlan);
} // }
} // }
} }
@Override @Override

Loading…
Cancel
Save