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 {
String sqlString = "select part_name from mes_part where organize_code='" + organizeCode
+ "' and part_no='" + partNo
+ "' and is_deleted=2 and is_valid=1";
+ "' and part_no='" + partNo + "'";
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.getPartNo(), "partNo", 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()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode(), item.getCustomerCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode())
.build();
}
@ -93,7 +93,7 @@ public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> im
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode(), item.getCustomerCode())
.setErrorDetail("【%s】零件生产组代码已经存在请检查数据", item.getPartProdGroupCode())
.build();
}
}

@ -12,6 +12,8 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
@Service
@ -56,9 +58,12 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
.setErrorDetail("【%s】区域【%s】产线【%s】班次代码生效时间内已经存在有效数据请检查数据", item.getAreaCode(), item.getWorkCenterCode(), item.getShiftCode())
.build();
}
//计算工时
item.setWorkTimes(houresBetweenTwoTime(item.getStartTime().split(":"),item.getEndTime().split(":")));
}
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())
.build();
}
//计算工时
item.setWorkTimes(houresBetweenTwoTime(item.getStartTime().split(":"),item.getEndTime().split(":")));
}
@Override
@ -104,4 +111,24 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
DdlPreparedPack.getStringBiggerPack(nowDate, "endDate", 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;
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.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
@ -17,6 +20,15 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空");
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) {
@ -24,6 +36,16 @@ public class MesWorkCellExtendCfgService extends BaseMesService<MesWorkCellExten
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
ValidatorBean.checkNotNull(item.getWorkCellCode(), "主工位不能为空");
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) {
if (StringUtil.isEmpty(bean.getPlanOrderNo())) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean);
MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
if (null == mesProductPlan) {
MesProductPlan mesPlanOrder = new MesProductPlan();
mesPlanOrder.setPlanOrderNo("");
mesPlanOrder.setPlanQty(bean.getQty());
mesPlanOrder.setPlanPartNo(bean.getPartNo());
mesPlanOrder.setCompleteQty(0d);
mesPlanOrder.setUncompleteQty(bean.getQty());
mesPlanOrder.setUnit(bean.getUnit());
mesPlanOrder.setPlanStartDate(bean.getPlanStartTime());
mesPlanOrder.setPlanEndDate(bean.getPlanEndTime());
mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter());
mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode());
mesPlanOrder.setOrganizeCode(bean.getOrganizeCode());
ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser());
mesProductPlanRDao.insert(mesPlanOrder);
} else {
if (isInsert) {
mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty()));
} else {
//报工
if (isReport) {
mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
//报工调整
} else {
mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
}
}
mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
mesProductPlanRDao.update(mesProductPlan);
}
} else {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
if (null == mesProductPlan) {
MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo());
}
if (!isInsert) {
if (Objects.isNull(mesProductPlan.getCompleteQty())) {
mesProductPlan.setCompleteQty(0d);
}
//报工
if (isReport) {
mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
//报工调整
} else {
mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
}
mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
mesProductPlanRDao.update(mesProductPlan);
}
}
// if (StringUtil.isEmpty(bean.getPlanOrderNo())) {
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
// DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean);
// DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean);
// MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
// if (null == mesProductPlan) {
// MesProductPlan mesPlanOrder = new MesProductPlan();
// mesPlanOrder.setPlanOrderNo("");
// mesPlanOrder.setPlanQty(bean.getQty());
// mesPlanOrder.setPlanPartNo(bean.getPartNo());
// mesPlanOrder.setCompleteQty(0d);
// mesPlanOrder.setUncompleteQty(bean.getQty());
// mesPlanOrder.setUnit(bean.getUnit());
// mesPlanOrder.setPlanStartDate(bean.getPlanStartTime());
// mesPlanOrder.setPlanEndDate(bean.getPlanEndTime());
// mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter());
// mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode());
// mesPlanOrder.setOrganizeCode(bean.getOrganizeCode());
// ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser());
// mesProductPlanRDao.insert(mesPlanOrder);
// } else {
// if (isInsert) {
// mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty()));
// } else {
// //报工
// if (isReport) {
// mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
// //报工调整
// } else {
// mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
// }
// }
// mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
// ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
// mesProductPlanRDao.update(mesProductPlan);
// }
// } else {
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean);
// DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
// MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
// if (null == mesProductPlan) {
// MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo());
// }
// if (!isInsert) {
// if (Objects.isNull(mesProductPlan.getCompleteQty())) {
// mesProductPlan.setCompleteQty(0d);
// }
// //报工
// if (isReport) {
// mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
// //报工调整
// } else {
// mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
// }
// mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
// ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
// mesProductPlanRDao.update(mesProductPlan);
// }
// }
}
@Override

Loading…
Cancel
Save