diff --git a/arap/META-INF/arap_paybill.rest b/arap/META-INF/arap_paybill.rest
new file mode 100644
index 0000000..0a79236
--- /dev/null
+++ b/arap/META-INF/arap_paybill.rest
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/arap/src/public/nc/api/arap/resource/ArapBaseRestResource.java b/arap/src/public/nc/api/arap/resource/ArapBaseRestResource.java
new file mode 100644
index 0000000..5357c04
--- /dev/null
+++ b/arap/src/public/nc/api/arap/resource/ArapBaseRestResource.java
@@ -0,0 +1,314 @@
+package nc.api.arap.resource;
+
+import com.google.gson.Gson;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import nc.api.arap.util.ArapAPIUtil;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.arap.pub.IArapBillService;
+import nc.vo.arap.basebill.BaseAggVO;
+import nc.vo.arap.openapi.ArapBillOpenApiVO;
+import nc.vo.arap.openapi.ArapF0EstiOpenApiVO;
+import nc.vo.arap.openapi.ArapF1EstiOpenApiVO;
+import nc.vo.arap.verify.ArapVerifyVO;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFBoolean;
+import nccloud.api.rest.utils.NCCRestUtils;
+import nccloud.api.rest.utils.ResultMessageUtil;
+import nccloud.impl.platform.common.util.StringUtils;
+import nccloud.pubitf.arap.openapi.IARAPOpenAPIService;
+import nccloud.pubitf.arap.openapi.IBillOpenService;
+import nccloud.ws.rest.resource.AbstractNCCRestResource;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.json.JSONString;
+import java.lang.reflect.Method;
+import nc.bs.logging.Logger;
+import nc.itf.arap.fieldmap.IBillFieldGet;
+import nc.vo.pub.BusinessRuntimeException;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDouble;
+import com.google.gson.internal.LinkedTreeMap;
+
+public class ArapBaseRestResource extends AbstractNCCRestResource {
+ public String getModule() {
+ return "arap";
+ }
+
+ protected T fromJson(String json, Type clazz) {
+ return (T) (new Gson()).fromJson(json, clazz);
+ }
+
+ public BaseAggVO fromJsonToAggVO(String json, String billtype) {
+ ArapBillOpenApiVO apivo = (ArapBillOpenApiVO) fromJson(json, ArapBillOpenApiVO.class);
+ return apivo.toAggVO(billtype);
+ }
+
+ public ArapF1EstiOpenApiVO fromJsonToAggVOForSP(String json, String billtype) {
+ return (ArapF1EstiOpenApiVO) fromJson(json, ArapF1EstiOpenApiVO.class);
+ }
+
+ public ArapF0EstiOpenApiVO fromJsonToF0AggVOForSP(String json, String billtype) {
+ return (ArapF0EstiOpenApiVO) fromJson(json, ArapF0EstiOpenApiVO.class);
+ }
+
+ public ArapVerifyVO fromJsonToArapVerifyVO(String json) {
+ return (ArapVerifyVO) fromJson(json, ArapVerifyVO.class);
+ }
+
+ public JSONString unCommitAndDelBill(JSONString str, String keyItem, String pk_billtype) throws BusinessException {
+ NCCRestUtils.initInvocationInfo();
+ String json = str.toJSONString();
+ Map billMap = (Map) fromJson(json, Map.class);
+ String[] pk_bills = null;
+ IBillOpenService service = (IBillOpenService) NCLocator.getInstance()
+ .lookup(ArapAPIUtil.getClassName(pk_billtype));
+ if (StringUtils.isEmpty((String) billMap.get(keyItem))) {
+ try {
+ List returnMap = service.getPkBySrc(billMap);
+ if (returnMap == null) {
+ return ResultMessageUtil.exceptionToJSON(
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0970"), "filed");
+ }
+
+ pk_bills = (String[]) returnMap.toArray(new String[returnMap.size()]);
+ } catch (Exception e) {
+ return ResultMessageUtil.exceptionToJSON(e);
+ }
+ } else {
+ String pk_bill = (String) billMap.get(keyItem);
+ pk_bills = pk_bill.split(",");
+ }
+
+ try {
+ UFBoolean[] checkHasFlowBills = new UFBoolean[0];
+ IArapBillService sservice = (IArapBillService) NCLocator.getInstance().lookup(IArapBillService.class);
+ checkHasFlowBills = sservice.checkHasFlowBills(pk_bills, pk_billtype);
+ if (!ArrayUtils.isEmpty(checkHasFlowBills) && checkHasFlowBills[0].booleanValue()) {
+ String mess = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1680");
+ throw new BusinessException(mess);
+ }
+
+ Map returnMap = service.unCommitAndDelBill(pk_bills);
+ if (returnMap == null) {
+ return ResultMessageUtil.exceptionToJSON(
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0970"), "filed");
+ }
+
+ return ResultMessageUtil.toJSON(returnMap);
+ } catch (Exception e) {
+ throw new BusinessException(e);
+ }
+ }
+
+ protected JSONString queryBill(JSONString str, String pk_billtype) {
+ NCCRestUtils.initInvocationInfo();
+ String json = str.toJSONString();
+ Map conditionMap = (Map) fromJson(json, Map.class);
+ try {
+ IBillOpenService service = (IBillOpenService) NCLocator.getInstance()
+ .lookup(ArapAPIUtil.getClassName(pk_billtype));
+ List