package foundation.ai.dao; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import foundation.clean.CleanBucket; import foundation.clean.CleanEngine; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.util.Util; public class InvoiceVerificationDao implements IJSONProvider { private String code; private String number; private String machineNo; private String checkCode; private String invoiceDate; private String hasSellerList; private String trafficFreeFlag; private String typeCode; private String buyerName; private String buyerTaxCode; private String buyerAddressPhone; private String buyerBankAccount; private String sellerName; private String sellerTaxCode; private String sellerBankAccount; private String sellerAddressPhone; private String sellerListTax; private String amountWithTax; private String amountWithoutTax; private String amountTax; private String bureauTax; private String remark; private String isAbandoned; private InvoiceStatus invoiceStatus; private boolean isReal; private boolean isBill; private boolean isDistinct; private List items; public void parse(JSONObject jsonObject) throws Exception { code = jsonObject.getString("invoiceCode"); number = jsonObject.getString("invoiceNo"); machineNo = jsonObject.getString("machineNo"); checkCode = jsonObject.getString("checkCode"); invoiceDate = jsonObject.getString("invoiceDate"); typeCode = jsonObject.getString("invoiceType"); hasSellerList = jsonObject.getString("hasSellerList"); trafficFreeFlag = jsonObject.getString("trafficFreeFlag"); buyerName = jsonObject.getString("buyerName"); buyerTaxCode = jsonObject.getString("buyerTaxNo"); buyerAddressPhone = jsonObject.getString("buyerAddressPhone"); buyerBankAccount = jsonObject.getString("buyerAccount"); sellerName = jsonObject.getString("salerName"); sellerTaxCode = jsonObject.getString("salerTaxNo"); sellerBankAccount = jsonObject.getString("salerAccount"); sellerAddressPhone = jsonObject.getString("salerAddressPhone"); sellerListTax = jsonObject.getString("sellerListTax"); amountWithTax = jsonObject.getString("totalAmount"); amountWithoutTax = jsonObject.getString("amount"); amountTax = jsonObject.getString("taxAmount"); bureauTax = jsonObject.getString("bureauTax"); remark = jsonObject.getString("remark"); isDistinct = true; isAbandoned = jsonObject.getString("cancelMark"); if(Util.isEmpty(isAbandoned)) { isReal = false; }else { isReal = !Util.StringToBoolean(isAbandoned); } invoiceStatus = InvoiceStatus.parse(jsonObject.getString("invoiceStatus")); String checkStatus = jsonObject.getString("checkStatus"); if("1".equalsIgnoreCase(checkStatus)) { isBill = true; }else { isBill = Util.StringToBoolean(checkStatus); } JSONArray itemArray = jsonObject.getJSONArray("items"); items = new ArrayList(); if(itemArray == null || itemArray.size() <= 0 ) { return ; } for(int i=0; i < itemArray.size(); i++){ JSONObject oneDetail = itemArray.getJSONObject(i); InvoiceVerificationDetailDao detail = new InvoiceVerificationDetailDao(); detail.parse(oneDetail); CleanBucket cleanBucket = CleanBucket.getInstance(); CleanEngine cleanEngine = cleanBucket.get("product_name_clean"); String productName = cleanEngine.modify(detail.getName()); if(Util.isEmpty(productName)) { continue; } items.add(detail); } } public InvoiceVerificationDao(InvoiceStatus invoiceStatus) { super(); this.invoiceStatus = invoiceStatus; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getMachineNo() { return machineNo; } public void setMachineNo(String machineNo) { this.machineNo = machineNo; } public String getCheckCode() { return checkCode; } public void setCheckCode(String checkCode) { this.checkCode = checkCode; } public String getInvoiceDate() { return invoiceDate; } public void setInvoiceDate(String invoiceDate) { this.invoiceDate = invoiceDate; } public String getHasSellerList() { return hasSellerList; } public void setHasSellerList(String hasSellerList) { this.hasSellerList = hasSellerList; } public String getTrafficFreeFlag() { return trafficFreeFlag; } public void setTrafficFreeFlag(String trafficFreeFlag) { this.trafficFreeFlag = trafficFreeFlag; } public String getTypeCode() { return typeCode; } public void setTypeCode(String typeCode) { this.typeCode = typeCode; } public String getBuyerName() { return buyerName; } public void setBuyerName(String buyerName) { this.buyerName = buyerName; } public String getBuyerTaxCode() { return buyerTaxCode; } public void setBuyerTaxCode(String buyerTaxCode) { this.buyerTaxCode = buyerTaxCode; } public String getBuyerAddressPhone() { return buyerAddressPhone; } public void setBuyerAddressPhone(String buyerAddressPhone) { this.buyerAddressPhone = buyerAddressPhone; } public String getBuyerBankAccount() { return buyerBankAccount; } public void setBuyerBankAccount(String buyerBankAccount) { this.buyerBankAccount = buyerBankAccount; } public String getSellerName() { return sellerName; } public void setSellerName(String sellerName) { this.sellerName = sellerName; } public String getSellerTaxCode() { return sellerTaxCode; } public void setSellerTaxCode(String sellerTaxCode) { this.sellerTaxCode = sellerTaxCode; } public String getSellerBankAccount() { return sellerBankAccount; } public void setSellerBankAccount(String sellerBankAccount) { this.sellerBankAccount = sellerBankAccount; } public String getSellerAddressPhone() { return sellerAddressPhone; } public void setSellerAddressPhone(String sellerAddressPhone) { this.sellerAddressPhone = sellerAddressPhone; } public String getSellerListTax() { return sellerListTax; } public void setSellerListTax(String sellerListTax) { this.sellerListTax = sellerListTax; } public String getAmountWithTax() { return amountWithTax; } public void setAmountWithTax(String amountWithTax) { this.amountWithTax = amountWithTax; } public String getAmountWithoutTax() { return amountWithoutTax; } public void setAmountWithoutTax(String amountWithoutTax) { this.amountWithoutTax = amountWithoutTax; } public String getAmountTax() { return amountTax; } public void setAmountTax(String amountTax) { this.amountTax = amountTax; } public String getBureauTax() { return bureauTax; } public void setBureauTax(String bureauTax) { this.bureauTax = bureauTax; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getIsAbandoned() { return isAbandoned; } public void setIsAbandoned(String isAbandoned) { this.isAbandoned = isAbandoned; } public InvoiceStatus getInvoiceStatus() { return invoiceStatus; } public void setInvoiceStatus(InvoiceStatus invoiceStatus) { this.invoiceStatus = invoiceStatus; } public boolean isReal() { return isReal; } public void setReal(boolean isReal) { this.isReal = isReal; } public boolean isBill() { return isBill; } public void setBill(boolean isBill) { this.isBill = isBill; } public boolean isDistinct() { return isDistinct; } public void setDistinct(boolean isDistinct) { this.isDistinct = isDistinct; } public List getItems() { return items; } public void setItems(List items) { this.items = items; } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(); writer.write("code", code); writer.write("number", number); writer.write("machine_no", machineNo); writer.write("check_code", checkCode); writer.write("invoice_date", invoiceDate); writer.write("has_seller_list", hasSellerList); writer.write("traffic_free_flag", trafficFreeFlag); writer.write("type_code", typeCode); writer.write("buyer_name", buyerName); writer.write("buyer_taxcode", buyerTaxCode); writer.write("buyer_address_phone", buyerAddressPhone); writer.write("buyer_bank_account", buyerBankAccount); writer.write("seller_name", sellerName); writer.write("seller_taxcode", sellerTaxCode); writer.write("seller_address_phone", sellerAddressPhone); writer.write("seller_bank_account", sellerBankAccount); writer.write("seller_list_tax", sellerListTax); writer.write("amount_with_tax", amountWithTax); writer.write("amount_without_tax", amountWithoutTax); writer.write("amount_tax", amountTax); writer.write("bureau_tax", bureauTax); writer.write("remark", remark); writer.write("is_abandoned", isAbandoned); writer.write("is_real", isReal); writer.write("is_bill", isBill); writer.write("invoice_status", invoiceStatus.name()); writer.write("is_distinct", isDistinct); writer.beginArray("invoiceDetailList"); if(items != null && items.size() > 0 ) { for (InvoiceVerificationDetailDao detail : items) { detail.writeJSON(writer); } } writer.endArray(); writer.endObject(); } }