预售单管理

dev
wuwenxiong 2021-12-22 10:15:51 +08:00
parent b462b697c9
commit d797198c53
25 changed files with 1933 additions and 5 deletions

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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<PresellOrder> {
public static final PresellOrder dao = new PresellOrder().dao();
}

View File

@ -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<PresellPug> {
public static final PresellPug dao = new PresellPug().dao();
}

View File

@ -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);
}
}

View File

@ -284,6 +284,29 @@ public abstract class BaseCustomer<M extends BaseCustomer<M>> extends BaseModel<
return getInt("invoice_type");
}
/**
*
* name: presell_type
* type: INT(10)
* isNullable: NO
* isPrimaryKey: NO
* defaultValue: 1
* @param presellType 01
*/
@JSONField(name="presell_type")
public void setPresellType(Integer presellType) {
set("presell_type", presellType);
}
/**
* @return invoice_type 01
*/
@JSONField(name="presell_type")
public Integer getPresellType() {
return getInt("presell_type");
}
/**
* name: customer_type_id
* type: INT(10)

View File

@ -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<M extends BasePresellOrder<M>> extends BaseModel<M> 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 01
*/
@JSONField(name="del")
public void setDel(Integer del) {
set("del", del);
}
/**
* @return del 01
*/
@JSONField(name="del")
public Integer getDel() {
return getInt("del");
}
}

View File

@ -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<M extends BasePresellPug<M>> extends BaseModel<M> 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");
}
}

View File

@ -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);
}
}

View File

@ -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<Record> 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<Object> 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<PresellOrder> 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<Object> 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());
}
}

View File

@ -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<Record> 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<Object> 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<PresellPug> 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;
}
}

View File

@ -2603,4 +2603,261 @@ public class OrderStatService {
return rec;
}
public Workbook presellOrderStatisticsExport(String stm, String etm) {
Record data = presellOrderStatistics(stm, etm);
List<Record> list = data.get("data");
List<Record> 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<Record> 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<Object> 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<Record> list = Db.find(sql, paraList.toArray());
List<Record> 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);
}
}

View File

@ -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);

View File

@ -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)));
}
}

View File

@ -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()));
}
}

View File

@ -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);

View File

@ -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)));
}
}

View File

@ -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()));
}
}

View File

@ -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<PresellPug> 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, "取消失败");
}
}
}

View File

@ -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()));
}
}

View File

@ -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()));
}
}

View File

@ -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()));
}
}

View File

@ -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<Record> 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<Object> 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<PresellPug> 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<PresellPug> getByPresellOrderId(String id) {
List<PresellPug> ret = new ArrayList<>();
if (StrKit.isBlank(id)) {
return ret;
}
return PresellPug.dao.find("select * from presell_pug where presell_order_id = ?", id);
}
}

View File

@ -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()));
}
}

View File

@ -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));
}
}
}