userJson) throws BusinessException;
+
+
+}
diff --git a/bchange/src/public/nc/vo/bchange/bchange/BchangeMasterVO.java b/bchange/src/public/nc/vo/bchange/bchange/BchangeMasterVO.java
new file mode 100644
index 00000000..12ccc552
--- /dev/null
+++ b/bchange/src/public/nc/vo/bchange/bchange/BchangeMasterVO.java
@@ -0,0 +1,296 @@
+package nc.vo.bchange.bchange;
+
+import nc.vo.pub.*;
+import nc.vo.pubapp.pattern.model.meta.entity.vo.VOMetaFactory;
+
+public class BchangeMasterVO extends SuperVO {
+
+ //췽
+ public BchangeMasterVO() {
+ super();
+ }
+
+
+ private java.lang.String pk_bchangemaster;
+ private java.lang.String code;
+ private java.lang.String name;
+ private java.lang.String billno;
+ private java.lang.String parent_no;
+ private java.lang.String child_no;
+ private java.lang.String before_num;
+ private java.lang.String after_num;
+ private java.lang.String pk_org;
+ private java.lang.String pk_group;
+ private java.lang.String pk_org_v;
+ private java.lang.Integer dr = 0;
+ private nc.vo.pub.lang.UFDateTime ts;
+
+
+ public static final String PK_BCHANGEMASTER = "pk_bchangemaster";
+ public static final String CODE = "code";
+ public static final String NAME = "name";
+ public static final String BILLNO = "billno";
+ public static final String PARENT_NO = "parent_no";
+ public static final String CHILD_NO = "child_no";
+ public static final String BEFORE_NUM = "before_num";
+ public static final String AFTER_NUM = "after_num";
+ public static final String PK_ORG = "pk_org";
+ public static final String PK_GROUP = "pk_group";
+ public static final String PK_ORG_V = "pk_org_v";
+ public static final String DR = "dr";
+ public static final String TS = "ts";
+
+ /**
+ * nameSetter.
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setPk_bchangemaster(java.lang.String pk_bchangemaster){
+ this.pk_bchangemaster = pk_bchangemaster;
+ }
+ /**
+ * nameGetter.
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getPk_bchangemaster(){
+ return this.pk_bchangemaster;
+ }
+
+ /**
+ * nameSetter.code
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setCode(java.lang.String code){
+ this.code = code;
+ }
+ /**
+ * nameGetter.code
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getCode(){
+ return this.code;
+ }
+
+ /**
+ * nameSetter.name
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setName(java.lang.String name){
+ this.name = name;
+ }
+ /**
+ * nameGetter.name
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getName(){
+ return this.name;
+ }
+
+ /**
+ * nameSetter.ʩ
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setBillno(java.lang.String billno){
+ this.billno = billno;
+ }
+ /**
+ * nameGetter.ʩ
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getBillno(){
+ return this.billno;
+ }
+
+ /**
+ * nameSetter.
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setParent_no(java.lang.String parent_no){
+ this.parent_no = parent_no;
+ }
+ /**
+ * nameGetter.
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getParent_no(){
+ return this.parent_no;
+ }
+
+ /**
+ * nameSetter.
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setChild_no(java.lang.String child_no){
+ this.child_no = child_no;
+ }
+ /**
+ * nameGetter.
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getChild_no(){
+ return this.child_no;
+ }
+
+ /**
+ * nameSetter.ǰ
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setBefore_num(java.lang.String before_num){
+ this.before_num = before_num;
+ }
+ /**
+ * nameGetter.ǰ
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getBefore_num(){
+ return this.before_num;
+ }
+
+ /**
+ * nameSetter.
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setAfter_num(java.lang.String after_num){
+ this.after_num = after_num;
+ }
+ /**
+ * nameGetter.
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getAfter_num(){
+ return this.after_num;
+ }
+
+ /**
+ * nameSetter.pk_org
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setPk_org(java.lang.String pk_org){
+ this.pk_org = pk_org;
+ }
+ /**
+ * nameGetter.pk_org
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getPk_org(){
+ return this.pk_org;
+ }
+
+ /**
+ * nameSetter.pk_group
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setPk_group(java.lang.String pk_group){
+ this.pk_group = pk_group;
+ }
+ /**
+ * nameGetter.pk_group
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getPk_group(){
+ return this.pk_group;
+ }
+
+ /**
+ * nameSetter.֯汾
+ * :2025-08-26
+ * @param newName java.lang.String
+ */
+ public void setPk_org_v(java.lang.String pk_org_v){
+ this.pk_org_v = pk_org_v;
+ }
+ /**
+ * nameGetter.֯汾
+ * :2025-08-26
+ * @return java.lang.String
+ */
+ public java.lang.String getPk_org_v(){
+ return this.pk_org_v;
+ }
+
+ /**
+ * nameSetter.dr
+ * :2025-08-26
+ * @param newName java.lang.Integer
+ */
+ public void setDr(java.lang.Integer dr){
+ this.dr = dr;
+ }
+ /**
+ * nameGetter.dr
+ * :2025-08-26
+ * @return java.lang.Integer
+ */
+ public java.lang.Integer getDr(){
+ return this.dr;
+ }
+
+ /**
+ * nameSetter.ts
+ * :2025-08-26
+ * @param newName nc.vo.pub.lang.UFDateTime
+ */
+ public void setTs(nc.vo.pub.lang.UFDateTime ts){
+ this.ts = ts;
+ }
+ /**
+ * nameGetter.ts
+ * :2025-08-26
+ * @return nc.vo.pub.lang.UFDateTime
+ */
+ public nc.vo.pub.lang.UFDateTime getTs(){
+ return this.ts;
+ }
+
+
+
+ public java.lang.String getParentPKFieldName() {
+ return null;
+ }
+
+ @Override
+ public java.lang.String getPKFieldName() {
+ return "pk_bchangemaster";
+ }
+
+ /**
+ * ر.
+ *
+ * :
+ * @return java.lang.String
+ */
+ @Override
+ public java.lang.String getTableName() {
+ return "mmbd_bchangemaster";
+ }
+
+ public static java.lang.String getDefaultTableName() {
+ return "mmbd_bchangemaster";
+ }
+
+ @Override
+ @nc.vo.annotation.MDEntityInfo(beanFullclassName = "nc.vo.bchange.bchange.BchangeMasterVO" )
+ public IVOMeta getMetaData() {
+ return VOMetaFactory.getInstance().getVOMeta("uapbd.bchangeMaster");
+ }
+
+}
diff --git a/bchange/src/public/nccloud/api/mmbd/bchangemanage/bchangemaster/BchangeMasterManageResources.java b/bchange/src/public/nccloud/api/mmbd/bchangemanage/bchangemaster/BchangeMasterManageResources.java
new file mode 100644
index 00000000..a4f99e98
--- /dev/null
+++ b/bchange/src/public/nccloud/api/mmbd/bchangemanage/bchangemaster/BchangeMasterManageResources.java
@@ -0,0 +1,267 @@
+
+package nccloud.api.mmbd.bchangemanage.bchangemaster;
+
+import java.lang.reflect.Field;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import java.lang.StringBuilder;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.HashMap;
+
+import org.json.JSONString;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import nccloud.ws.rest.resource.AbstractNCCRestResource;
+import nccloud.api.rest.utils.ResultMessageUtil;
+import nccloud.commons.lang.ArrayUtils;
+import nccloud.commons.lang.StringUtils;
+import nc.bs.framework.common.NCLocator;
+import nc.vo.pub.JavaType;
+import nc.vo.pub.IAttributeMeta;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.SuperVO;
+import nc.vo.pub.VOStatus;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pub.lang.UFLiteralDate;
+import nc.vo.pub.lang.UFTime;
+import nc.vo.bchange.bchange.BchangeMasterVO;
+import nc.itf.mmbd.bchange.bchangemaster.IBchangeMasterVOService;
+
+@Path("mmbd/bchangemanage/bchangeMaster")
+public class BchangeMasterManageResources extends AbstractNCCRestResource {
+
+ private Map fieldsNameAndType = new HashMap<>();
+
+ private Map> bodyFieldsNameAndTypes = new HashMap<>();
+
+ @Override
+ public String getModule() {
+ return "mmbd";
+ }
+
+ @POST
+ @Path("/addBchangeMasterVO")
+ @Consumes({ "application/json" })
+ @Produces({ "application/json" })
+ public JSONString addBchangeMasterVO(JSONString json) {
+ return dealJson(json, "addBchangeMasterVO");
+ }
+
+ @POST
+ @Path("/deleteBchangeMasterVO")
+ @Consumes({ "application/json" })
+ @Produces({ "application/json" })
+ public JSONString deleteBchangeMasterVO(JSONString json) {
+ return dealJson(json, "deleteBchangeMasterVO");
+ }
+
+ @POST
+ @Path("/updateBchangeMasterVO")
+ @Consumes({ "application/json" })
+ @Produces({ "application/json" })
+ public JSONString updateBchangeMasterVO(JSONString json) {
+ return dealJson(json, "updateBchangeMasterVO");
+ }
+
+ @POST
+ @Path("/queryBchangeMasterVO")
+ @Consumes({ "application/json" })
+ @Produces({ "application/json" })
+ public JSONString queryBchangeMasterVO(JSONString json) {
+ return dealJson(json, "queryBchangeMasterVO");
+ }
+
+ private JSONString dealJson(JSONString json, String methodName) {
+ if(json == null) {
+ return ResultMessageUtil.exceptionToJSON(new NullPointerException("Ϊգ"));
+ }
+ JSONObject obj = JSON.parseObject(json.toJSONString());
+ if(methodName.indexOf("add") >= 0) {
+ StringBuilder builder = requiredFieldsValidate(obj);
+ if(builder.length() > 0) {
+ String addError = "ʱڿֵΪյıУ" + builder.deleteCharAt(builder.length() - 1).toString();
+ return ResultMessageUtil.exceptionToJSON(new NullPointerException(addError));
+ } else {
+ // ýӿ
+ BchangeMasterVO vo = buildVO(obj, true);
+ BchangeMasterVO[] result = null;
+ try{
+ result = getService().saveBchangeMasterVO(vo);
+ } catch(BusinessException e) {
+ return ResultMessageUtil.exceptionToJSON(e);
+ }
+ JSONObject returnJson = new JSONObject();
+ returnJson.put("result", result);
+ return ResultMessageUtil.toJSON(returnJson);
+ }
+ } else if(methodName.indexOf("delete") >= 0) {
+ String entityPk = obj.getString("pk_bchangemaster");
+ if(StringUtils.isEmpty(entityPk)) {
+ return ResultMessageUtil.exceptionToJSON(new NullPointerException("ɾʱΪΪգ"));
+ }
+ // ɾҪȫ֡źҵԪ
+ String pk_org = obj.getString("pk_org");
+ // ûдpk_org, Ĭȫ
+ if(StringUtils.isEmpty(pk_org)) {
+ pk_org = "GLOBLE00000000000000";
+ }
+ // ýӿɾ
+ JSONObject returnJson = new JSONObject();
+ Map tsMap = new HashMap<>();
+ BchangeMasterVO[] vos = null;
+ try {
+ vos = getService().listBchangeMasterVOByPk("pk_bchangemaster = '" + entityPk + "'", false);
+ } catch (BusinessException e) {
+ ResultMessageUtil.exceptionToJSON(e);
+ }
+ if(ArrayUtils.isNotEmpty(vos)) {
+ tsMap.put(vos[0].getAttributeValue("pk_bchangemaster").toString(), vos[0].getTs().toString());
+ }
+ BchangeMasterVO[] result = null;
+ try {
+ result = getService().deleteBchangeMasterVOs(tsMap);
+ } catch (BusinessException e) {
+ ResultMessageUtil.exceptionToJSON(e);
+ }
+ returnJson.put("result", result);
+ return ResultMessageUtil.toJSON(returnJson);
+ } else if(methodName.indexOf("update") >= 0) {
+ JSONObject object = (JSONObject)obj.get("bchangeMaster");
+ String entityPk = object.getString("pk_bchangemaster");
+ if(StringUtils.isEmpty(entityPk)) {
+ return ResultMessageUtil.exceptionToJSON(new NullPointerException("ʱΪΪգ"));
+ }
+ StringBuilder builder = requiredFieldsValidate(obj);
+ if(builder.length() > 0) {
+ String updateError = "ʱڿֵΪյıУ" + builder.deleteCharAt(builder.length() - 1).toString();
+ return ResultMessageUtil.exceptionToJSON(new NullPointerException(updateError));
+ } else {
+ // ýӿ
+ BchangeMasterVO vo = buildVO(obj, false);
+ BchangeMasterVO[] result = null;
+ JSONObject returnJson = new JSONObject();
+ try{
+ result = getService().saveBchangeMasterVO(vo);
+ } catch(BusinessException e) {
+ return ResultMessageUtil.exceptionToJSON(e);
+ }
+ returnJson.put("result", result);
+ return ResultMessageUtil.toJSON(returnJson);
+ }
+ } else if(methodName.indexOf("query") >= 0) {
+ // ѯʱҪҵԪΪ
+ StringBuilder sqlBuilder = new StringBuilder(" isnull(dr, 0) = 0");
+ Set> entrySet = obj.entrySet();
+ Iterator> iterator = entrySet.iterator();
+ while(iterator.hasNext()) {
+ Entry entry = iterator.next();
+ if(entry.getValue() != null) {
+ sqlBuilder.append(" and " + entry.getKey() + "='" + entry.getValue() + "'");
+ }
+ }
+ BchangeMasterVO[] results = null;
+ try {
+ String[] pks = getService().listBchangeMasterVOPkByCond(sqlBuilder.toString());
+ results = getService().listBchangeMasterVOByPk(pks, false);
+ } catch (BusinessException e) {
+ return ResultMessageUtil.exceptionToJSON(e);
+ }
+ JSONObject returnJson = new JSONObject();
+ returnJson.put("result", results);
+ return ResultMessageUtil.toJSON(returnJson);
+ }
+ return null;
+ }
+
+ private StringBuilder requiredFieldsValidate(JSONObject obj) {
+ StringBuilder builder = new StringBuilder();
+ List notNullFields = getRequiredFields(obj);
+ JSONObject object = (JSONObject)obj.get("bchangeMaster");
+ for(String notNullField : notNullFields) {
+ Object val = object.get(notNullField);
+ if(val == null){
+ builder.append(notNullField + ",");
+ }
+ }
+ return builder;
+ }
+
+ private BchangeMasterVO buildVO(JSONObject json, boolean isAdd) {
+ if(json.get("bchangeMaster") == null) {
+ throw new NullPointerException("вʵݣ");
+ }
+ int voStatus = isAdd ? VOStatus.NEW : VOStatus.UPDATED;
+
+ // ʵ
+ JSONObject headJson = (JSONObject) json.get("bchangeMaster");
+ BchangeMasterVO headVO = new BchangeMasterVO();
+ IAttributeMeta[] headAttrs = headVO.getMetaData().getAttributes();
+ for (IAttributeMeta attribute : headAttrs) {
+ Object value = getValueByAttr(headJson, attribute);
+ headVO.setAttributeValue(attribute.getName(), value);
+ }
+ headVO.setStatus(voStatus);
+
+ return headVO;
+ }
+
+ private Object getValueByAttr(JSONObject json, IAttributeMeta attribute) {
+ Object value = json.get(attribute.getName());
+ if (value == null || StringUtils.isEmpty(value.toString())) {
+ return null;
+ }
+ JavaType javaType = attribute.getJavaType();
+ switch (javaType) {
+ case String:
+ case UFStringEnum:
+ return value.toString();
+ case BigDecimal:
+ return new BigDecimal(value.toString());
+ case Integer:
+ case UFFlag:
+ return Integer.valueOf(value.toString());
+ case UFDouble:
+ return new UFDouble(value.toString());
+ case UFBoolean:
+ return new UFBoolean(value.toString());
+ case UFDate:
+ return new UFDate(value.toString());
+ case UFDateTime:
+ return new UFDateTime(value.toString());
+ case UFTime:
+ return new UFTime(value.toString());
+ case UFLiteralDate:
+ return new UFLiteralDate(value.toString());
+ default:
+ return value;
+ }
+ }
+
+ private List getRequiredFields(JSONObject obj) {
+ List notNullFields = new ArrayList();
+ return notNullFields;
+ }
+
+ private IBchangeMasterVOService getService() {
+ return NCLocator.getInstance().lookup(IBchangeMasterVOService.class);
+ }
+
+}
+