diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 8b9967f..78d8004 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -285,7 +285,17 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion()); } //更新工单状态 - mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty())); + if(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()){ + mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty())); + }else{ + //冲销数量大于工单完成数量报错 + if(mesWorkOrder.getNum() > mesWorkOrder.getCompleteQty()){ + MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】", + mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty()); + } + mesWorkOrder.setCompleteQty(MathOperation.sub(mesWorkOrder.getCompleteQty(),mesWorkOrder.getNum())); + } + double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getCompleteQty()); mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); if (mesWorkOrder.getCompleteQty() >= mesWorkOrder.getQty()) { @@ -321,6 +331,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getOrderNo()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); + newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); mesProductOffLineList.add(newMesProductOffLine); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java index 3b4ad5f..d14c0ab 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java @@ -2036,4 +2036,87 @@ public class MesExtEnumUtil { } } + /** + * 生产工单-报工类型 + */ + @JsonFormat( + shape = JsonFormat.Shape.OBJECT + ) + public static enum REPORT_TYPE { + REPORT(10, "报工"), + WRITE_OFF(20, "冲销"); + + private int value; + private String description; + + private REPORT_TYPE(int value, String description) { + this.value = value; + this.description = description; + } + + public static String valueOfDescription(int val) { + String tmp = null; + + for (int i = 0; i < values().length; ++i) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + + return tmp; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.description; + } + } + + public enum MES_PART_TYPE { + RAW_MATERIAL("10", "原材料"), + PARTIALLY_PREPARED_PRODUCTS("20", "半成品"), + FINISHED_PRODUCT("30", "成品"), + CONTAINER_PRODUCT("40", "容器"), + UTENSIL("50", "器具"), + WORKING_HOURS("60", "工时"); + private String value; + private String description; + + MES_PART_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 val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(val)) { + tmp = values()[i].value; + } + } + return tmp; + } + } + }