From d797198c5339423c6f904182ad7b9dfe6f8c973c Mon Sep 17 00:00:00 2001 From: wuwenxiong <646448316@qq.com> Date: Wed, 22 Dec 2021 10:15:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E5=94=AE=E5=8D=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cowr/common/enums/OrderTypeEnum.java | 3 +- .../java/com/cowr/common/utils/StrUtil.java | 19 +- .../java/com/cowr/model/PresellOrder.java | 14 + .../main/java/com/cowr/model/PresellPug.java | 14 + .../main/java/com/cowr/model/_MappingKit.java | 4 + .../com/cowr/model/base/BaseCustomer.java | 23 ++ .../com/cowr/model/base/BasePresellOrder.java | 308 ++++++++++++++++++ .../com/cowr/model/base/BasePresellPug.java | 222 +++++++++++++ .../prepaycustomer/PrepayCustomerService.java | 29 ++ .../presellorder/PresellOrderService.java | 126 +++++++ .../ssjygl/presellpug/PresellPugService.java | 93 ++++++ .../ssjygl/stat/sale/OrderStatService.java | 257 +++++++++++++++ .../com/cowr/local/ssjygl/main/Config.java | 2 + .../presellorder/PresellOrderController.java | 44 +++ .../presellpug/PresellPugController.java | 35 ++ .../com/cowr/service/ssjygl/main/Config.java | 2 + .../presellorder/PresellOrderController.java | 110 +++++++ .../presellorder/PresellOrderPKValidator.java | 25 ++ .../presellorder/PresellOrderSyncService.java | 256 +++++++++++++++ .../presellorder/PresellOrderValidator.java | 48 +++ .../presellpug/PresellPugController.java | 73 +++++ .../presellpug/PresellPugPKValidator.java | 24 ++ .../ssjygl/presellpug/PresellPugService.java | 147 +++++++++ .../presellpug/PresellPugValidator.java | 46 +++ .../ssjygl/stat/sale/OrderStatController.java | 14 + 25 files changed, 1933 insertions(+), 5 deletions(-) create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/model/PresellOrder.java create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/model/PresellPug.java create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellOrder.java create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellPug.java create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java create mode 100644 ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellpug/PresellPugService.java create mode 100644 ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellorder/PresellOrderController.java create mode 100644 ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellpug/PresellPugController.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderController.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderPKValidator.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderSyncService.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderValidator.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugController.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugPKValidator.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugService.java create mode 100644 ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugValidator.java diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/common/enums/OrderTypeEnum.java b/ssjygl-xsx-common/src/main/java/com/cowr/common/enums/OrderTypeEnum.java index bb1bda1..9a1b783 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/common/enums/OrderTypeEnum.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/common/enums/OrderTypeEnum.java @@ -16,7 +16,8 @@ public enum OrderTypeEnum { TRANSFER(2), TEMP(3), TRASH(4), - PURCHASE(5); + PURCHASE(5), + PRESELL(6); OrderTypeEnum(int typeid) { this.typeid = typeid; diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/StrUtil.java b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/StrUtil.java index d2dd3b0..8e893bb 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/StrUtil.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/StrUtil.java @@ -3,10 +3,7 @@ package com.cowr.common.utils; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Record; -import java.util.Collection; -import java.util.Iterator; -import java.util.StringTokenizer; -import java.util.UUID; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -205,4 +202,18 @@ public class StrUtil { return var2.toString(); } + + /** + * 生成指定位数的随机数 + * @param length + * @return + */ + public static String getRandom(int length) { + StringBuilder val = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < length; i++) { + val.append(String.valueOf(random.nextInt(10))); + } + return val.toString(); + } } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellOrder.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellOrder.java new file mode 100644 index 0000000..12ea793 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellOrder.java @@ -0,0 +1,14 @@ +package com.cowr.model; + +import com.cowr.model.base.BasePresellOrder; + +/** + * Generated by COWR Wed Dec 15 11:37:31 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +@SuppressWarnings("serial") +public class PresellOrder extends BasePresellOrder { + public static final PresellOrder dao = new PresellOrder().dao(); +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellPug.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellPug.java new file mode 100644 index 0000000..fb84690 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/PresellPug.java @@ -0,0 +1,14 @@ +package com.cowr.model; + +import com.cowr.model.base.BasePresellPug; + +/** + * Generated by COWR Thu Dec 16 15:44:52 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +@SuppressWarnings("serial") +public class PresellPug extends BasePresellPug { + public static final PresellPug dao = new PresellPug().dao(); +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/_MappingKit.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/_MappingKit.java index faca705..65c36c6 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/model/_MappingKit.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/_MappingKit.java @@ -87,6 +87,10 @@ public class _MappingKit { arp.addMapping("truck_weight_limit_modify_log", "id", TruckWeightLimitModifyLog.class); arp.addMapping("customer_contract_signed_log", "id", CustomerContractSignedLog.class); arp.addMapping("customer_contract_template", "id", CustomerContractTemplate.class); + + + arp.addMapping("presell_order", "id", PresellOrder.class); + arp.addMapping("presell_pug", "id", PresellPug.class); } } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseCustomer.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseCustomer.java index 5cf7cc2..3da61e8 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseCustomer.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseCustomer.java @@ -284,6 +284,29 @@ public abstract class BaseCustomer> extends BaseModel< return getInt("invoice_type"); } + /** + * 是否预售客户 + * name: presell_type + * type: INT(10) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: 1 + * @param presellType 0不是,1是 + */ + @JSONField(name="presell_type") + public void setPresellType(Integer presellType) { + set("presell_type", presellType); + } + + + /** + * @return invoice_type 0不是,1是 + */ + @JSONField(name="presell_type") + public Integer getPresellType() { + return getInt("presell_type"); + } + /** * name: customer_type_id * type: INT(10) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellOrder.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellOrder.java new file mode 100644 index 0000000..b761e56 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellOrder.java @@ -0,0 +1,308 @@ +package com.cowr.model.base; + +import com.cowr.common.base.BaseModel; +import com.jfinal.plugin.activerecord.IBean; +import com.alibaba.fastjson.annotation.JSONField; + +/** + * Generated by COWR Wed Dec 15 11:37:31 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +@SuppressWarnings("serial") +public abstract class BasePresellOrder> extends BaseModel implements IBean { + + public static final String tablename = "presell_order"; + + @JSONField(serialize=false) + public String getTablename(){ + return tablename; + } + + /** + * name: id + * type: CHAR(32) + * isNullable: NO + * isPrimaryKey: YES + * defaultValue: + * @param id 主键uuid + */ + @JSONField(name="id") + public void setId(String id) { + set("id", id); + } + + + /** + * @return id 主键uuid + */ + @JSONField(name="id") + public String getId() { + return getStr("id"); + } + + /** + * name: presell_sn + * type: CHAR(16) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param presellSn YYYYMMDD + 两位销售点id(避免离线生成订单号重复) + 两位订单类型 + 四位序列号 + */ + @JSONField(name="presell_sn") + public void setPresellSn(String presellSn) { + set("presell_sn", presellSn); + } + + + /** + * @return presell_sn YYYYMMDD + 两位销售点id(避免离线生成订单号重复) + 两位订单类型 + 四位序列号 + */ + @JSONField(name="presell_sn") + public String getPresellSn() { + return getStr("presell_sn"); + } + + /** + * name: customer_id + * type: INT(11) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param customerId 客户id + */ + @JSONField(name="customer_id") + public void setCustomerId(Integer customerId) { + set("customer_id", customerId); + } + + + /** + * @return customer_id 客户id + */ + @JSONField(name="customer_id") + public Integer getCustomerId() { + return getInt("customer_id"); + } + + /** + * name: supermarket_id + * type: INT(10) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param supermarketId 超市id + */ + @JSONField(name="supermarket_id") + public void setSupermarketId(Integer supermarketId) { + set("supermarket_id", supermarketId); + } + + + /** + * @return supermarket_id 超市id + */ + @JSONField(name="supermarket_id") + public Integer getSupermarketId() { + return getInt("supermarket_id"); + } + + /** + * name: presell_date + * type: DATE(10) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param presellDate 预售日期 + */ + @JSONField(name="presell_date") + public void setPresellDate(java.util.Date presellDate) { + set("presell_date", presellDate); + } + + + /** + * @return presell_date 预售日期 + */ + @JSONField(name="presell_date") + public java.util.Date getPresellDate() { + return get("presell_date"); + } + + /** + * name: presell_amount + * type: DECIMAL(12,2) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: 0.00 + * @param presellAmount 预售金额 + */ + @JSONField(name="presell_amount") + public void setPresellAmount(java.math.BigDecimal presellAmount) { + set("presell_amount", presellAmount); + } + + + /** + * @return presell_amount 预售金额 + */ + @JSONField(name="presell_amount") + public java.math.BigDecimal getPresellAmount() { + return get("presell_amount"); + } + + /** + * name: invoice_number + * type: VARCHAR(20) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param invoiceNumber 发票代码 + */ + @JSONField(name="invoice_number") + public void setInvoiceNumber(String invoiceNumber) { + set("invoice_number", invoiceNumber); + } + + + /** + * @return invoice_number 发票代码 + */ + @JSONField(name="invoice_number") + public String getInvoiceNumber() { + return getStr("invoice_number"); + } + + /** + * name: invoice_code + * type: VARCHAR(20) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param invoiceCode 发票号码 + */ + @JSONField(name="invoice_code") + public void setInvoiceCode(String invoiceCode) { + set("invoice_code", invoiceCode); + } + + + /** + * @return invoice_code 发票号码 + */ + @JSONField(name="invoice_code") + public String getInvoiceCode() { + return getStr("invoice_code"); + } + + /** + * name: create_user_id + * type: INT UNSIGNED(10) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createUserId 创建人id + */ + @JSONField(name="create_user_id") + public void setCreateUserId(Integer createUserId) { + set("create_user_id", createUserId); + } + + + /** + * @return create_user_id 创建人id + */ + @JSONField(name="create_user_id") + public Integer getCreateUserId() { + return getInt("create_user_id"); + } + + /** + * name: create_user_name + * type: VARCHAR(20) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createUserName 创建用户名 + */ + @JSONField(name="create_user_name") + public void setCreateUserName(String createUserName) { + set("create_user_name", createUserName); + } + + + /** + * @return create_user_name 创建用户名 + */ + @JSONField(name="create_user_name") + public String getCreateUserName() { + return getStr("create_user_name"); + } + + /** + * name: create_time + * type: DATETIME(19) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createTime 创建时间 + */ + @JSONField(name="create_time") + public void setCreateTime(java.util.Date createTime) { + set("create_time", createTime); + } + + + /** + * @return create_time 创建时间 + */ + @JSONField(name="create_time") + public java.util.Date getCreateTime() { + return get("create_time"); + } + + /** + * name: memo + * type: VARCHAR(255) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param memo 备注 + */ + @JSONField(name="memo") + public void setMemo(String memo) { + set("memo", memo); + } + + + /** + * @return memo 备注 + */ + @JSONField(name="memo") + public String getMemo() { + return getStr("memo"); + } + + /** + * name: del + * type: tinyint + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param del 逻辑删除标识:0未删除,1已删除 + */ + @JSONField(name="del") + public void setDel(Integer del) { + set("del", del); + } + + + /** + * @return del 逻辑删除标识:0未删除,1已删除 + */ + @JSONField(name="del") + public Integer getDel() { + return getInt("del"); + } +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellPug.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellPug.java new file mode 100644 index 0000000..4df2c82 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BasePresellPug.java @@ -0,0 +1,222 @@ +package com.cowr.model.base; + +import com.cowr.common.base.BaseModel; +import com.jfinal.plugin.activerecord.IBean; +import com.alibaba.fastjson.annotation.JSONField; + +/** + * Generated by COWR Thu Dec 16 15:44:52 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +@SuppressWarnings("serial") +public abstract class BasePresellPug> extends BaseModel implements IBean { + + public static final String tablename = "presell_pug"; + + @JSONField(serialize=false) + public String getTablename(){ + return tablename; + } + + /** + * name: id + * type: INT UNSIGNED(10) + * isNullable: NO + * isPrimaryKey: YES + * defaultValue: + * @param id 主键 + */ + @JSONField(name="id") + public void setId(String id) { + set("id", id); + } + + + /** + * @return id 主键 + */ + @JSONField(name="id") + public String getId() { + return getStr("id"); + } + + /** + * name: presell_order_id + * type: CHAR(32) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param presellOrderId 预售单的id + */ + @JSONField(name="presell_order_id") + public void setPresellOrderId(String presellOrderId) { + set("presell_order_id", presellOrderId); + } + + + /** + * @return presell_order_id 预售单的id + */ + @JSONField(name="presell_order_id") + public String getPresellOrderId() { + return getStr("presell_order_id"); + } + + /** + * name: amount + * type: decimal + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param amount 提货金额 + */ + @JSONField(name="amount") + public void setAmount(java.math.BigDecimal amount) { + set("amount", amount); + } + + + /** + * @return amount 提货金额 + */ + @JSONField(name="amount") + public java.math.BigDecimal getAmount() { + return getBigDecimal("amount"); + } + + /** + * name: start_time + * type: DATETIME(19) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param startTime 运输起始时间 + */ + @JSONField(name="start_time") + public void setStartTime(java.util.Date startTime) { + set("start_time", startTime); + } + + + /** + * @return start_time 运输起始时间 + */ + @JSONField(name="start_time") + public java.util.Date getStartTime() { + return get("start_time"); + } + + /** + * name: cutoff_time + * type: DATETIME(19) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: + * @param cutoffTime 运输截止时间 + */ + @JSONField(name="cutoff_time") + public void setCutoffTime(java.util.Date cutoffTime) { + set("cutoff_time", cutoffTime); + } + + + /** + * @return cutoff_time 运输截止时间 + */ + @JSONField(name="cutoff_time") + public java.util.Date getCutoffTime() { + return get("cutoff_time"); + } + + /** + * name: create_time + * type: DATETIME(19) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createTime 创建时间 + */ + @JSONField(name="create_time") + public void setCreateTime(java.util.Date createTime) { + set("create_time", createTime); + } + + + /** + * @return create_time 创建时间 + */ + @JSONField(name="create_time") + public java.util.Date getCreateTime() { + return get("create_time"); + } + + /** + * name: create_user_id + * type: INT UNSIGNED(10) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createUserId 创建人id + */ + @JSONField(name="create_user_id") + public void setCreateUserId(Long createUserId) { + set("create_user_id", createUserId); + } + + + /** + * @return create_user_id 创建人id + */ + @JSONField(name="create_user_id") + public Long getCreateUserId() { + return getLong("create_user_id"); + } + + /** + * name: create_user_name + * type: VARCHAR(20) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param createUserName 创建人姓名 + */ + @JSONField(name="create_user_name") + public void setCreateUserName(String createUserName) { + set("create_user_name", createUserName); + } + + + /** + * @return create_user_name 创建人姓名 + */ + @JSONField(name="create_user_name") + public String getCreateUserName() { + return getStr("create_user_name"); + } + + /** + * name: memo + * type: VARCHAR(255) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param memo 备注 + */ + @JSONField(name="memo") + public void setMemo(String memo) { + set("memo", memo); + } + + + /** + * @return memo 备注 + */ + @JSONField(name="memo") + public String getMemo() { + return getStr("memo"); + } + + +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/prepaycustomer/PrepayCustomerService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/prepaycustomer/PrepayCustomerService.java index 1717a77..0b508f4 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/prepaycustomer/PrepayCustomerService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/prepaycustomer/PrepayCustomerService.java @@ -12,4 +12,33 @@ public class PrepayCustomerService { public PrepayCustomer getPrepayCustomer(int customer_id) { return PrepayCustomer.dao.findFirst("select * from prepay_customer where customer_id = ? limit 1", customer_id); } + + public PrepayCustomer getPrepayCustomerSurplus(int customer_id) { + return PrepayCustomer.dao.findFirst("SELECT\n" + + " a.*\n" + + "FROM\n" + + " (\n" + + " SELECT\n" + + " (\n" + + " t.surplus - ifnull(m.amount, 0)\n" + + " ) surplus,\n" + + " t.id,\n" + + " t.customer_id\n" + + " FROM\n" + + " prepay_customer t\n" + + " LEFT JOIN (\n" + + " SELECT\n" + + " customer_id,\n" + + " ifnull(sum(amount), 0) amount\n" + + " FROM\n" + + " refund_detail\n" + + " WHERE\n" + + " state < 3\n" + + " GROUP BY\n" + + " customer_id\n" + + " ) m ON t.customer_id = m.customer_id\n" + + " ) a\n" + + "WHERE\n" + + " a.customer_id = ?", customer_id); + } } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java new file mode 100644 index 0000000..9c924c9 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java @@ -0,0 +1,126 @@ +package com.cowr.ssjygl.presellorder; + +import com.cowr.common.Const; +import com.cowr.common.base.BaseService; +import com.cowr.common.view.PageParam; +import com.cowr.model.PresellOrder; +import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Page; +import com.jfinal.plugin.activerecord.Record; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderService extends BaseService { + public static final PresellOrderService me = new PresellOrderService(); + + public Page find(PageParam pp, Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm) { + String selectsql = "select t.*, c.name customer_name, s.name supermarket_name, c.address, c.texpayer_name, c.texpayer_num, c.memo, p.surplus \n"; + String fromsql = " from presell_order t \n" + + " left join customer c on t.customer_id = c.id \n" + + " left join prepay_customer p on t.customer_id = p.customer_id \n" + + " left join supermarket s on t.supermarket_id = s.id \n" + + " where 1=1 \n"; + List paraList = new ArrayList<>(); + + if (del != null && (del == Const.LOGIC_DEL_VALID || del == Const.LOGIC_DEL_INVALID)) { + fromsql += " and t.del = ? \n"; + paraList.add(del); + } + + if (StrKit.notBlank(name)) { + fromsql += " and c.name like ? \n"; + paraList.add("%" + name.trim() + "%"); + } + + if (supermarket_id != null) { + fromsql += " and s.id = ?"; + paraList.add(supermarket_id); + } + + if (customer_id != null) { + fromsql += " and c.id = ?"; + paraList.add(customer_id); + } + + if (StrKit.notBlank(stm)) { + fromsql += " and t.create_time >= ?"; + paraList.add(stm); + } + + if (StrKit.notBlank(etm)) { + fromsql += " and t.create_time <= ?"; + paraList.add(etm); + } + + String totalRowSql = "select count(*) " + fromsql; + String findSql = selectsql + fromsql; + + // 前端传了排序字段,并且排序字段存在相关表中 + if (StrKit.notBlank(pp.getSort_field()) && PresellOrder.dao.hasColunm(pp.getSort_field())) { + findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field(); + + if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) { + findSql += " " + Const.ORDER_BY_ASC; + } else { + findSql += " " + Const.ORDER_BY_DESC; + } + } else { + findSql += " order by t.create_time desc"; + } + + return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); + } + + public List list(Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm) { + String sql = "select t.*, c.name customer_name, s.name supermarket_name, c.address, c.texpayer_name, c.texpayer_num, c.memo, p.surplus \n" + + " from presell_order t \n" + + " left join customer c on t.customer_id = c.id \n" + + " left join prepay_customer p on t.customer_id = p.customer_id \n" + + " left join supermarket s on t.supermarket_id = s.id \n" + + " where 1=1 \n"; + List paraList = new ArrayList<>(); + + if (del != null && (del == Const.LOGIC_DEL_VALID || del == Const.LOGIC_DEL_INVALID)) { + sql += " and t.del = ? \n"; + paraList.add(del); + } + + if (StrKit.notBlank(name)) { + sql += " and c.name like ? \n"; + paraList.add("%" + name.trim() + "%"); + } + + if (supermarket_id != null) { + sql += " and s.id = ?"; + paraList.add(supermarket_id); + } + + if (customer_id != null) { + sql += " and c.id = ?"; + paraList.add(customer_id); + } + + if (StrKit.notBlank(stm)) { + sql += " and t.create_time >= ?"; + paraList.add(stm); + } + + if (StrKit.notBlank(etm)) { + sql += " and t.create_time <= ?"; + paraList.add(etm); + } + + return PresellOrder.dao.find(sql, paraList.toArray()); + } + + +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellpug/PresellPugService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellpug/PresellPugService.java new file mode 100644 index 0000000..b638872 --- /dev/null +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellpug/PresellPugService.java @@ -0,0 +1,93 @@ +package com.cowr.ssjygl.presellpug; + +import com.cowr.common.Const; +import com.cowr.common.base.BaseService; +import com.cowr.common.view.PageParam; +import com.cowr.model.PresellPug; +import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Page; +import com.jfinal.plugin.activerecord.Record; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugService extends BaseService { + public static final PresellPugService me = new PresellPugService(); + + public Page find(PageParam pp, Integer customer_id, Integer supermarket_id, String name, String stm, String etm) { + String selectsql = "select t.*, c.name customer_name, s.name supermarket_name, d.name product_name, c.address, c.texpayer_name, c.texpayer_num, c.memo \n"; + String fromsql = " from presell_pug t \n" + + " left join presell_order o on t.presell_order_id = o.id \n" + + " left join supermarket s on o.supermarket_id = s.id \n" + + " left join product d on o.supermarket_id = d.id \n" + + " where 1=1 \n"; + List paraList = new ArrayList<>(); + + if (StrKit.notBlank(name)) { + fromsql += " and c.name like ? \n"; + paraList.add("%" + name.trim() + "%"); + } + + if (supermarket_id != null) { + fromsql += " and s.id = ?"; + paraList.add(supermarket_id); + } + + if (customer_id != null) { + fromsql += " and c.id = ?"; + paraList.add(customer_id); + } + + if (StrKit.notBlank(stm)) { + fromsql += " and t.create_time >= ?"; + paraList.add(stm); + } + + if (StrKit.notBlank(etm)) { + fromsql += " and t.create_time <= ?"; + paraList.add(etm); + } + + String totalRowSql = "select count(*) " + fromsql; + String findSql = selectsql + fromsql; + + // 前端传了排序字段,并且排序字段存在相关表中 + if (StrKit.notBlank(pp.getSort_field()) && PresellPug.dao.hasColunm(pp.getSort_field())) { + findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field(); + + if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) { + findSql += " " + Const.ORDER_BY_ASC; + } else { + findSql += " " + Const.ORDER_BY_DESC; + } + } else { + findSql += " order by t.create_time desc"; + } + + return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); + } + + public List list() { + return PresellPug.dao.find("select * from presell_pug"); + } + + public BigDecimal countPugAmount(String uuid) { + BigDecimal ret = new BigDecimal(0); + if (StrKit.isBlank(uuid)) { + return ret; + } + BigDecimal rec = Db.queryBigDecimal(" select sum(amount) from presell_pug where presell_order_id = ?", uuid); + if (rec != null) { + return rec; + } + return ret; + } +} diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java index 5d3912d..ef0f1d9 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java @@ -2603,4 +2603,261 @@ public class OrderStatService { return rec; } + public Workbook presellOrderStatisticsExport(String stm, String etm) { + Record data = presellOrderStatistics(stm, etm); + List list = data.get("data"); + List sups = data.get("supermarket"); + Workbook wb = new XSSFWorkbook(); + + Sheet sheet = wb.createSheet(stm.substring(0, 10) + " ~ " + etm.substring(0, 10) + "各砂站预售额及已提货额统计表"); + + // 表头 start + Row row = sheet.createRow(0); + + int a = 0; + row.createCell(a++).setCellValue("序号"); + row.createCell(a++).setCellValue("客户名称"); + row.createCell(a++).setCellValue("总预售金额(元)"); + row.createCell(a++).setCellValue("已提货金额(元)"); + + Row row2 = sheet.createRow(1); + int a2 = 4; + + for (int i = 0; i < sups.size(); i++) { + Record s = sups.get(i); + row.createCell(a).setCellValue(s.getStr("name")); + + sheet.addMergedRegion(new CellRangeAddress(0, 0, a, a + 1)); + a += 2; + + row2.createCell(a2++).setCellValue("预售金额(元)"); + row2.createCell(a2++).setCellValue("已提货金额(元)"); + } + + sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)); + sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1)); + sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2)); + sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3)); + + int datalen = list.size(); + int colcnt = a; + int rowcnt = 2; + for (int i = 0; i < datalen; i++) { + Record rec = list.get(i); + row = sheet.createRow(rowcnt++); + + row.createCell(0).setCellValue(i + 1); + row.createCell(1).setCellValue(rec.getStr("name")); + + int b = 2; + row.createCell(b++).setCellValue(DataUtil.getDefaultByRecord(rec, "total_presell_amount")); + row.createCell(b++).setCellValue(DataUtil.getDefaultByRecord(rec, "total_presell_pug")); + + for (Record s : sups) { + row.createCell(b++).setCellValue(DataUtil.getDefaultByRecord(rec, "xsl_" + s.getInt("id"))); + row.createCell(b++).setCellValue(DataUtil.getDefaultByRecord(rec, "xse_" + s.getInt("id"))); + } + + } + // 通用单元格格式 + Font font = wb.createFont(); + CellStyle cellStyle = wb.createCellStyle(); + cellStyle.setBorderBottom(BorderStyle.THIN); + cellStyle.setBorderLeft(BorderStyle.THIN); + cellStyle.setBorderTop(BorderStyle.THIN); + cellStyle.setBorderRight(BorderStyle.THIN); + cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中 + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 + cellStyle.setFont(font); + + for (int r = 0; r < rowcnt; r++) { + row = sheet.getRow(r); + if (row == null) { + row = sheet.createRow(r); + } + for (int c = 0; c < colcnt; c++) { + Cell cell = row.getCell(c); + + if (cell == null) { + cell = row.createCell(c); + } + cell.setCellStyle(cellStyle); + } + } + + for (int i = 1; i < 30; i++) { + sheet.setColumnWidth(i, 15 * 256); + } + + sheet.setColumnWidth(1, 40 * 256); + + return wb; + } + + /** + * 各砂站预售金额、提货额统计 + * @param stm + * @param etm + * @return + */ + public Record presellOrderStatistics(String stm, String etm) { + // 砂站 + List sups = Db.find("SELECT\n" + + " t.id,\n" + + " t.`name`\n" + + "FROM\n" + + " supermarket t\n" + + "WHERE\n" + + " id <= 6\n" + + "OR id = 11"); + + // 预售金额统计 + List paraList = new ArrayList<>(); + String paramsSql = ""; + if (!StrKit.isBlank(stm)) { + paramsSql += " and p.create_time >= ?\n"; + paraList.add(stm); + } + if (!StrKit.isBlank(etm)) { + paramsSql += " and p.create_time <= ?\n"; + paraList.add(etm); + } + String sql = " SELECT c.name, t.* from (\n" + + " select\n" + + " g.customer_id,\n" + + " ifnull(sum(g.presell_amount), 0) total_presell_amount,\n" + + " 0 total_presell_pug,\n" + + " ifnull(sum(case when g.supermarket_id = 1 or g.supermarket_id = 7 then g.presell_amount end), 0) xsl_1,\n" + + " ifnull(sum(case when g.supermarket_id = 2 then g.presell_amount end), 0) xsl_2,\n" + + " ifnull(sum(case when g.supermarket_id = 3 then g.presell_amount end), 0) xsl_3,\n" + + " ifnull(sum(case when g.supermarket_id = 4 then g.presell_amount end), 0) xsl_4,\n" + + " ifnull(sum(case when g.supermarket_id = 5 or g.supermarket_id = 9 then g.presell_amount end), 0) xsl_5,\n" + + " ifnull(sum(case when g.supermarket_id = 6 or g.supermarket_id = 8 or g.supermarket_id = 10 then g.presell_amount end), 0) xsl_6,\n" + + " ifnull(sum(case when g.supermarket_id = 11 then g.presell_amount end), 0) xsl_11,\n" + + " 0 xse_1,\n" + + " 0 xse_2,\n" + + " 0 xse_3,\n" + + " 0 xse_4,\n" + + " 0 xse_5,\n" + + " 0 xse_6,\n" + + " 0 xse_11\n" + + " from (\n" + + " SELECT\n" + + " p.customer_id,\n" + + " p.supermarket_id,\n" + + " ifnull(sum(p.presell_amount), 0) presell_amount\n" + + " FROM\n" + + " presell_order p\n" + + " WHERE\n" + + " p.del = 0\n" + + paramsSql + + " GROUP BY\n" + + " p.customer_id,\n" + + " p.supermarket_id\n" + + " ) g group by g.customer_id \n" + + " ) t LEFT JOIN customer c ON c.id = t.customer_id"; + + List list = Db.find(sql, paraList.toArray()); + List ret = new ArrayList<>(); + double all_total_presell_amount = 0.0; + double all_total_presell_pug = 0.0; + double all_xsl_1 = 0.0; + double all_xsl_2 = 0.0; + double all_xsl_3 = 0.0; + double all_xsl_4 = 0.0; + double all_xsl_5 = 0.0; + double all_xsl_6 = 0.0; + double all_xsl_11 = 0.0; + double all_xse_1 = 0.0; + double all_xse_2 = 0.0; + double all_xse_3 = 0.0; + double all_xse_4 = 0.0; + double all_xse_5 = 0.0; + double all_xse_6 = 0.0; + double all_xse_11 = 0.0; + + for (int i = 0; i < list.size(); i++) { + Record r = list.get(i); + String name = r.getStr("name"); + double total_presell_amount = DataUtil.getDefaultByRecord(r, "total_presell_amount"); + double total_presell_pug = DataUtil.getDefaultByRecord(r, "total_presell_pug"); + double xsl_1 = DataUtil.getDefaultByRecord(r, "xsl_1"); + double xsl_2 = DataUtil.getDefaultByRecord(r, "xsl_2"); + double xsl_3 = DataUtil.getDefaultByRecord(r, "xsl_3"); + double xsl_4 = DataUtil.getDefaultByRecord(r, "xsl_4"); + double xsl_5 = DataUtil.getDefaultByRecord(r, "xsl_5"); + double xsl_6 = DataUtil.getDefaultByRecord(r, "xsl_6"); + double xsl_11 = DataUtil.getDefaultByRecord(r, "xsl_11"); + double xse_1 = DataUtil.getDefaultByRecord(r, "xse_1"); + double xse_2 = DataUtil.getDefaultByRecord(r, "xse_2"); + double xse_3 = DataUtil.getDefaultByRecord(r, "xse_3"); + double xse_4 = DataUtil.getDefaultByRecord(r, "xse_4"); + double xse_5 = DataUtil.getDefaultByRecord(r, "xse_5"); + double xse_6 = DataUtil.getDefaultByRecord(r, "xse_6"); + double xse_11 = DataUtil.getDefaultByRecord(r, "xse_11"); + + Record rec = new Record(); + rec.set("inx", i + 1); + rec.set("name", name); + rec.set("total_presell_amount", total_presell_amount); + rec.set("total_presell_pug", total_presell_pug); + rec.set("xsl_1", xsl_1); + rec.set("xsl_2", xsl_2); + rec.set("xsl_3", xsl_3); + rec.set("xsl_4", xsl_4); + rec.set("xsl_5", xsl_5); + rec.set("xsl_6", xsl_6); + rec.set("xsl_11", xsl_11); + rec.set("xse_1", xse_1); + rec.set("xse_2", xse_2); + rec.set("xse_3", xse_3); + rec.set("xse_4", xse_4); + rec.set("xse_5", xse_5); + rec.set("xse_6", xse_6); + rec.set("xse_11", xse_11); + + ret.add(rec); + + all_total_presell_amount += total_presell_amount; + all_total_presell_pug += total_presell_pug; + all_xsl_1 += xsl_1; + all_xsl_2 += xsl_2; + all_xsl_3 += xsl_3; + all_xsl_4 += xsl_4; + all_xsl_5 += xsl_5; + all_xsl_6 += xsl_6; + all_xsl_11 += xsl_11; + all_xse_1 += xse_1; + all_xse_2 += xse_2; + all_xse_3 += xse_3; + all_xse_4 += xse_4; + all_xse_5 += xse_5; + all_xse_6 += xse_6; + all_xse_11 += xse_11; + } + + Record r = new Record(); + r.set("inx", list.size() + 1); + r.set("name", "合计"); + r.set("total_presell_amount", all_total_presell_amount); + r.set("total_presell_pug", all_total_presell_pug); + r.set("xsl_1", all_xsl_1); + r.set("xsl_2", all_xsl_2); + r.set("xsl_3", all_xsl_3); + r.set("xsl_4", all_xsl_4); + r.set("xsl_5", all_xsl_5); + r.set("xsl_6", all_xsl_6); + r.set("xsl_11", all_xsl_11); + r.set("xse_1", all_xse_1); + r.set("xse_2", all_xse_2); + r.set("xse_3", all_xse_3); + r.set("xse_4", all_xse_4); + r.set("xse_5", all_xse_5); + r.set("xse_6", all_xse_6); + r.set("xse_11", all_xse_11); + + ret.add(r); + + return new Record().set("data", ret).set("supermarket", sups); + } } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java index e53d9e6..51e32da 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java @@ -40,6 +40,7 @@ import com.cowr.local.ssjygl.prepay.PrepayController; import com.cowr.local.ssjygl.prepay.prepaydetail.PrepayDetailController; import com.cowr.local.ssjygl.prepay.prepaytruck.PrepayTruckController; import com.cowr.local.ssjygl.prepay.refunddetail.RefundDetailController; +import com.cowr.local.ssjygl.presellorder.PresellOrderController; import com.cowr.local.ssjygl.product.ProductController; import com.cowr.local.ssjygl.purchase.PurchaseController; import com.cowr.local.ssjygl.sandfarm.SandfarmController; @@ -233,6 +234,7 @@ public class Config extends JFinalConfig { me.add("/order/purchase", OrderPurchaseController.class); me.add("/orderclustertruck", OrderclusterTruckController.class); me.add("/order/invalidverify", OrderInvalidVerifyController.class); + me.add("/presellorder", PresellOrderController.class); // -- 统计 me.add("/stat/sale", OrderStatController.class); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellorder/PresellOrderController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellorder/PresellOrderController.java new file mode 100644 index 0000000..b76c98c --- /dev/null +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellorder/PresellOrderController.java @@ -0,0 +1,44 @@ +package com.cowr.local.ssjygl.presellorder; + +import com.cowr.common.Const; +import com.cowr.common.view.PageParam; +import com.cowr.common.view.Result; +import com.cowr.ssjygl.presellorder.PresellOrderService; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderController extends Controller { + + /** + * 分页查找 presell_order + */ + public void find(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的 + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + PageParam pp = getBean(PageParam.class, "", true); + renderJson(Result.object(PresellOrderService.me.find(pp, customer_id, supermarket_id, del, name, stm, etm))); + } + + + /** + * 返回所有 presell_order + */ + public void list(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的 + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + renderJson(Result.object(PresellOrderService.me.list(customer_id, supermarket_id, del, name, stm, etm))); + } +} diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellpug/PresellPugController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellpug/PresellPugController.java new file mode 100644 index 0000000..2cf2bab --- /dev/null +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/presellpug/PresellPugController.java @@ -0,0 +1,35 @@ +package com.cowr.local.ssjygl.presellpug; + +import com.cowr.common.view.PageParam; +import com.cowr.common.view.Result; +import com.cowr.ssjygl.presellpug.PresellPugService; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugController extends Controller { + + /** + * 分页查找 presell_pug + */ + public void find(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + PageParam pp = getBean(PageParam.class, "", true); + renderJson(Result.object(PresellPugService.me.find(pp, customer_id, supermarket_id, name, stm, etm))); + } + + /** + * 返回所有 presell_pug + */ + public void list(){ + renderJson(Result.object(PresellPugService.me.list())); + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java index 3953fba..f45be03 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java @@ -38,6 +38,7 @@ import com.cowr.service.ssjygl.prepay.prepaycustomer.PrepayCustomerController; import com.cowr.service.ssjygl.prepay.prepaydetail.PrepayDetailController; import com.cowr.service.ssjygl.prepay.prepaytruck.PrepayTruckController; import com.cowr.service.ssjygl.prepay.refunddetail.RefundDetailController; +import com.cowr.service.ssjygl.presellorder.PresellOrderController; import com.cowr.service.ssjygl.product.ProductController; import com.cowr.service.ssjygl.purchase.PurchaseController; import com.cowr.service.ssjygl.sandfarm.SandfarmController; @@ -210,6 +211,7 @@ public class Config extends JFinalConfig { me.add("/order/purchase", OrderPurchaseController.class); me.add("/orderclustertruck", OrderclusterTruckController.class); me.add("/order/invalidverify", OrderInvalidVerifyController.class); + me.add("/presellorder", PresellOrderController.class); // -- 统计 me.add("/stat/sale", OrderStatController.class); diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderController.java new file mode 100644 index 0000000..a6b35a8 --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderController.java @@ -0,0 +1,110 @@ +package com.cowr.service.ssjygl.presellorder; + +import com.cowr.common.Const; +import com.cowr.common.view.PageParam; +import com.cowr.common.view.Result; +import com.cowr.model.PresellOrder; +import com.cowr.model.Sysuser; +import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService; +import com.cowr.ssjygl.presellorder.PresellOrderService; +import com.jfinal.aop.Before; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderController extends Controller { + + /** + * 新增 presell_order + */ + @Before(PresellOrderValidator.class) + public void save(){ + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + PresellOrder model = getModel(PresellOrder.class, "", true); // 忽略不在model中的字段 + renderJson(PresellOrderSyncService.me.save(model, tokenuser)); + } + + /** + * 删除 presell_order + */ + @Before(PresellOrderPKValidator.class) + public void del(){ + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + PresellOrder model = getModel(PresellOrder.class, "", true); // 忽略不在model中的字段 + renderJson(PresellOrderSyncService.me.delete(model, tokenuser)); + } + + /** + * 恢复 presell_order + */ + @Before(PresellOrderPKValidator.class) + public void restore(){ + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + PresellOrder model = getModel(PresellOrder.class, "", true); // 忽略不在model中的字段 + renderJson(PresellOrderSyncService.me.restore(model, tokenuser)); + } + + /** + * 修改 presell_order + */ + @Before(PresellOrderValidator.class) + public void edit(){ + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + PresellOrder model = getModel(PresellOrder.class, "", true); // 忽略不在model中的字段 + renderJson(PresellOrderSyncService.me.update(model, tokenuser)); + } + + /** + * 分页查找 presell_order + */ + public void find(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的 + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + PageParam pp = getBean(PageParam.class, "", true); + renderJson(Result.object(PresellOrderService.me.find(pp, customer_id, supermarket_id, del, name, stm, etm))); + } + + /** + * 返回所有 presell_order + */ + public void list(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + Integer del = getInt("del", Const.LOGIC_DEL_VALID); // 默认显示未删除的 + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + renderJson(Result.object(PresellOrderService.me.list(customer_id, supermarket_id, del, name, stm, etm))); + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderPKValidator.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderPKValidator.java new file mode 100644 index 0000000..102c49f --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderPKValidator.java @@ -0,0 +1,25 @@ +package com.cowr.service.ssjygl.presellorder; + + +import com.cowr.common.validator.CrudParamValidator; +import com.cowr.common.view.Result; +import com.cowr.model.PresellOrder; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderPKValidator extends CrudParamValidator { + @Override + protected void validate(Controller c) { + validateRequired("id", "id", "id 必填"); + validateString("id", 1, 32, "id", "id 长度 1~32"); + } + + protected void handleError(Controller c) { + c.renderJson(Result.failed(getErrmsg())); + } +} \ No newline at end of file diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderSyncService.java new file mode 100644 index 0000000..923ca7a --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderSyncService.java @@ -0,0 +1,256 @@ +package com.cowr.service.ssjygl.presellorder; + +import com.alibaba.fastjson.JSONObject; +import com.cowr.common.Const; +import com.cowr.common.enums.Enums; +import com.cowr.common.utils.StrUtil; +import com.cowr.common.view.Result; +import com.cowr.model.*; +import com.cowr.service.ssjygl.base.BaseSyncService; +import com.cowr.service.ssjygl.presellpug.PresellPugService; +import com.cowr.service.ssjygl.synctask.SyncTaskService; +import com.cowr.ssjygl.modifylog.ModifyLogService; +import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService; +import com.jfinal.kit.StrKit; +import com.jfinal.log.Log; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.IAtom; + +import java.math.BigDecimal; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderSyncService extends BaseSyncService { + private static final Log log = Log.getLog(PresellOrderSyncService.class); + public static final PresellOrderSyncService me = new PresellOrderSyncService(); + + public Result save(PresellOrder model, Sysuser tokenuser) { + try { + Integer customer_id = model.getCustomerId(); + Customer customer = Customer.dao.findById(customer_id); + + if (customer == null) { + return Result.failed(false,"按客户 id 未找到对应客户信息"); + } + Integer type = customer.getType(); + if (type == null || type != 1) { + return Result.failed(false,"选择的客户不是预付费客户"); + } + + PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(customer.getId()); + if (prepayCustomer == null) { + return Result.failed(false,"未获取到预付费客户信息"); + } + + PrepayCustomer prepayCustomerSurplus = PrepayCustomerService.me.getPrepayCustomerSurplus(customer.getId()); + if (prepayCustomerSurplus == null) { + return Result.failed(false,"未获取到预付费客户可用余额信息"); + } + + if (model.getPresellAmount().compareTo(prepayCustomerSurplus.getSurplus()) == 1) { // 预售金额大于可用余额 + return Result.failed(false,"余额不足,当前客户可用余额【"+ prepayCustomerSurplus.getSurplus()+"】元"); + } + + model.setId(StrKit.getRandomUUID()); + String presell_order = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + StrUtil.getRandom(2); + model.setPresellSn(presell_order); + model.setCreateTime(new Date()); + model.setCreateUserId(tokenuser.getId()); + model.setCreateUserName(tokenuser.getName()); + + SyncTask synctask = new SyncTask(); + SyncTask synctaskincrement = new SyncTask(); + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() throws SQLException { + boolean ret = model.save(); + + if (!ret) { + return false; + } + + synctask.addSaveData(model); + Integer presellType = customer.getPresellType(); + if (presellType == 0) { + customer.setPresellType(1); + ret = customer.update(); + + synctask.addUpdateData(customer); + + if (!ret) { + return false; + } + } + + prepayCustomer.setSurplus(prepayCustomer.getSurplus().subtract(model.getPresellAmount())); + + // 余额变化需要广播 + synctaskincrement.addIncrementData( + prepayCustomer.getTablename(), + "id", + prepayCustomer.getId(), + new JSONObject().fluentPut("surplus", new BigDecimal(0).subtract(model.getPresellAmount())) + ); + + SyncTaskService.me.save(synctaskincrement); + + ret = prepayCustomer.update(); + + if (!ret) { + return false; + } + + return SyncTaskService.me.save(synctask, model.getSupermarketId()) + && ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), tokenuser); + } + }); + if (ret) { + SyncTaskService.me.send(synctask); + } + // todo客户余额变更时需短信通知 + + return ret ? Result.object(model) : Result.failed(false, "新增失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.failed(false, e.getMessage()); + } + } + + public Result edit(PresellOrder model, Sysuser tokenuser) { + try { + // 注意这里有 !,找到后才做 update 操作 + PresellOrder oldobj = model.findByPk(); + + if (oldobj == null) { + return Result.failed(false, "按主键未找到对应记录"); + } + + PresellOrder saveold = oldobj.clone(); + // 将修改后的对象返回 + String[] keys = model._getAttrNames(); + for (String key : keys) { + oldobj.set(key, model.get(key)); + } + + SyncTask synctask = new SyncTask(); + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + boolean ret = oldobj.update(); + if (!ret) { + return false; + } + + synctask.addUpdateData(oldobj); + return SyncTaskService.me.save(synctask, model.getSupermarketId()) + && ModifyLogService.me.save(model, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + SyncTaskService.me.send(synctask); + } + + return ret ? Result.object(oldobj) : Result.failed(false, "修改失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.failed(false, "修改失败"); + } + } + + /** + * 删除 + * + * @param model BaseModel + * @return Result + */ + public Result delete(PresellOrder model, Sysuser tokenuser) { + try { + // 注意这里有 !,找到后才做 delete 操作 + if (!model.checkExistsByPk()) { + return Result.failed(false, "按主键未找到对应记录"); + } + + // 如果预售单已经进行了配额则不能删除 + List list = PresellPugService.me.getByPresellOrderId(model.getId()); + if (list.size() > 0) { + return Result.failed(false, "预售单已配额"); + } + + PresellOrder oldobj = model.findByPk(); // 找到旧记录进行更新 + if (!oldobj.hasDelKey()) { + return Result.failed(false, "不存在逻辑删除字段"); + } + + PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(oldobj.getCustomerId()); + if (prepayCustomer == null) { + return Result.failed(false,"未获取到预付费客户信息"); + } + + PresellOrder saveold = oldobj.clone(); + oldobj.setDel(Const.LOGIC_DEL_INVALID); // 逻辑删除字段统一用 del + + SyncTask synctask = new SyncTask(); + SyncTask synctaskincrement = new SyncTask(); + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + boolean ret = oldobj.update(); + + if (!ret) { + return false; + } + + prepayCustomer.setSurplus(prepayCustomer.getSurplus().add(saveold.getPresellAmount())); + + synctaskincrement.addIncrementData( + prepayCustomer.getTablename(), + "id", + prepayCustomer.getId(), + new JSONObject().fluentPut("surplus", saveold.getPresellAmount()) + ); + + // 余额变化需要广播 + SyncTaskService.me.save(synctaskincrement); + ret = prepayCustomer.update(); + + if (!ret) { + return false; + } + + synctask.addUpdateData(oldobj); + + return SyncTaskService.me.save(synctask, saveold.getSupermarketId()) + && ModifyLogService.me.save(oldobj, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + SyncTaskService.me.send(synctask); + } + + return ret ? Result.object(oldobj) : Result.failed(false, "取消失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.failed(false, "取消失败"); + } + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderValidator.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderValidator.java new file mode 100644 index 0000000..a6f664f --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellorder/PresellOrderValidator.java @@ -0,0 +1,48 @@ +package com.cowr.service.ssjygl.presellorder; + +import com.jfinal.core.Controller; +import com.cowr.common.validator.CrudParamValidator; +import com.cowr.common.view.Result; +import com.cowr.model.PresellOrder; + +/** + * Generated by COWR Wed Dec 15 11:37:33 CST 2021 + * TableName: presell_order + * Remarks: + * PrimaryKey: id + */ +public class PresellOrderValidator extends CrudParamValidator { + @Override + protected void validate(Controller c) { + // 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断 + if (!"save".equals(getActionMethodName())) { + validateRequired("id", "id", "id 必填"); + validateString("id", 1, 32, "id", "id 长度 1~32"); + } + + validateInteger("customer_id", 1, 2147483647, "customer_id", "customer_id 范围 1~2147483647"); + + validateInteger("supermarket_id", 1, 2147483647, "supermarket_id", "supermarket_id 范围 1~2147483647"); + + validateString("presell_date", 1, 10, "presell_date", "presell_date 长度 1~10"); + + validateDate("presell_date", "yyyy-MM-dd", false, "presell_date", "presell_date 格式 yyyy-MM-dd"); // 默认时间时间字符串格式,生成后根据情况调整 + + validateBigDecimal("presell_amount", new java.math.BigDecimal(-9.9999999999E10), new java.math.BigDecimal(9.9999999999E10), "presell_amount", "presell_amount 范围 -9.9999999999E10~9.9999999999E10"); + + validateString("invoice_number", 0, 20, "invoice_number", "invoice_number 长度 0~20"); + + validateString("invoice_code", 0, 20, "invoice_code", "invoice_code 长度 0~20"); + + // 使用 model 更新时,model 不能只有主键有值 + // 这里用 getActionMethodName 写死,判断是 update 时,才做验证 + // 如果确实是需要将主键外的字段置为 null,可以在代码生成后删掉这段 + if ("edit".equals(getActionMethodName())) { + validateUpdateModel(PresellOrder.class, "", true); // 忽略不在model中的字段 + } + } + + protected void handleError(Controller c) { + c.renderJson(Result.failed(getErrmsg())); + } +} \ No newline at end of file diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugController.java new file mode 100644 index 0000000..f5c0d4d --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugController.java @@ -0,0 +1,73 @@ +package com.cowr.service.ssjygl.presellpug; + +import com.cowr.common.view.PageParam; +import com.cowr.common.view.Result; +import com.cowr.model.PresellPug; +import com.cowr.ssjygl.presellpug.PresellPugService; +import com.jfinal.aop.Before; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugController extends Controller { + + /** + * 新增 presell_pug + */ + @Before(PresellPugValidator.class) + public void save(){ + PresellPug model = getModel(PresellPug.class, "", true); // 忽略不在model中的字段 + renderJson(PresellPugService.me.save(model)); + } + + /** + * 删除 presell_pug + */ + @Before(PresellPugPKValidator.class) + public void del(){ + PresellPug model = getModel(PresellPug.class, "", true); // 忽略不在model中的字段 + renderJson(PresellPugService.me.delete(model)); + } + + /** + * 恢复 presell_pug + */ + @Before(PresellPugPKValidator.class) + public void restore(){ + PresellPug model = getModel(PresellPug.class, "", true); // 忽略不在model中的字段 + renderJson(PresellPugService.me.restore(model)); + } + + /** + * 修改 presell_pug + */ + @Before(PresellPugValidator.class) + public void edit(){ + PresellPug model = getModel(PresellPug.class, "", true); // 忽略不在model中的字段 + renderJson(PresellPugService.me.update(model)); + } + + /** + * 分页查找 presell_pug + */ + public void find(){ + Integer customer_id = getInt("customer_id"); + Integer supermarket_id = getInt("supermarket_id"); + String name = get("name"); + String stm = get("stm"); + String etm = get("etm"); + PageParam pp = getBean(PageParam.class, "", true); + renderJson(Result.object(PresellPugService.me.find(pp, customer_id, supermarket_id, name, stm, etm))); + } + + /** + * 返回所有 presell_pug + */ + public void list(){ + renderJson(Result.object(PresellPugService.me.list())); + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugPKValidator.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugPKValidator.java new file mode 100644 index 0000000..e56516c --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugPKValidator.java @@ -0,0 +1,24 @@ +package com.cowr.service.ssjygl.presellpug; + + +import com.cowr.common.validator.CrudParamValidator; +import com.cowr.common.view.Result; +import com.jfinal.core.Controller; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugPKValidator extends CrudParamValidator { + @Override + protected void validate(Controller c) { + validateRequired("id", "id", "id 必填"); + validateLong("id", 1, 2147483647, "id", "id 范围 1~2147483647"); + } + + protected void handleError(Controller c) { + c.renderJson(Result.failed(getErrmsg())); + } +} \ No newline at end of file diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugService.java new file mode 100644 index 0000000..8b0f4f0 --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugService.java @@ -0,0 +1,147 @@ +package com.cowr.service.ssjygl.presellpug; + +import com.cowr.common.Const; +import com.cowr.common.base.BaseService; +import com.cowr.common.enums.Enums; +import com.cowr.common.view.PageParam; +import com.cowr.common.view.Result; +import com.cowr.model.PresellOrder; +import com.cowr.model.PresellPug; +import com.cowr.model.Sysuser; +import com.cowr.ssjygl.modifylog.ModifyLogService; +import com.jfinal.kit.StrKit; +import com.jfinal.log.Log; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.IAtom; +import com.jfinal.plugin.activerecord.Page; +import com.jfinal.plugin.activerecord.Record; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugService extends BaseService { + private static final Log log = Log.getLog(PresellPugService.class); + public static final PresellPugService me = new PresellPugService(); + + public Result save(PresellPug model, Sysuser sysuser) { + try { + String presellOrderId = model.getPresellOrderId(); + PresellOrder order = PresellOrder.dao.findById(presellOrderId); + if (order == null) { + return Result.failed(false, "未找到对应的预售单"); + } + BigDecimal amount = order.getPresellAmount(); + model.setAmount(amount); + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + boolean ret = model.save(); + + if (ret) { + ret = ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), sysuser); + } + + return ret; + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + return ret ? Result.object(model) : Result.failed(false, "新增失败"); + } catch (Exception e) { + log.error(e.getMessage(), e); + if (e.getMessage().contains("PRIMARY")) { + return Result.failed(false, "主键冲突"); + } else { + return Result.failed(false, e.getMessage()); + } + } + } + + public Page find(PageParam pp, Integer customer_id, Integer supermarket_id, String name, String stm, String etm) { + String selectsql = "select t.*, c.name customer_name, s.name supermarket_name, d.name product_name, c.address, c.texpayer_name, c.texpayer_num, c.memo \n"; + String fromsql = " from presell_pug t \n" + + " left join presell_order o on t.presell_order_id = o.id \n" + + " left join supermarket s on o.supermarket_id = s.id \n" + + " left join product d on o.supermarket_id = d.id \n" + + " where 1=1 \n"; + List paraList = new ArrayList<>(); + + if (StrKit.notBlank(name)) { + fromsql += " and c.name like ? \n"; + paraList.add("%" + name.trim() + "%"); + } + + if (supermarket_id != null) { + fromsql += " and s.id = ?"; + paraList.add(supermarket_id); + } + + if (customer_id != null) { + fromsql += " and c.id = ?"; + paraList.add(customer_id); + } + + if (StrKit.notBlank(stm)) { + fromsql += " and t.create_time >= ?"; + paraList.add(stm); + } + + if (StrKit.notBlank(etm)) { + fromsql += " and t.create_time <= ?"; + paraList.add(etm); + } + + String totalRowSql = "select count(*) " + fromsql; + String findSql = selectsql + fromsql; + + // 前端传了排序字段,并且排序字段存在相关表中 + if (StrKit.notBlank(pp.getSort_field()) && PresellPug.dao.hasColunm(pp.getSort_field())) { + findSql += " order by t." + pp.getSort_field() + " is null, t." + pp.getSort_field(); + + if (Const.ORDER_BY_ASC.equals(pp.getSort_order())) { + findSql += " " + Const.ORDER_BY_ASC; + } else { + findSql += " " + Const.ORDER_BY_DESC; + } + } else { + findSql += " order by t.create_time desc"; + } + + return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); + } + + public List list() { + return PresellPug.dao.find("select * from presell_pug"); + } + + public BigDecimal countPugAmount(String uuid) { + BigDecimal ret = new BigDecimal(0); + if (StrKit.isBlank(uuid)) { + return ret; + } + BigDecimal rec = Db.queryBigDecimal(" select sum(amount) from presell_pug where presell_order_id = ?", uuid); + if (rec != null) { + return rec; + } + return ret; + } + + public List getByPresellOrderId(String id) { + List ret = new ArrayList<>(); + if (StrKit.isBlank(id)) { + return ret; + } + return PresellPug.dao.find("select * from presell_pug where presell_order_id = ?", id); + } +} diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugValidator.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugValidator.java new file mode 100644 index 0000000..34bfb3f --- /dev/null +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/presellpug/PresellPugValidator.java @@ -0,0 +1,46 @@ +package com.cowr.service.ssjygl.presellpug; + +import com.jfinal.core.Controller; +import com.jfinal.kit.StrKit; +import com.cowr.common.validator.CrudParamValidator; +import com.cowr.common.view.Result; +import com.cowr.model.PresellPug; + +/** + * Generated by COWR Thu Dec 16 15:44:53 CST 2021 + * TableName: presell_pug + * Remarks: + * PrimaryKey: id + */ +public class PresellPugValidator extends CrudParamValidator { + @Override + protected void validate(Controller c) { + // 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断 + if (!"save".equals(getActionMethodName())) { + validateRequired("id", "id", "id 必填"); + + validateLong("id", 1, 2147483647, "id", "id 范围 1~2147483647"); + } + + validateRequired("presell_order_id", "ipresell_order_id", "ipresell_order_id 必填"); + validateString("presell_order_id", 1, 32, "presell_order_id", "presell_order_id 长度 1~32"); + + + validateString("start_time", 1, 19, "start_time", "start_time 长度 1~19"); + validateDate("start_time", "yyyy-MM-dd", false, "start_time", "start_time 格式 yyyy-MM-dd"); // 默认时间时间字符串格式,生成后根据情况调整 + + validateString("cutoff_time", 1, 19, "cutoff_time", "cutoff_time 长度 1~19"); + validateDate("cutoff_time", "yyyy-MM-dd", false, "cutoff_time", "cutoff_time 格式 yyyy-MM-dd"); // 默认时间时间字符串格式,生成后根据情况调整 + + // 使用 model 更新时,model 不能只有主键有值 + // 这里用 getActionMethodName 写死,判断是 update 时,才做验证 + // 如果确实是需要将主键外的字段置为 null,可以在代码生成后删掉这段 + if ("edit".equals(getActionMethodName())) { + validateUpdateModel(PresellPug.class, "", true); // 忽略不在model中的字段 + } + } + + protected void handleError(Controller c) { + c.renderJson(Result.failed(getErrmsg())); + } +} \ No newline at end of file diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java index f37e0bf..c6494bf 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java @@ -452,4 +452,18 @@ public class OrderStatController extends BaseController { renderJson(Result.object(OrderStatService.me.yearStatisticsByCustomerId(year, customer_id, customer_name, type))); } + /** + * 各砂站预售额及已提货额统计表 + */ + public void presellOrderStatistics() { + String stm = get("stm"); + String etm = get("etm"); + int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 + if (export == 0) { + renderJson(Result.object(OrderStatService.me.presellOrderStatistics(stm, etm))); + } else { + Workbook wb = OrderStatService.me.presellOrderStatisticsExport(stm, etm); + render(new ExcelRender("各砂站预售额及已提货额统计表_" + System.currentTimeMillis() + ".xlsx", wb)); + } + } }