diff --git a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java index 87689a5..5ce6ed6 100644 --- a/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java +++ b/modules/i3plus-pojo-aps/src/main/java/cn/estsh/i3plus/pojo/aps/bean/ParentWork.java @@ -5,7 +5,6 @@ import cn.estsh.i3plus.pojo.aps.annotation.FieldAnnotation; import cn.estsh.i3plus.pojo.aps.common.BaseAPS; import cn.estsh.i3plus.pojo.aps.common.BeanRelation; import cn.estsh.i3plus.pojo.aps.holders.EParentWork; -import cn.estsh.i3plus.pojo.aps.tool.APSDoubleTool; import com.fasterxml.jackson.annotation.JsonBackReference; import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; @@ -44,6 +43,11 @@ public class ParentWork extends BaseAPS { @FieldAnnotation(property = false) private Integer serialNumber = 0; + @Column(name="POST_SERIAL_NUMBER") + @ApiParam(value ="子工作流水号") + @FieldAnnotation(property = false) + private Integer postSerialNumber = 0; + @Column(name="NEW_SERIAL") @ApiParam(value ="拆分工作流水号") @FieldAnnotation(property = false) @@ -59,27 +63,27 @@ public class ParentWork extends BaseAPS { @FieldAnnotation(property = false) private Long operationId; - public int getCodeNumber() { - for (int bitIndex = 0; bitIndex < 10; ++bitIndex) { - int value = 1 << bitIndex; - if ((this.serialNumber & value) == 0) { - this.serialNumber |= value; - newSerial = true; - return bitIndex; - } - } - - return 0; - } - - public void recoverNumber(int value) { - if (newSerial == null || !newSerial) { - return; - } - - value = ~(1 << value); - this.serialNumber &= value; - } +// public int getCodeNumber() { +// for (int bitIndex = 0; bitIndex < 10; ++bitIndex) { +// int value = 1 << bitIndex; +// if ((this.serialNumber & value) == 0) { +// this.serialNumber |= value; +// newSerial = true; +// return bitIndex; +// } +// } +// +// return 0; +// } +// +// public void recoverNumber(int value) { +// if (newSerial == null || !newSerial) { +// return; +// } +// +// value = ~(1 << value); +// this.serialNumber &= value; +// } public BaseOrder getProductOrder() { return BeanRelation.get(this, EParentWork.ProductOrder); @@ -103,4 +107,70 @@ public class ParentWork extends BaseAPS { public List getWorks() { return BeanRelation.list(this, EParentWork.Works); } + + public int createNew() { + return getPrevNumber() * 10; + } + + public int createContinue(int number) { + number /= 10; + return number * 10 + getPostNumber(); + } + + private int getPrevNumber() { + for (int bitIndex = 1; bitIndex < 10; ++bitIndex) { + int value = 1 << bitIndex; + if ((this.serialNumber & value) == 0) { + this.serialNumber |= value; + this.newSerial = true; + return bitIndex ; + } + } + + return 0; + } + + private int getPostNumber() { + for (int bitIndex = 1; bitIndex < 10; ++bitIndex) { + int value = 1 << bitIndex; + if ((this.postSerialNumber & value) == 0) { + this.postSerialNumber |= value; + return bitIndex; + } + } + + return 0; + } + + public void cycleNumber(int number) { + if (newSerial == null || !newSerial) { + return; + } + + cyclePrevNumber(number); + cyclePostNumber(number); + } + + private void cyclePrevNumber(int number) { + if (number % 10 > 0) { + return; + } + + number /= 10; + number = ~(1 << number); + this.serialNumber &= number; + } + + private void cyclePostNumber(int number) { + number %= 10; + if (number == 0) { + return; + } + if (this.postSerialNumber == null) { + this.postSerialNumber = 0; + } + + number = ~(1 << number); + this.postSerialNumber &= number; + } }