添加结算管理功能
parent
55baade462
commit
afdfe0c0b8
|
|
@ -145,7 +145,13 @@ public class Result {
|
|||
}
|
||||
|
||||
public static Result failedstr(String format, Object... objs) {
|
||||
return new Result(Result.PARAM_ERROR, null, String.format(format, objs));
|
||||
try {
|
||||
return new Result(Result.PARAM_ERROR, null, String.format(format, objs));
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
|
||||
return new Result(Result.PARAM_ERROR, null, "请求失败");
|
||||
}
|
||||
}
|
||||
|
||||
public static Result failed(Map<String, String> validerr) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.cowr.model;
|
||||
|
||||
import com.cowr.model.base.BaseTicketInvalidVerify;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:22 CST 2021
|
||||
* TableName: ticket_invalid_verify
|
||||
* Remarks: 结算单管理 - 结算单作废申请
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class TicketInvalidVerify extends BaseTicketInvalidVerify<TicketInvalidVerify> {
|
||||
public static final TicketInvalidVerify dao = new TicketInvalidVerify().dao();
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.cowr.model;
|
||||
|
||||
import com.cowr.model.base.BaseTicketLog;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:22 CST 2021
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class TicketLog extends BaseTicketLog<TicketLog> {
|
||||
public static final TicketLog dao = new TicketLog().dao();
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.cowr.model;
|
||||
|
||||
import com.cowr.model.base.BaseTicketReceive;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:22 CST 2021
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class TicketReceive extends BaseTicketReceive<TicketReceive> {
|
||||
public static final TicketReceive dao = new TicketReceive().dao();
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ package com.cowr.model;
|
|||
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
|
||||
|
||||
/**
|
||||
* Generated by COWR Sun May 17 21:43:18 CST 2020
|
||||
* Generated by COWR Fri Feb 26 16:03:22 CST 2021
|
||||
* <pre>
|
||||
* Example:
|
||||
* public void configPlugin(Plugins me) {
|
||||
|
|
@ -26,14 +26,14 @@ public class _MappingKit {
|
|||
arp.addMapping("product", "id", Product.class);
|
||||
// Composite Primary Key order: supermarket_id,customer_receiver_id
|
||||
arp.addMapping("supermarket_receiver_distance", "supermarket_id,customer_receiver_id", SupermarketReceiverDistance.class);
|
||||
// Composite Primary Key order: supermarket_id,customer_id
|
||||
arp.addMapping("supermarket_customer_distance", "supermarket_id,customer_id", SupermarketCustomerDistance.class);
|
||||
arp.addMapping("transport_company", "id", TransportCompany.class);
|
||||
// Composite Primary Key order: supermarket_id,sandfarm_id
|
||||
arp.addMapping("supermarket_sandfarm_distance", "supermarket_id,sandfarm_id", SupermarketSandfarmDistance.class);
|
||||
arp.addMapping("sandfarm", "id", Sandfarm.class);
|
||||
// Composite Primary Key order: supermarket_id,product_id
|
||||
arp.addMapping("supermarket_product", "supermarket_id,product_id", SupermarketProduct.class);
|
||||
// Composite Primary Key order: supermarket_id,customer_id
|
||||
arp.addMapping("supermarket_customer_distance", "supermarket_id,customer_id", SupermarketCustomerDistance.class);
|
||||
arp.addMapping("blacklist", "id", Blacklist.class);
|
||||
arp.addMapping("truck", "license", Truck.class);
|
||||
arp.addMapping("purchase", "id", Purchase.class);
|
||||
|
|
@ -42,24 +42,28 @@ public class _MappingKit {
|
|||
arp.addMapping("customer_receiver", "id", CustomerReceiver.class);
|
||||
arp.addMapping("customer_register", "id", CustomerRegister.class);
|
||||
arp.addMapping("customer_contact", "id", CustomerContact.class);
|
||||
// Composite Primary Key order: customer_id,supermarket_id,product_id
|
||||
arp.addMapping("customer_supermarket_product", "customer_id,supermarket_id,product_id", CustomerSupermarketProduct.class);
|
||||
arp.addMapping("prepay_detail", "id", PrepayDetail.class);
|
||||
arp.addMapping("prepay_detail_state_history", "id", PrepayDetailStateHistory.class);
|
||||
arp.addMapping("refund_detail", "id", RefundDetail.class);
|
||||
arp.addMapping("refund_detail_state_history", "id", RefundDetailStateHistory.class);
|
||||
// Composite Primary Key order: customer_id,supermarket_id,product_id
|
||||
arp.addMapping("customer_supermarket_product", "customer_id,supermarket_id,product_id", CustomerSupermarketProduct.class);
|
||||
arp.addMapping("customer_pact", "id", CustomerPact.class);
|
||||
arp.addMapping("prepay_customer", "id", PrepayCustomer.class);
|
||||
arp.addMapping("prepay_truck", "id", PrepayTruck.class);
|
||||
arp.addMapping("sms_log", "id", SmsLog.class);
|
||||
arp.addMapping("sms_notice_contact", "id", SmsNoticeContact.class);
|
||||
arp.addMapping("sync_task", "id", SyncTask.class);
|
||||
arp.addMapping("ossfile_log", "id", OssfileLog.class);
|
||||
arp.addMapping("modify_log", "id", ModifyLog.class);
|
||||
arp.addMapping("sms_log", "id", SmsLog.class);
|
||||
arp.addMapping("action_cmd_log", "id", ActionCmdLog.class);
|
||||
arp.addMapping("modify_log", "id", ModifyLog.class);
|
||||
arp.addMapping("sysuser", "id", Sysuser.class);
|
||||
arp.addMapping("trans_price_config_trash", "id", TransPriceConfigTrash.class);
|
||||
arp.addMapping("trans_price_config_transfer", "id", TransPriceConfigTransfer.class);
|
||||
arp.addMapping("sms_notice_contact", "id", SmsNoticeContact.class);
|
||||
arp.addMapping("trans_price_config_sale", "id", TransPriceConfigSale.class);
|
||||
arp.addMapping("ticket_invalid_verify", "id", TicketInvalidVerify.class);
|
||||
arp.addMapping("ticket_log", "id", TicketLog.class);
|
||||
arp.addMapping("ticket_receive", "id", TicketReceive.class);
|
||||
// Composite Primary Key order: unit_id,unit_type
|
||||
arp.addMapping("cctv", "unit_id,unit_type", Cctv.class);
|
||||
// Composite Primary Key order: id,unit_id,unit_type
|
||||
|
|
@ -70,8 +74,8 @@ public class _MappingKit {
|
|||
arp.addMapping("order_seq", "tm,supermarket_id,type", OrderSeq.class);
|
||||
arp.addMapping("order_trash", "sn", OrderTrash.class);
|
||||
arp.addMapping("stock_modify_log", "id", StockModifyLog.class);
|
||||
arp.addMapping("ordercluster_truck", "id", OrderclusterTruck.class);
|
||||
arp.addMapping("order_invalid_verify", "id", OrderInvalidVerify.class);
|
||||
arp.addMapping("ordercluster_truck", "id", OrderclusterTruck.class);
|
||||
arp.addMapping("ordercluster", "id", Ordercluster.class);
|
||||
arp.addMapping("order_transfer", "sn", OrderTransfer.class);
|
||||
arp.addMapping("order_sale", "sn", OrderSale.class);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,360 @@
|
|||
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 Mon Mar 01 10:54:13 CST 2021
|
||||
* TableName: ticket_invalid_verify
|
||||
* Remarks: 结算单管理 - 结算单作废申请
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class BaseTicketInvalidVerify<M extends BaseTicketInvalidVerify<M>> extends BaseModel<M> implements IBean {
|
||||
|
||||
public static final String tablename = "ticket_invalid_verify";
|
||||
|
||||
@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: ticket_code
|
||||
* type: VARCHAR(20)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param ticketCode 结算单代码
|
||||
*/
|
||||
@JSONField(name="ticket_code")
|
||||
public void setTicketCode(String ticketCode) {
|
||||
set("ticket_code", ticketCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return ticket_code 结算单代码
|
||||
*/
|
||||
@JSONField(name="ticket_code")
|
||||
public String getTicketCode() {
|
||||
return getStr("ticket_code");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: create_time
|
||||
* type: DATETIME(19)
|
||||
* isNullable: NO
|
||||
* 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: change_time
|
||||
* type: TIMESTAMP(19)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: CURRENT_TIMESTAMP
|
||||
* @param changeTime 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public void setChangeTime(java.util.Date changeTime) {
|
||||
set("change_time", changeTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return change_time 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public java.util.Date getChangeTime() {
|
||||
return get("change_time");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: state
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: 1
|
||||
* @param state 付费状态。
|
||||
1.提交、待审核
|
||||
2.审核通过,计入余额
|
||||
9.作废
|
||||
*/
|
||||
@JSONField(name="state")
|
||||
public void setState(Integer state) {
|
||||
set("state", state);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return state 付费状态。
|
||||
1.提交、待审核
|
||||
2.审核通过,计入余额
|
||||
9.作废
|
||||
*/
|
||||
@JSONField(name="state")
|
||||
public Integer getState() {
|
||||
return getInt("state");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: create_user_id
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* 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(255)
|
||||
* isNullable: NO
|
||||
* 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: verify_user_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param verifyUserId 审核用户id
|
||||
*/
|
||||
@JSONField(name="verify_user_id")
|
||||
public void setVerifyUserId(Integer verifyUserId) {
|
||||
set("verify_user_id", verifyUserId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return verify_user_id 审核用户id
|
||||
*/
|
||||
@JSONField(name="verify_user_id")
|
||||
public Integer getVerifyUserId() {
|
||||
return getInt("verify_user_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: verify_user_name
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param verifyUserName 审核用户姓名
|
||||
*/
|
||||
@JSONField(name="verify_user_name")
|
||||
public void setVerifyUserName(String verifyUserName) {
|
||||
set("verify_user_name", verifyUserName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return verify_user_name 审核用户姓名
|
||||
*/
|
||||
@JSONField(name="verify_user_name")
|
||||
public String getVerifyUserName() {
|
||||
return getStr("verify_user_name");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: order_sn
|
||||
* type: CHAR(16)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param orderSn 关联订单号,方便查询
|
||||
*/
|
||||
@JSONField(name="order_sn")
|
||||
public void setOrderSn(String orderSn) {
|
||||
set("order_sn", orderSn);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return order_sn 关联订单号,方便查询
|
||||
*/
|
||||
@JSONField(name="order_sn")
|
||||
public String getOrderSn() {
|
||||
return getStr("order_sn");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: type
|
||||
* type: SMALLINT(5)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param type 1、2、3、4、5
|
||||
*/
|
||||
@JSONField(name="type")
|
||||
public void setType(Integer type) {
|
||||
set("type", type);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return type 1、2、3、4、5
|
||||
*/
|
||||
@JSONField(name="type")
|
||||
public Integer getType() {
|
||||
return getInt("type");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: ticket_receive_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param ticketReceiveId 领用记录id
|
||||
*/
|
||||
@JSONField(name="ticket_receive_id")
|
||||
public void setTicketReceiveId(Integer ticketReceiveId) {
|
||||
set("ticket_receive_id", ticketReceiveId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return ticket_receive_id 领用记录id
|
||||
*/
|
||||
@JSONField(name="ticket_receive_id")
|
||||
public Integer getTicketReceiveId() {
|
||||
return getInt("ticket_receive_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: supermarket_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* 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: invalid_memo
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param invalidMemo 作废申请说明
|
||||
*/
|
||||
@JSONField(name="invalid_memo")
|
||||
public void setInvalidMemo(String invalidMemo) {
|
||||
set("invalid_memo", invalidMemo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_memo 作废申请说明
|
||||
*/
|
||||
@JSONField(name="invalid_memo")
|
||||
public String getInvalidMemo() {
|
||||
return getStr("invalid_memo");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,398 @@
|
|||
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 Mon Mar 01 10:54:13 CST 2021
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class BaseTicketLog<M extends BaseTicketLog<M>> extends BaseModel<M> implements IBean {
|
||||
|
||||
public static final String tablename = "ticket_log";
|
||||
|
||||
@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: ticket_receive_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param ticketReceiveId 领用记录id
|
||||
*/
|
||||
@JSONField(name="ticket_receive_id")
|
||||
public void setTicketReceiveId(Integer ticketReceiveId) {
|
||||
set("ticket_receive_id", ticketReceiveId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return ticket_receive_id 领用记录id
|
||||
*/
|
||||
@JSONField(name="ticket_receive_id")
|
||||
public Integer getTicketReceiveId() {
|
||||
return getInt("ticket_receive_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: ticket_code
|
||||
* type: VARCHAR(20)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param ticketCode 结算单代码
|
||||
*/
|
||||
@JSONField(name="ticket_code")
|
||||
public void setTicketCode(String ticketCode) {
|
||||
set("ticket_code", ticketCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return ticket_code 结算单代码
|
||||
*/
|
||||
@JSONField(name="ticket_code")
|
||||
public String getTicketCode() {
|
||||
return getStr("ticket_code");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: create_time
|
||||
* type: DATETIME(19)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: CURRENT_TIMESTAMP
|
||||
* @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: change_time
|
||||
* type: TIMESTAMP(19)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: CURRENT_TIMESTAMP
|
||||
* @param changeTime 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public void setChangeTime(java.util.Date changeTime) {
|
||||
set("change_time", changeTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return change_time 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public java.util.Date getChangeTime() {
|
||||
return get("change_time");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: state
|
||||
* type: SMALLINT(5)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: 1
|
||||
* @param state 1 新领取、未使用,5 已使用,9 作废
|
||||
*/
|
||||
@JSONField(name="state")
|
||||
public void setState(Integer state) {
|
||||
set("state", state);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return state 1 新领取、未使用,5 已使用,9 作废
|
||||
*/
|
||||
@JSONField(name="state")
|
||||
public Integer getState() {
|
||||
return getInt("state");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: settlement_time
|
||||
* type: DATETIME(19)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param settlementTime 开票时间
|
||||
*/
|
||||
@JSONField(name="settlement_time")
|
||||
public void setSettlementTime(java.util.Date settlementTime) {
|
||||
set("settlement_time", settlementTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return settlement_time 开票时间
|
||||
*/
|
||||
@JSONField(name="settlement_time")
|
||||
public java.util.Date getSettlementTime() {
|
||||
return get("settlement_time");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: settlement_user_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param settlementUserId 开票用户id
|
||||
*/
|
||||
@JSONField(name="settlement_user_id")
|
||||
public void setSettlementUserId(Integer settlementUserId) {
|
||||
set("settlement_user_id", settlementUserId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return settlement_user_id 开票用户id
|
||||
*/
|
||||
@JSONField(name="settlement_user_id")
|
||||
public Integer getSettlementUserId() {
|
||||
return getInt("settlement_user_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: settlement_user_name
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param settlementUserName 开票用户姓名
|
||||
*/
|
||||
@JSONField(name="settlement_user_name")
|
||||
public void setSettlementUserName(String settlementUserName) {
|
||||
set("settlement_user_name", settlementUserName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return settlement_user_name 开票用户姓名
|
||||
*/
|
||||
@JSONField(name="settlement_user_name")
|
||||
public String getSettlementUserName() {
|
||||
return getStr("settlement_user_name");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: invalid_time
|
||||
* type: DATETIME(19)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param invalidTime 作废时间
|
||||
*/
|
||||
@JSONField(name="invalid_time")
|
||||
public void setInvalidTime(java.util.Date invalidTime) {
|
||||
set("invalid_time", invalidTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_time 作废时间
|
||||
*/
|
||||
@JSONField(name="invalid_time")
|
||||
public java.util.Date getInvalidTime() {
|
||||
return get("invalid_time");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: invalid_user_id
|
||||
* type: INT(10)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param invalidUserId 作废用户id
|
||||
*/
|
||||
@JSONField(name="invalid_user_id")
|
||||
public void setInvalidUserId(Integer invalidUserId) {
|
||||
set("invalid_user_id", invalidUserId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_user_id 作废用户id
|
||||
*/
|
||||
@JSONField(name="invalid_user_id")
|
||||
public Integer getInvalidUserId() {
|
||||
return getInt("invalid_user_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: invalid_user_name
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param invalidUserName 作废用户姓名
|
||||
*/
|
||||
@JSONField(name="invalid_user_name")
|
||||
public void setInvalidUserName(String invalidUserName) {
|
||||
set("invalid_user_name", invalidUserName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_user_name 作废用户姓名
|
||||
*/
|
||||
@JSONField(name="invalid_user_name")
|
||||
public String getInvalidUserName() {
|
||||
return getStr("invalid_user_name");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: invalid_memo
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param invalidMemo 作废说明
|
||||
*/
|
||||
@JSONField(name="invalid_memo")
|
||||
public void setInvalidMemo(String invalidMemo) {
|
||||
set("invalid_memo", invalidMemo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_memo 作废说明
|
||||
*/
|
||||
@JSONField(name="invalid_memo")
|
||||
public String getInvalidMemo() {
|
||||
return getStr("invalid_memo");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: order_sn
|
||||
* type: CHAR(16)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param orderSn 关联订单号,方便查询
|
||||
*/
|
||||
@JSONField(name="order_sn")
|
||||
public void setOrderSn(String orderSn) {
|
||||
set("order_sn", orderSn);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return order_sn 关联订单号,方便查询
|
||||
*/
|
||||
@JSONField(name="order_sn")
|
||||
public String getOrderSn() {
|
||||
return getStr("order_sn");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: type
|
||||
* type: SMALLINT(5)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param type 1、2、3、4、5
|
||||
*/
|
||||
@JSONField(name="type")
|
||||
public void setType(Integer type) {
|
||||
set("type", type);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return type 1、2、3、4、5
|
||||
*/
|
||||
@JSONField(name="type")
|
||||
public Integer getType() {
|
||||
return getInt("type");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
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 Mon Mar 01 10:54:13 CST 2021
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class BaseTicketReceive<M extends BaseTicketReceive<M>> extends BaseModel<M> implements IBean {
|
||||
|
||||
public static final String tablename = "ticket_receive";
|
||||
|
||||
@JSONField(serialize=false)
|
||||
public String getTablename(){
|
||||
return tablename;
|
||||
}
|
||||
|
||||
/**
|
||||
* name: id
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: YES
|
||||
* defaultValue:
|
||||
* @param id
|
||||
*/
|
||||
@JSONField(name="id")
|
||||
public void setId(Integer id) {
|
||||
set("id", id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return id
|
||||
*/
|
||||
@JSONField(name="id")
|
||||
public Integer getId() {
|
||||
return getInt("id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: surplus
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param surplus 剩余数量
|
||||
*/
|
||||
@JSONField(name="surplus")
|
||||
public void setSurplus(Integer surplus) {
|
||||
set("surplus", surplus);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return surplus 剩余数量
|
||||
*/
|
||||
@JSONField(name="surplus")
|
||||
public Integer getSurplus() {
|
||||
return getInt("surplus");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: start_code
|
||||
* type: VARCHAR(20)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param startCode 起始号码
|
||||
*/
|
||||
@JSONField(name="start_code")
|
||||
public void setStartCode(String startCode) {
|
||||
set("start_code", startCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return start_code 起始号码
|
||||
*/
|
||||
@JSONField(name="start_code")
|
||||
public String getStartCode() {
|
||||
return getStr("start_code");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: end_code
|
||||
* type: VARCHAR(20)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param endCode 截止号码
|
||||
*/
|
||||
@JSONField(name="end_code")
|
||||
public void setEndCode(String endCode) {
|
||||
set("end_code", endCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return end_code 截止号码
|
||||
*/
|
||||
@JSONField(name="end_code")
|
||||
public String getEndCode() {
|
||||
return getStr("end_code");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: current_code
|
||||
* type: VARCHAR(20)
|
||||
* isNullable: YES
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param currentCode 当前使用到的号码
|
||||
*/
|
||||
@JSONField(name="current_code")
|
||||
public void setCurrentCode(String currentCode) {
|
||||
set("current_code", currentCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return current_code 当前使用到的号码
|
||||
*/
|
||||
@JSONField(name="current_code")
|
||||
public String getCurrentCode() {
|
||||
return getStr("current_code");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: create_time
|
||||
* type: DATETIME(19)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: CURRENT_TIMESTAMP
|
||||
* @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: change_time
|
||||
* type: TIMESTAMP(19)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: CURRENT_TIMESTAMP
|
||||
* @param changeTime 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public void setChangeTime(java.util.Date changeTime) {
|
||||
set("change_time", changeTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return change_time 最后修改时间
|
||||
*/
|
||||
@JSONField(name="change_time")
|
||||
public java.util.Date getChangeTime() {
|
||||
return get("change_time");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: receive_user_id
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param receiveUserId 领取用户id
|
||||
*/
|
||||
@JSONField(name="receive_user_id")
|
||||
public void setReceiveUserId(Integer receiveUserId) {
|
||||
set("receive_user_id", receiveUserId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return receive_user_id 领取用户id
|
||||
*/
|
||||
@JSONField(name="receive_user_id")
|
||||
public Integer getReceiveUserId() {
|
||||
return getInt("receive_user_id");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: receive_user_name
|
||||
* type: VARCHAR(255)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue:
|
||||
* @param receiveUserName 领取用户姓名
|
||||
*/
|
||||
@JSONField(name="receive_user_name")
|
||||
public void setReceiveUserName(String receiveUserName) {
|
||||
set("receive_user_name", receiveUserName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return receive_user_name 领取用户姓名
|
||||
*/
|
||||
@JSONField(name="receive_user_name")
|
||||
public String getReceiveUserName() {
|
||||
return getStr("receive_user_name");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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: invalid_count
|
||||
* type: INT(10)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: 0
|
||||
* @param invalidCount 作废数量
|
||||
*/
|
||||
@JSONField(name="invalid_count")
|
||||
public void setInvalidCount(Integer invalidCount) {
|
||||
set("invalid_count", invalidCount);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return invalid_count 作废数量
|
||||
*/
|
||||
@JSONField(name="invalid_count")
|
||||
public Integer getInvalidCount() {
|
||||
return getInt("invalid_count");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -24,8 +24,8 @@ import java.util.Map;
|
|||
* PrimaryKey: id
|
||||
*/
|
||||
public class InvoiceReceiveService extends BaseService {
|
||||
private static Log log = Log.getLog(InvoiceReceiveService.class);
|
||||
public static final InvoiceReceiveService me = new InvoiceReceiveService();
|
||||
private static final Log log = Log.getLog(InvoiceReceiveService.class);
|
||||
public static final InvoiceReceiveService me = new InvoiceReceiveService();
|
||||
|
||||
/**
|
||||
* 检查发票代码、发票号码是否是领用过的,并且领用还没有被用完
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.cowr.ssjygl.ticket.invalidverify;
|
||||
|
||||
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketInvalidVerify;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_invalid_verify
|
||||
* Remarks: 结算单管理 - 结算单作废申请
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketInvalidVerifyPKValidator 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()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
package com.cowr.ssjygl.ticket.invalidverify;
|
||||
|
||||
import com.cowr.common.Const;
|
||||
import com.cowr.common.base.BaseService;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.model.TicketInvalidVerify;
|
||||
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.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_invalid_verify
|
||||
* Remarks: 结算单管理 - 结算单作废申请
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketInvalidVerifyService extends BaseService {
|
||||
public static final TicketInvalidVerifyService me = new TicketInvalidVerifyService();
|
||||
|
||||
public Page<Record> find(
|
||||
PageParam pp,
|
||||
String stm,
|
||||
String etm,
|
||||
String ticket_code,
|
||||
String order_sn,
|
||||
String create_user_name,
|
||||
Integer supermarket_id,
|
||||
Integer state
|
||||
) {
|
||||
String selectsql = "select t.*, s.name supermarket_name ";
|
||||
String fromsql = "from ticket_invalid_verify t \n" +
|
||||
" left join supermarket s on s.id = t.supermarket_id \n" +
|
||||
" where 1=1 ";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
String totalRowSql = "select count(*) " + fromsql;
|
||||
String findSql = selectsql + fromsql;
|
||||
|
||||
if (StrKit.notBlank(stm)) {
|
||||
fromsql += " and t.create_time >= ? \n";
|
||||
paraList.add(stm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(etm)) {
|
||||
fromsql += " and t.create_time <= ? \n";
|
||||
paraList.add(etm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(ticket_code)) {
|
||||
fromsql += " and t.ticket_code like ? \n";
|
||||
paraList.add("%" + ticket_code.trim() + "%");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(order_sn)) {
|
||||
fromsql += " and t.order_sn like ? \n";
|
||||
paraList.add("%" + order_sn.trim() + "%");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(create_user_name)) {
|
||||
fromsql += " and t.create_user_name like ? \n";
|
||||
paraList.add("%" + create_user_name.trim() + "%");
|
||||
}
|
||||
|
||||
if (supermarket_id != null) {
|
||||
fromsql += " and t.supermarket_id = ? \n";
|
||||
paraList.add(supermarket_id);
|
||||
}
|
||||
|
||||
if (state != null) {
|
||||
fromsql += " and t.state = ? \n";
|
||||
paraList.add(state);
|
||||
}
|
||||
|
||||
// 前端传了排序字段,并且排序字段存在相关表中
|
||||
if (StrKit.notBlank(pp.getSort_field()) && TicketInvalidVerify.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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
package com.cowr.ssjygl.ticket.invalidverify;
|
||||
|
||||
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.TicketInvalidVerify;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_invalid_verify
|
||||
* Remarks: 结算单管理 - 结算单作废申请
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketInvalidVerifyValidator extends CrudParamValidator {
|
||||
@Override
|
||||
protected void validate(Controller c) {
|
||||
// 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断
|
||||
if (!"save".equals(getActionMethodName())) {
|
||||
validateRequired("id", "id", "id 必填");
|
||||
|
||||
validateString("id", 1, 32, "id", "id 长度 1~32");
|
||||
}
|
||||
|
||||
validateString("ticket_code", 1, 20, "ticket_code", "ticket_code 长度 1~20");
|
||||
|
||||
|
||||
validateString("create_time", 1, 19, "create_time", "create_time 长度 1~19");
|
||||
|
||||
validateDate("create_time", "yyyy-MM-dd HH:mm:ss", false, "create_time", "create_time 格式 yyyy-MM-dd HH:mm:ss"); // 默认时间时间字符串格式,生成后根据情况调整
|
||||
|
||||
validateString("change_time", 0, 19, "change_time", "change_time 长度 0~19");
|
||||
|
||||
|
||||
validateInteger("state", -2147483647, 2147483647, "state", "state 范围 -2147483647~2147483647");
|
||||
|
||||
|
||||
validateInteger("create_user_id", 1, 2147483647, "create_user_id", "create_user_id 范围 1~2147483647");
|
||||
|
||||
|
||||
validateString("create_user_name", 1, 255, "create_user_name", "create_user_name 长度 1~255");
|
||||
|
||||
if (StrKit.notBlank(c.get("verify_user_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("verify_user_id", 1, 2147483647, "verify_user_id", "verify_user_id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("verify_user_name", 0, 255, "verify_user_name", "verify_user_name 长度 0~255");
|
||||
|
||||
|
||||
validateString("order_sn", 0, 16, "order_sn", "order_sn 长度 0~16");
|
||||
|
||||
if (StrKit.notBlank(c.get("type"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("type", -999999, 999999, "type", "type 范围 -999999~999999");
|
||||
}
|
||||
if (StrKit.notBlank(c.get("invoice_receive_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("invoice_receive_id", 1, 2147483647, "invoice_receive_id", "invoice_receive_id 范围 1~2147483647");
|
||||
}
|
||||
if (StrKit.notBlank(c.get("supermarket_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("supermarket_id", 1, 2147483647, "supermarket_id", "supermarket_id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("invalid_memo", 1, 255, "invalid_memo", "invalid_memo 长度 1~255");
|
||||
|
||||
|
||||
validateString("memo", 0, 255, "memo", "memo 长度 0~255");
|
||||
|
||||
|
||||
// 使用 model 更新时,model 不能只有主键有值
|
||||
// 这里用 getActionMethodName 写死,判断是 update 时,才做验证
|
||||
// 如果确实是需要将主键外的字段置为 null,可以在代码生成后删掉这段
|
||||
if ("edit".equals(getActionMethodName())) {
|
||||
validateUpdateModel(TicketInvalidVerify.class, "", true); // 忽略不在model中的字段
|
||||
}
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
c.renderJson(Result.failed(getErrmsg()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.cowr.ssjygl.ticket.log;
|
||||
|
||||
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketLogPKValidator 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()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
package com.cowr.ssjygl.ticket.log;
|
||||
|
||||
import com.cowr.common.Const;
|
||||
import com.cowr.common.base.BaseService;
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.utils.DataUtil;
|
||||
import com.cowr.common.utils.DateTimeUtil;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.Page;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketLogService extends BaseService {
|
||||
public static final TicketLogService me = new TicketLogService();
|
||||
|
||||
public TicketLog checkInvalidTicketLog(String ticket_code) {
|
||||
return TicketLog.dao.findFirst(
|
||||
"select * from ticket_log t where t.state = ? and t.ticket_code = ?",
|
||||
OrderStateEnum.INVALID.getStateid(),
|
||||
ticket_code
|
||||
);
|
||||
}
|
||||
|
||||
public Page<Record> find(PageParam pp, Integer supermarket_id, Integer state, String order_sn, String stm, String etm, String ticket_code) {
|
||||
String selectsql = "select t.*, r.supermarket_id, s.name supermarket_name, \n" +
|
||||
" case when t.type = 1 then o.weight when t.type = 3 then p.weight end weight, \n" +
|
||||
" case when t.type = 1 then o.total_price when t.type = 3 then p.total_price end total_price, \n" +
|
||||
" case when t.type = 1 then o.create_time when t.type = 3 then p.create_time end create_time, \n" +
|
||||
" case when t.type = 1 then o.settlement_user_name when t.type = 3 then p.settlement_user_name end settlement_user_name, \n" +
|
||||
" case when t.type = 1 then o.customer_name when t.type = 3 then p.customer_name end customer_name ";
|
||||
String fromsql = "from ticket_log t \n" +
|
||||
" left join ticket_receive r on r.id = t.ticket_receive_id \n" +
|
||||
" left join supermarket s on s.id = r.supermarket_id \n" +
|
||||
" left join order_sale o on o.sn = t.order_sn \n" +
|
||||
" left join order_temp p on p.sn = t.order_sn \n" +
|
||||
" where 1=1 ";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
if (supermarket_id != null) {
|
||||
fromsql += " and r.supermarket_id = ? \n";
|
||||
paraList.add(supermarket_id);
|
||||
}
|
||||
|
||||
if (state != null) {
|
||||
fromsql += " and t.state = ? \n";
|
||||
paraList.add(state);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(order_sn)) {
|
||||
fromsql += " and t.order_sn like ? \n";
|
||||
paraList.add("%" + order_sn.trim() + "%");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(stm)) {
|
||||
fromsql += " and t.create_time >= ? \n";
|
||||
paraList.add(stm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(etm)) {
|
||||
fromsql += " and t.create_time <= ? \n";
|
||||
paraList.add(etm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(ticket_code)) {
|
||||
fromsql += " and t.ticket_code like ? \n";
|
||||
paraList.add("%" + ticket_code.trim() + "%");
|
||||
}
|
||||
|
||||
String totalRowSql = "select count(*) " + fromsql;
|
||||
String findSql = selectsql + fromsql;
|
||||
|
||||
// 前端传了排序字段,并且排序字段存在相关表中
|
||||
if (StrKit.notBlank(pp.getSort_field()) && TicketLog.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 Workbook export(Integer supermarket_id, Integer state, String order_sn, String stm, String etm, String ticket_code) {
|
||||
String selectsql = "select t.*, r.supermarket_id, s.name supermarket_name, \n" +
|
||||
" tr.first_weight, tr.second_weight, \n" +
|
||||
" case when t.type = 1 then o.weight when t.type = 3 then p.weight end weight, \n" +
|
||||
" case when t.type = 1 then o.total_price when t.type = 3 then p.total_price end total_price, \n" +
|
||||
" case when t.type = 1 then o.create_time when t.type = 3 then p.create_time end order_create_time, \n" +
|
||||
" case when t.type = 1 then o.settlement_user_name when t.type = 3 then p.settlement_user_name end settlement_user_name, \n" +
|
||||
" case when t.type = 1 then o.truck_license when t.type = 3 then p.truck_license end truck_license, \n" +
|
||||
" case when t.type = 1 then o.customer_texpayer_name when t.type = 3 then p.customer_texpayer_name end customer_texpayer_name, \n" +
|
||||
" case when t.type = 1 then o.customer_texpayer_num when t.type = 3 then p.customer_texpayer_num end customer_texpayer_num, \n" +
|
||||
" case when t.type = 1 then o.customer_name when t.type = 3 then p.customer_name end customer_name ";
|
||||
String fromsql = "from ticket_log t \n" +
|
||||
" left join ticket_receive r on r.id = t.ticket_receive_id \n" +
|
||||
" left join supermarket s on s.id = r.supermarket_id \n" +
|
||||
" left join order_sale o on o.sn = t.order_sn \n" +
|
||||
" left join order_temp p on p.sn = t.order_sn \n" +
|
||||
" left join transport tr on tr.order_sn = t.order_sn \n" +
|
||||
" where 1=1 \n";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
if (supermarket_id != null) {
|
||||
fromsql += " and r.supermarket_id = ? \n";
|
||||
paraList.add(supermarket_id);
|
||||
}
|
||||
|
||||
if (state != null) {
|
||||
fromsql += " and t.state = ? \n";
|
||||
paraList.add(state);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(order_sn)) {
|
||||
fromsql += " and t.order_sn like ? \n";
|
||||
paraList.add("%" + order_sn.trim() + "%");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(stm)) {
|
||||
fromsql += " and t.create_time >= ? \n";
|
||||
paraList.add(stm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(etm)) {
|
||||
fromsql += " and t.create_time <= ? \n";
|
||||
paraList.add(etm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(ticket_code)) {
|
||||
fromsql += " and t.ticket_code like ? \n";
|
||||
paraList.add("%" + ticket_code.trim() + "%");
|
||||
}
|
||||
|
||||
String findSql = selectsql + fromsql + " order by t.create_time desc";
|
||||
List<Record> list = Db.find(findSql, paraList.toArray());
|
||||
|
||||
Workbook wb = new XSSFWorkbook();
|
||||
Sheet sheet = wb.createSheet("结算单使用日志");
|
||||
|
||||
// 表头 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.createCell(a++).setCellValue("开票名称");
|
||||
row.createCell(a++).setCellValue("开票税号");
|
||||
row.createCell(a++).setCellValue("订单号");
|
||||
row.createCell(a++).setCellValue("总价");
|
||||
row.createCell(a++).setCellValue("开票时间");
|
||||
row.createCell(a++).setCellValue("开票人");
|
||||
row.createCell(a++).setCellValue("作废时间");
|
||||
row.createCell(a++).setCellValue("作废人");
|
||||
row.createCell(a++).setCellValue("状态");
|
||||
row.createCell(a++).setCellValue("砂站");
|
||||
row.createCell(a++).setCellValue("车牌号");
|
||||
row.createCell(a++).setCellValue("数量(吨)");
|
||||
row.createCell(a++).setCellValue("皮重(吨)");
|
||||
row.createCell(a++).setCellValue("毛重(吨)");
|
||||
row.createCell(a++).setCellValue("备注");
|
||||
// 表头 end
|
||||
|
||||
int end_col = 16;
|
||||
int datalen = list.size();
|
||||
for (int i = 0; i < datalen; i++) {
|
||||
Record order = list.get(i);
|
||||
|
||||
row = sheet.createRow(i + 1);
|
||||
a = 0;
|
||||
row.createCell(a++).setCellValue(i + 1);
|
||||
row.createCell(a++).setCellValue(order.getStr("ticket_code"));
|
||||
row.createCell(a++).setCellValue(order.getStr("invoice_number"));
|
||||
row.createCell(a++).setCellValue(order.getStr("invoice_code"));
|
||||
row.createCell(a++).setCellValue(order.getStr("customer_texpayer_name"));
|
||||
row.createCell(a++).setCellValue(order.getStr("customer_texpayer_num"));
|
||||
row.createCell(a++).setCellValue(order.getStr("order_sn"));
|
||||
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price"));
|
||||
row.createCell(a++).setCellValue(DateTimeUtil.sdfhms.get().format(order.getDate("create_time")));
|
||||
row.createCell(a++).setCellValue(order.getStr("settlement_user_name"));
|
||||
if (order.get("invalid_time") != null) {
|
||||
row.createCell(a++).setCellValue(DateTimeUtil.sdfhms.get().format(order.getDate("invalid_time")));
|
||||
} else {
|
||||
row.createCell(a++).setCellValue("");
|
||||
}
|
||||
row.createCell(a++).setCellValue(order.getStr("invalid_user_name"));
|
||||
switch (order.getInt("state")) {
|
||||
case 5:
|
||||
row.createCell(a++).setCellValue("已使用");
|
||||
break;
|
||||
case 9:
|
||||
row.createCell(a++).setCellValue("已作废");
|
||||
break;
|
||||
default:
|
||||
row.createCell(a++).setCellValue("");
|
||||
}
|
||||
|
||||
row.createCell(a++).setCellValue(order.getStr("supermarket_name"));
|
||||
row.createCell(a++).setCellValue(order.getStr("truck_license"));
|
||||
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "weight"));
|
||||
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "first_weight"));
|
||||
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "second_weight"));
|
||||
row.createCell(a++).setCellValue(order.getStr("invalid_memo"));
|
||||
}
|
||||
|
||||
// 通用单元格格式
|
||||
Font font = wb.createFont();
|
||||
CellStyle cellStyle = wb.createCellStyle();
|
||||
font.setFontHeight((short) (10 * 20));
|
||||
font.setFontName("宋体");
|
||||
cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
|
||||
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
|
||||
cellStyle.setFont(font);
|
||||
|
||||
// 设置通用单元格格式
|
||||
for (int r = 0; r < datalen + 1; r++) {
|
||||
row = sheet.getRow(r);
|
||||
if (row == null) {
|
||||
row = sheet.createRow(r);
|
||||
}
|
||||
|
||||
for (int c = 0; c < end_col + 1; c++) {
|
||||
Cell cell = row.getCell(c);
|
||||
|
||||
if (cell == null) {
|
||||
cell = row.createCell(c);
|
||||
}
|
||||
cell.setCellStyle(cellStyle);
|
||||
}
|
||||
}
|
||||
|
||||
return wb;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package com.cowr.ssjygl.ticket.log;
|
||||
|
||||
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.TicketLog;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketLogValidator extends CrudParamValidator {
|
||||
@Override
|
||||
protected void validate(Controller c) {
|
||||
// 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断
|
||||
if (!"save".equals(getActionMethodName())) {
|
||||
validateRequired("id", "id", "id 必填");
|
||||
|
||||
validateString("id", 1, 32, "id", "id 长度 1~32");
|
||||
}
|
||||
if (StrKit.notBlank(c.get("ticket_receive_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("ticket_receive_id", 1, 2147483647, "ticket_receive_id", "ticket_receive_id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("ticket_code", 1, 20, "ticket_code", "ticket_code 长度 1~20");
|
||||
|
||||
|
||||
validateString("create_time", 0, 19, "create_time", "create_time 长度 0~19");
|
||||
|
||||
|
||||
validateString("change_time", 0, 19, "change_time", "change_time 长度 0~19");
|
||||
|
||||
|
||||
validateInteger("state", -999999, 999999, "state", "state 范围 -999999~999999");
|
||||
|
||||
|
||||
validateString("settlement_time", 0, 19, "settlement_time", "settlement_time 长度 0~19");
|
||||
|
||||
validateDate("settlement_time", "yyyy-MM-dd HH:mm:ss", false, "settlement_time", "settlement_time 格式 yyyy-MM-dd HH:mm:ss"); // 默认时间时间字符串格式,生成后根据情况调整
|
||||
if (StrKit.notBlank(c.get("settlement_user_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("settlement_user_id", 1, 2147483647, "settlement_user_id", "settlement_user_id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("settlement_user_name", 0, 255, "settlement_user_name", "settlement_user_name 长度 0~255");
|
||||
|
||||
|
||||
validateString("invalid_time", 0, 19, "invalid_time", "invalid_time 长度 0~19");
|
||||
|
||||
validateDate("invalid_time", "yyyy-MM-dd HH:mm:ss", false, "invalid_time", "invalid_time 格式 yyyy-MM-dd HH:mm:ss"); // 默认时间时间字符串格式,生成后根据情况调整
|
||||
if (StrKit.notBlank(c.get("invalid_user_id"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("invalid_user_id", 1, 2147483647, "invalid_user_id", "invalid_user_id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("invalid_user_name", 0, 255, "invalid_user_name", "invalid_user_name 长度 0~255");
|
||||
|
||||
|
||||
validateString("invalid_memo", 0, 255, "invalid_memo", "invalid_memo 长度 0~255");
|
||||
|
||||
|
||||
validateString("order_sn", 0, 16, "order_sn", "order_sn 长度 0~16");
|
||||
|
||||
if (StrKit.notBlank(c.get("type"))) { // 可为空字段,当传入值时,才做验证
|
||||
validateInteger("type", -999999, 999999, "type", "type 范围 -999999~999999");
|
||||
}
|
||||
|
||||
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(TicketLog.class, "", true); // 忽略不在model中的字段
|
||||
}
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
c.renderJson(Result.failed(getErrmsg()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.cowr.ssjygl.ticket.receive;
|
||||
|
||||
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketReceivePKValidator extends CrudParamValidator {
|
||||
@Override
|
||||
protected void validate(Controller c) {
|
||||
validateRequired("id", "id", "id 必填");
|
||||
validateInteger("id", 1, 2147483647, "id", "id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
c.renderJson(Result.failed(getErrmsg()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
package com.cowr.ssjygl.ticket.receive;
|
||||
|
||||
import com.cowr.common.Const;
|
||||
import com.cowr.common.base.BaseService;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.Page;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketReceiveService extends BaseService {
|
||||
private static final Log log = Log.getLog(TicketReceiveService.class);
|
||||
public static final TicketReceiveService me = new TicketReceiveService();
|
||||
|
||||
/**
|
||||
* 检查结算单代码、结算单号码是否是领用过的,并且领用还没有被用完
|
||||
*
|
||||
* @param supermarket_id
|
||||
* @param ticket_code
|
||||
* @return
|
||||
*/
|
||||
public TicketReceive checkSurplusReceive(int supermarket_id, String ticket_code) {
|
||||
if (!StrKit.notBlank(ticket_code)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Integer code = Integer.parseInt(ticket_code);
|
||||
|
||||
String sql = "select * from ticket_receive t\n" +
|
||||
" where t.supermarket_id = ? \n" +
|
||||
" and t.surplus > 0 \n" +
|
||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
||||
" limit 1";
|
||||
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
|
||||
|
||||
return receive;
|
||||
}
|
||||
|
||||
public TicketReceive checkReceive(int supermarket_id, String ticket_code) {
|
||||
if (!StrKit.notBlank(ticket_code)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Integer code = Integer.parseInt(ticket_code);
|
||||
String sql = "select * from ticket_receive t\n" +
|
||||
" where t.supermarket_id = ? \n" +
|
||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
||||
" limit 1";
|
||||
|
||||
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
|
||||
|
||||
return receive;
|
||||
}
|
||||
|
||||
private String getValidTicketCode(String next_ticket_code, Map<String, TicketLog> map) {
|
||||
if (map.containsKey(next_ticket_code)) { // 说明下一个结算单号码已经作废,需要继续顺延
|
||||
return getValidTicketCode(String.format("%0" + next_ticket_code.length() + "d", Integer.parseInt(next_ticket_code) + 1), map);
|
||||
} else {
|
||||
return next_ticket_code;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定砂站下一个可用的结算单号码
|
||||
* TODO:要区分专票和普票
|
||||
*
|
||||
* @param supermarket_id
|
||||
* @return
|
||||
*/
|
||||
public List<Record> nextTicketCodes(int supermarket_id) {
|
||||
String sql = "select * from ticket_receive t\n" +
|
||||
" where t.supermarket_id = ? \n" +
|
||||
" and t.surplus > 0\n" +
|
||||
" order by cast(t.start_code as unsigned integer) asc";
|
||||
|
||||
List<TicketReceive> receives = TicketReceive.dao.find(sql, supermarket_id);
|
||||
|
||||
if (receives.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
List<Record> out = new ArrayList<>();
|
||||
List<Object> params = new ArrayList<>();
|
||||
List<String> sqlparams = new ArrayList<>();
|
||||
|
||||
for (TicketReceive receive : receives) {
|
||||
params.add(receive.getId());
|
||||
sqlparams.add("?");
|
||||
}
|
||||
|
||||
if (!sqlparams.isEmpty()) {
|
||||
// 凡是有 ticket_log 记录的结算单都不能再用了
|
||||
List<TicketLog> logs = TicketLog.dao.find("select * from ticket_log t where t.ticket_receive_id in(" + StrKit.join(sqlparams, ",") + ")", params.toArray());
|
||||
|
||||
Map<String, TicketLog> map = new HashMap<>();
|
||||
|
||||
for (TicketLog l : logs) {
|
||||
map.put(l.getTicketCode(), l);
|
||||
}
|
||||
|
||||
for (TicketReceive receive : receives) {
|
||||
Record record = receive.toRecord();
|
||||
|
||||
String next_ticket_code = receive.getCurrentCode() == null ? receive.getStartCode() : receive.getCurrentCode();
|
||||
next_ticket_code = getValidTicketCode(next_ticket_code, map);
|
||||
|
||||
if (Long.parseLong(next_ticket_code) > Long.parseLong(receive.getEndCode())) {
|
||||
log.debug("顺延后的 next_ticket_code 超过了 end_code %s %s", receive.getId(), next_ticket_code);
|
||||
continue;
|
||||
}
|
||||
|
||||
record.set("next_ticket_code", next_ticket_code);
|
||||
|
||||
out.add(record);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
public Page<Record> find(PageParam pp, Integer supermarket_id, String reveiver_user_name, String stm, String etm) {
|
||||
String selectsql = "select t.*, s.name supermarket_name, s.name2 supermarket_name2 ";
|
||||
String fromsql = "from ticket_receive t \n" +
|
||||
" left join supermarket s on s.id = t.supermarket_id" +
|
||||
" where 1=1 ";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
if (supermarket_id != null) {
|
||||
fromsql += " and t.supermarket_id = ? \n";
|
||||
paraList.add(supermarket_id);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(reveiver_user_name)) {
|
||||
fromsql += " and t.receive_user_name like ? \n";
|
||||
paraList.add("%" + reveiver_user_name.trim() + "%");
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(stm)) {
|
||||
fromsql += " and t.create_time >= ? \n";
|
||||
paraList.add(stm);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(etm)) {
|
||||
fromsql += " and t.create_time <= ? \n";
|
||||
paraList.add(etm);
|
||||
}
|
||||
|
||||
String totalRowSql = "select count(*) " + fromsql;
|
||||
String findSql = selectsql + fromsql;
|
||||
|
||||
// 前端传了排序字段,并且排序字段存在相关表中
|
||||
if (StrKit.notBlank(pp.getSort_field()) && TicketReceive.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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package com.cowr.ssjygl.ticket.receive;
|
||||
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.jfinal.core.Controller;
|
||||
import com.jfinal.kit.StrKit;
|
||||
|
||||
/**
|
||||
* Generated by COWR Fri Feb 26 16:03:36 CST 2021
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketReceiveValidator extends CrudParamValidator {
|
||||
@Override
|
||||
protected void validate(Controller c) {
|
||||
// 默认新增时,前端不需要传主键。若需要前端传主键,需要去掉这个判断
|
||||
if (!"save".equals(getActionMethodName())) {
|
||||
validateRequired("id", "id", "id 必填");
|
||||
|
||||
validateInteger("id", 1, 2147483647, "id", "id 范围 1~2147483647");
|
||||
}
|
||||
|
||||
validateString("start_code", 1, 20, "start_code", "start_code 长度 1~20");
|
||||
validateString("end_code", 1, 20, "end_code", "end_code 长度 1~20");
|
||||
validateInteger("receive_user_id", 1, 2147483647, "receive_user_id", "receive_user_id 范围 1~2147483647");
|
||||
validateInteger("supermarket_id", 1, 2147483647, "supermarket_id", "supermarket_id 范围 1~2147483647");
|
||||
|
||||
if (StrKit.notBlank(c.get("start_code"), c.get("end_code"))) {
|
||||
if (c.getInt("end_code") - c.getInt("start_code") < 0) {
|
||||
addError("end_code", "end_code 必须大于等于 start_code");
|
||||
}
|
||||
}
|
||||
|
||||
// 使用 model 更新时,model 不能只有主键有值
|
||||
// 这里用 getActionMethodName 写死,判断是 update 时,才做验证
|
||||
// 如果确实是需要将主键外的字段置为 null,可以在代码生成后删掉这段
|
||||
if ("edit".equals(getActionMethodName())) {
|
||||
validateUpdateModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
}
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
c.renderJson(Result.failed(getErrmsg()));
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +79,10 @@ public class Main {
|
|||
"invoice_invalid_verify",
|
||||
"order_invalid_verify",
|
||||
"sms_notice_contact",
|
||||
|
||||
"ticket_invalid_verify",
|
||||
"ticket_log",
|
||||
"ticket_receive",
|
||||
};
|
||||
|
||||
PropKit.use("db.properties");
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.cowr.common.base.BaseService;
|
|||
import com.cowr.common.view.PageParam;
|
||||
import #(modelPackageName).#(tableMeta.modelName);
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.Page;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
|
@ -18,6 +19,7 @@ import java.util.List;
|
|||
* PrimaryKey: #(tableMeta.primaryKey)
|
||||
*/
|
||||
public class #(tableMeta.modelName)#(suffix) extends BaseService {
|
||||
private static final Log log = Log.getLog(#(tableMeta.modelName)Service.class);
|
||||
public static final #(tableMeta.modelName)Service me = new #(tableMeta.modelName)Service();
|
||||
|
||||
public Page<Record> find(PageParam pp) {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import com.cowr.local.ssjygl.customer.pact.CustomerPactController;
|
|||
import com.cowr.local.ssjygl.customer.supermarketproduct.CustomerSupermarketProductController;
|
||||
import com.cowr.local.ssjygl.invoice.invalidverify.InvoiceInvalidVerifyController;
|
||||
import com.cowr.local.ssjygl.order.invalidverify.OrderInvalidVerifyController;
|
||||
import com.cowr.local.ssjygl.ticket.invalidverify.TicketInvalidVerifyController;
|
||||
import com.cowr.local.ssjygl.ticket.log.TicketLogController;
|
||||
import com.cowr.local.ssjygl.ticket.receive.TicketReceiveController;
|
||||
import com.cowr.ssjygl.actioncmdlog.ActionCmdLogController;
|
||||
import com.cowr.local.ssjygl.authlicense.AuthLicenseController;
|
||||
import com.cowr.local.ssjygl.authlicense.AuthLicenseSyncService;
|
||||
|
|
@ -233,6 +236,11 @@ public class Config extends JFinalConfig {
|
|||
me.add("/invoice/receive", InvoiceReceiveController.class);
|
||||
me.add("/invoice/invalidverify", InvoiceInvalidVerifyController.class);
|
||||
|
||||
// -- 结算单管理
|
||||
me.add("/ticket/log", TicketLogController.class);
|
||||
me.add("/ticket/receive", TicketReceiveController.class);
|
||||
me.add("/ticket/invalidverify", TicketInvalidVerifyController.class);
|
||||
|
||||
// -- 日志
|
||||
me.add("/log/sms", SmsLogController.class);
|
||||
me.add("/log/actioncmd", ActionCmdLogController.class);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
package com.cowr.local.ssjygl.ticket.invalidverify;
|
||||
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.local.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.model.TicketInvalidVerify;
|
||||
import com.cowr.ssjygl.ticket.invalidverify.TicketInvalidVerifyService;
|
||||
import com.cowr.ssjygl.ticket.invalidverify.TicketInvalidVerifyValidator;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
public class TicketInvalidVerifyController extends Controller {
|
||||
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
String order_sn = get("order_sn");
|
||||
String create_user_name = get("create_user_name");
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
|
||||
renderJson(Result.object(TicketInvalidVerifyService.me.find(pp, stm, etm, ticket_code, order_sn, create_user_name, supermarket_id, state)));
|
||||
}
|
||||
|
||||
@Before(TicketInvalidVerifyValidator.class)
|
||||
public void save() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
TicketInvalidVerify model = getModel(TicketInvalidVerify.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketInvalidVerifySyncService.me.save(model, tokenuser));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
package com.cowr.local.ssjygl.ticket.invalidverify;
|
||||
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.enums.OrderTypeEnum;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.local.ssjygl.main.CliCacheData;
|
||||
import com.cowr.local.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class TicketInvalidVerifySyncService {
|
||||
private static final Log log = Log.getLog(TicketInvalidVerifySyncService.class);
|
||||
public static TicketInvalidVerifySyncService me = new TicketInvalidVerifySyncService();
|
||||
|
||||
public Result save(String order_sn, String invalid_memo, Sysuser sysuser) {
|
||||
OrderTemp order = OrderTemp.dao.findById(order_sn);
|
||||
|
||||
if (order == null) {
|
||||
return Result.failedstr("按 %s 没有找到订单信息", order_sn);
|
||||
}
|
||||
|
||||
TicketReceive receive = TicketReceiveService.me.checkReceive(CliCacheData.SUP.getId(), order.getTicketCode());
|
||||
if (receive == null) {
|
||||
return Result.failed("没有有效的结算单领用记录,或者订单没有开具有效的结算单");
|
||||
}
|
||||
|
||||
TicketInvalidVerify old = TicketInvalidVerify.dao.findFirst(
|
||||
"select * from ticket_invalid_verify t where t.order_sn = ? and t.state = 1 limit 1", order_sn);
|
||||
|
||||
if (old != null) {
|
||||
return Result.failedstr("订单 %s 已提交申请", order_sn);
|
||||
}
|
||||
|
||||
TicketInvalidVerify model = new TicketInvalidVerify();
|
||||
model.setId(StrKit.getRandomUUID());
|
||||
model.setSupermarketId(CliCacheData.SUP.getId());
|
||||
model.setCreateTime(new Date());
|
||||
model.setCreateUserId(sysuser.getId());
|
||||
model.setCreateUserName(sysuser.getName());
|
||||
model.setTicketReceiveId(receive.getId());
|
||||
model.setOrderSn(order.getSn());
|
||||
model.setType(OrderTypeEnum.TEMP.getTypeid());
|
||||
|
||||
model.setInvalidMemo(invalid_memo);
|
||||
model.setTicketCode(order.getTicketCode());
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.save();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addSaveData(model);
|
||||
|
||||
return SyncTaskService.me.save(synctask);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success(model) : Result.failed("保存失败");
|
||||
}
|
||||
|
||||
public Result save(TicketInvalidVerify model, Sysuser sysuser) {
|
||||
TicketInvalidVerify old = TicketInvalidVerify.dao.findFirst(
|
||||
"select * from ticket_invalid_verify t \n" +
|
||||
" where t.ticket_code = ? \n" +
|
||||
" and t.state = 1 " +
|
||||
" limit 1", model.getTicketCode());
|
||||
|
||||
if (old != null) {
|
||||
return Result.failedstr("结算单 %s 已提交申请", model.getTicketCode());
|
||||
}
|
||||
|
||||
// 先判断这张结算单有没有被领用
|
||||
TicketReceive receive = TicketReceiveService.me.checkReceive(CliCacheData.SUP.getId(), model.getTicketCode());
|
||||
if (receive == null) {
|
||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||
}
|
||||
|
||||
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t \n" +
|
||||
" where t.ticket_number = ? and t.code = ? limit 1 ", model.getTicketCode());
|
||||
|
||||
if (ticketLog != null) {
|
||||
// 再判断这张结算单是不是已经被取消了
|
||||
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("结算单已作废");
|
||||
} else {
|
||||
// 还要判断这张结算单已经在订单上使用了
|
||||
return Result.failed("结算单已使用,请使用“取消结算单”功能");
|
||||
}
|
||||
}
|
||||
|
||||
model.setId(StrKit.getRandomUUID());
|
||||
model.setSupermarketId(CliCacheData.SUP.getId());
|
||||
model.setCreateTime(new Date());
|
||||
model.setCreateUserId(sysuser.getId());
|
||||
model.setCreateUserName(sysuser.getName());
|
||||
model.setTicketReceiveId(receive.getId());
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.save();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addSaveData(model);
|
||||
|
||||
return SyncTaskService.me.save(synctask);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success(model) : Result.failed("保存失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.cowr.local.ssjygl.ticket.log;
|
||||
|
||||
import com.cowr.common.validator.StartAndEndIntervalValidator;
|
||||
import com.cowr.common.view.ExcelRender;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.local.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.cowr.ssjygl.ticket.log.TicketLogPKValidator;
|
||||
import com.cowr.ssjygl.ticket.log.TicketLogService;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
|
||||
public class TicketLogController extends Controller {
|
||||
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
String order_sn = get("order_sn");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
renderJson(Result.object(TicketLogService.me.find(pp, supermarket_id, state, order_sn, stm, etm, ticket_code)));
|
||||
}
|
||||
|
||||
@Before(StartAndEndIntervalValidator.class)
|
||||
public void export() {
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
String order_sn = get("order_sn");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
|
||||
Workbook wb = TicketLogService.me.export(supermarket_id, state, order_sn, stm, etm, ticket_code);
|
||||
|
||||
render(new ExcelRender("结算单使用日志_" + System.currentTimeMillis() + ".xlsx", wb));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 invoice_log 结算单管理 - 结算单使用记录
|
||||
*/
|
||||
@Before(TicketLogPKValidator.class)
|
||||
public void get() {
|
||||
TicketLog model = getModel(TicketLog.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketLogService.me.findByPk(model));
|
||||
}
|
||||
|
||||
public void invalid() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
Integer supermarket_id = getInt("supermarket_id", 0);
|
||||
String ticket_code = get("ticket_code");
|
||||
String invalid_memo = get("invalid_memo");
|
||||
|
||||
renderJson(TicketLogSyncService.me.invalid(supermarket_id, ticket_code, invalid_memo, tokenuser));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
package com.cowr.local.ssjygl.ticket.log;
|
||||
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.local.ssjygl.base.BaseSyncService;
|
||||
import com.cowr.local.ssjygl.main.CliCacheData;
|
||||
import com.cowr.local.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.cowr.model.SyncTask;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.ssjygl.modifylog.ModifyLogService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class TicketLogSyncService extends BaseSyncService {
|
||||
private static Log log = Log.getLog(TicketLogSyncService.class);
|
||||
public static TicketLogSyncService me = new TicketLogSyncService();
|
||||
|
||||
public Result invalid(int supermarket_id, String ticket_code, String invalid_memo, Sysuser sysuser) {
|
||||
if (supermarket_id != CliCacheData.SUP.getId()) {
|
||||
return Result.failed("砂站信息错误");
|
||||
}
|
||||
|
||||
// 先判断这张结算单有没有被领用
|
||||
TicketReceive receive = TicketReceiveService.me.checkSurplusReceive(supermarket_id, ticket_code);
|
||||
if (receive == null) {
|
||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||
}
|
||||
|
||||
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t \n" +
|
||||
" where t.ticket_code = ? limit 1 ", ticket_code);
|
||||
|
||||
if (ticketLog != null) {
|
||||
// 再判断这张结算单是不是已经被取消了
|
||||
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("结算单已作废");
|
||||
} else {
|
||||
// 还要判断这张结算单已经在订单上使用了
|
||||
return Result.failed("结算单已使用,请使用“取消结算单”功能");
|
||||
}
|
||||
}
|
||||
|
||||
// 然后就可以开始取消了
|
||||
|
||||
ticketLog = new TicketLog();
|
||||
ticketLog.setId(StrKit.getRandomUUID());
|
||||
ticketLog.setInvalidUserId(sysuser.getId());
|
||||
ticketLog.setInvalidUserName(sysuser.getName());
|
||||
ticketLog.setInvalidTime(new Date());
|
||||
ticketLog.setInvalidMemo(invalid_memo);
|
||||
ticketLog.setState(OrderStateEnum.INVALID.getStateid());
|
||||
ticketLog.setTicketReceiveId(receive.getId());
|
||||
ticketLog.setTicketCode(ticket_code);
|
||||
|
||||
receive.setSurplus(receive.getSurplus() - 1);
|
||||
receive.setInvalidCount(receive.getInvalidCount() + 1);
|
||||
|
||||
if (receive.getSurplus() == 0) {
|
||||
// 作废最后一张结算单,当前结算单停再最后一个结算单号码上
|
||||
receive.setCurrentCode(receive.getEndCode());
|
||||
} else {
|
||||
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
|
||||
} else if (ticket_code.equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
|
||||
} else {
|
||||
// 其他情况下不更新 current_code
|
||||
}
|
||||
}
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
TicketLog finalTicketLog = ticketLog;
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = finalTicketLog.save();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addSaveData(finalTicketLog);
|
||||
|
||||
ret = receive.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addUpdateData(receive);
|
||||
|
||||
return SyncTaskService.me.save(synctask)
|
||||
&& ModifyLogService.me.save(finalTicketLog, null, Enums.DataOpType.SAVE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 普票作废理解同步到砂站
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success(ticketLog) : Result.failed(false, "处理失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.cowr.local.ssjygl.ticket.receive;
|
||||
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceivePKValidator;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TicketReceiveController extends Controller {
|
||||
|
||||
/**
|
||||
* 按主键检查对象是否存在
|
||||
* 返回 code = 200
|
||||
* 存在时 data = true
|
||||
* 不存在 data = false
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void checkExistsByPk() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.checkExistsByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查找 invoice_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
String reveiver_user_name = get("reveiver_user_name");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
renderJson(Result.object(TicketReceiveService.me.find(pp, supermarket_id, reveiver_user_name, stm, etm)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 invoice_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void findByPk() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.findByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 invoice_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void get() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.findByPk(model));
|
||||
}
|
||||
|
||||
public void nextTicket() {
|
||||
Integer supermarket_id = getInt("supermarket_id", 0);
|
||||
|
||||
List<Record> receives = TicketReceiveService.me.nextTicketCodes(supermarket_id);
|
||||
if (receives == null || receives.isEmpty()) {
|
||||
renderJson(Result.failed("没有有效的结算单领用记录"));
|
||||
return;
|
||||
}
|
||||
|
||||
renderJson(Result.success(receives));
|
||||
}
|
||||
}
|
||||
|
|
@ -17,6 +17,7 @@ import com.cowr.model.*;
|
|||
import com.cowr.ssjygl.order.ordersale.OrderSaleService;
|
||||
import com.cowr.ssjygl.order.ordertemp.OrderTempService;
|
||||
import com.cowr.ssjygl.prepay.PrepayService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.cowr.ssjygl.transprice.TransPriceService;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
|
|
@ -130,8 +131,10 @@ public class TransportQueryService {
|
|||
// transobj.set("next_invoice_code", InvoiceReceiveService.me.nextInvoiceCode(transport.getSupermarketId())); // 2020-09-21 加了发票代码
|
||||
if (ordercluster.getReqReceipt() == 1) { // 需要打印发票的,才去插领票记录
|
||||
transobj.set("invoice_numbers", InvoiceReceiveService.me.nextInvoiceCodes(transport.getSupermarketId()));
|
||||
transobj.set("ticket_numbers", new ArrayList<>());
|
||||
} else {
|
||||
transobj.set("invoice_numbers", new ArrayList<>());
|
||||
transobj.set("ticket_numbers", TicketReceiveService.me.nextTicketCodes(transport.getSupermarketId()));
|
||||
}
|
||||
transobj.set("req_receipt", ordercluster.getReqReceipt()); // TODO 2020-10-12 如果放开购买,连零散购砂都不做配额了,这里需要修改
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ import com.cowr.service.ssjygl.supermarket.sandfarmdistance.SupermarketSandfarmD
|
|||
import com.cowr.service.ssjygl.supermarket.stock.StockController;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.service.ssjygl.system.sysuser.SysuserController;
|
||||
import com.cowr.service.ssjygl.ticket.invalidverify.TicketInvalidVerifyController;
|
||||
import com.cowr.service.ssjygl.ticket.log.TicketLogController;
|
||||
import com.cowr.service.ssjygl.ticket.receive.TicketReceiveController;
|
||||
import com.cowr.service.ssjygl.transport.TransportQueryController;
|
||||
import com.cowr.service.ssjygl.transportcompany.TransportCompanyController;
|
||||
import com.cowr.service.ssjygl.truck.TruckController;
|
||||
|
|
@ -206,6 +209,11 @@ public class Config extends JFinalConfig {
|
|||
me.add("/invoice/receive", InvoiceReceiveController.class);
|
||||
me.add("/invoice/invalidverify", InvoiceInvalidVerifyController.class);
|
||||
|
||||
// -- 结算单管理
|
||||
me.add("/ticket/log", TicketLogController.class);
|
||||
me.add("/ticket/receive", TicketReceiveController.class);
|
||||
me.add("/ticket/invalidverify", TicketInvalidVerifyController.class);
|
||||
|
||||
// -- 日志
|
||||
me.add("/log/sms", SmsLogController.class);
|
||||
me.add("/log/actioncmd", ActionCmdLogController.class);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
package com.cowr.service.ssjygl.ticket.invalidverify;
|
||||
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.ssjygl.ticket.invalidverify.TicketInvalidVerifyService;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
public class TicketInvalidVerifyController extends Controller {
|
||||
|
||||
/**
|
||||
* 分页查找 ticket_invalid_verify 结算单管理 - 结算单作废申请
|
||||
*/
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
String order_sn = get("order_sn");
|
||||
String create_user_name = get("create_user_name");
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
|
||||
renderJson(Result.object(TicketInvalidVerifyService.me.find(pp, stm, etm, ticket_code, order_sn, create_user_name, supermarket_id, state)));
|
||||
}
|
||||
|
||||
@Before(TicketInvalidVerifyValidator.class)
|
||||
public void verify() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
} else if (!SysuserSyncService.me.isTreasurer(tokenuser.getRole())) { // 财务才能审核
|
||||
renderJson(Result.permissionDenied());
|
||||
return;
|
||||
}
|
||||
|
||||
String id = get("id");
|
||||
int state = getInt("state", 0);
|
||||
String memo = get("memo");
|
||||
|
||||
renderJson(TicketInvalidVerifySyncService.me.verify(id, state, memo, tokenuser));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
package com.cowr.service.ssjygl.ticket.invalidverify;
|
||||
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class TicketInvalidVerifySyncService {
|
||||
private static Log log = Log.getLog(TicketInvalidVerifySyncService.class);
|
||||
public static TicketInvalidVerifySyncService me = new TicketInvalidVerifySyncService();
|
||||
|
||||
public Result verify(String id, int state, String memo, Sysuser user) {
|
||||
if (state != 2 && state != 9) {
|
||||
return Result.failed("state 值错误");
|
||||
}
|
||||
|
||||
TicketInvalidVerify model = TicketInvalidVerify.dao.findById(id);
|
||||
|
||||
if (model == null) {
|
||||
return Result.failed("没有找到申请记录");
|
||||
}
|
||||
|
||||
if (model.getState() == 9) {
|
||||
return Result.failed("申请已作废");
|
||||
}
|
||||
|
||||
if (model.getState() == state) {
|
||||
return Result.failed("状态值没有变化");
|
||||
}
|
||||
|
||||
model.setVerifyUserId(user.getId());
|
||||
model.setVerifyUserName(user.getName());
|
||||
model.setMemo(memo);
|
||||
model.setState(state);
|
||||
|
||||
if (state == OrderStateEnum.INVALID.getStateid()) {
|
||||
return notPass(model);
|
||||
} else if (state == 2) {
|
||||
return pass(model, user);
|
||||
}
|
||||
|
||||
return Result.failed("修改失败");
|
||||
}
|
||||
|
||||
private Result pass(TicketInvalidVerify model, Sysuser sysuser) {
|
||||
SyncTask synctask = new SyncTask();
|
||||
synctask.addUpdateData(model);
|
||||
|
||||
// 先判断这张结算单有没有被领用
|
||||
TicketReceive receive = TicketReceiveService.me.checkReceive(model.getSupermarketId(), model.getTicketCode());
|
||||
if (receive == null) {
|
||||
return Result.failed("没有有效的结算单领用记录");
|
||||
}
|
||||
|
||||
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t \n" +
|
||||
" where t.ticket_code = ? limit 1 ", model.getTicketCode());
|
||||
|
||||
// 又多个地方可以修改 TicketLog 在同意之前,要先确认结算单是否已经取消
|
||||
if (ticketLog != null) {
|
||||
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("结算单已作废");
|
||||
}
|
||||
} else {
|
||||
ticketLog = new TicketLog();
|
||||
|
||||
// 作废结算单时,结算单还没有使用,才需要去处理结算单领用记录里面的当前结算单号码
|
||||
receive.setSurplus(receive.getSurplus() - 1);
|
||||
|
||||
if (receive.getSurplus() == 0) {
|
||||
// 作废最后一张结算单,当前结算单停再最后一个结算单号码上
|
||||
receive.setCurrentCode(receive.getEndCode());
|
||||
} else {
|
||||
if (model.getTicketCode().equals(receive.getStartCode())) { // 作废第一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
|
||||
} else if (model.getTicketCode().equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
|
||||
} else {
|
||||
// 其他情况下不更新 current_code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ticketLog.setInvalidUserId(sysuser.getId());
|
||||
ticketLog.setInvalidUserName(sysuser.getName());
|
||||
ticketLog.setInvalidTime(new Date());
|
||||
ticketLog.setInvalidMemo(model.getInvalidMemo());
|
||||
ticketLog.setState(OrderStateEnum.INVALID.getStateid());
|
||||
ticketLog.setTicketCode(model.getTicketCode());
|
||||
|
||||
receive.setInvalidCount(receive.getInvalidCount() + 1); // 每次作废,作废数量加 1
|
||||
synctask.addUpdateData(receive); // 更新领用记录
|
||||
|
||||
OrderTemp order = null;
|
||||
|
||||
if (StrKit.notBlank(model.getOrderSn())) {
|
||||
order = OrderTemp.dao.findById(model.getOrderSn());
|
||||
|
||||
if (order == null) {
|
||||
return Result.failedstr("按 %s 没有找到订单信息", model.getOrderSn());
|
||||
}
|
||||
|
||||
order.setTicketCode(null);
|
||||
|
||||
synctask.addUpdateData(order); // 关联了订单的,要更新订单信息,清除开票信息
|
||||
}
|
||||
|
||||
TicketLog finalTicketLog = ticketLog;
|
||||
OrderTemp finalOrder = order;
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.update() && receive.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (finalTicketLog.getId() == null) { // 结算单还没有使用,是新增使用日志
|
||||
finalTicketLog.setId(StrKit.getRandomUUID());
|
||||
finalTicketLog.setTicketReceiveId(model.getTicketReceiveId());
|
||||
|
||||
synctask.addSaveData(finalTicketLog);
|
||||
|
||||
ret = finalTicketLog.save();
|
||||
} else { // 结算单已经使用的,有使用日志的,需要更新
|
||||
synctask.addUpdateData(finalTicketLog);
|
||||
|
||||
ret = finalTicketLog.update();
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(finalOrder != null){
|
||||
ret = finalOrder.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return SyncTaskService.me.save(synctask, model.getSupermarketId());
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 普票作废理解同步到砂站
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success(model) : Result.failed(false, "处理失败");
|
||||
}
|
||||
|
||||
private Result notPass(TicketInvalidVerify model) {
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addUpdateData(model);
|
||||
|
||||
return SyncTaskService.me.save(synctask, model.getSupermarketId());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success() : Result.failed("修改失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.cowr.service.ssjygl.ticket.invalidverify;
|
||||
|
||||
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.jfinal.core.Controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Generated by COWR Mon Feb 10 12:11:03 CST 2020
|
||||
* TableName: prepay_detail
|
||||
* Remarks: 预付费客户付费详情
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketInvalidVerifyValidator extends CrudParamValidator {
|
||||
private static List<Integer> chkstate = new ArrayList<Integer>() {{
|
||||
add(2);
|
||||
add(9);
|
||||
}};
|
||||
|
||||
@Override
|
||||
protected void validate(Controller c) {
|
||||
validateString("id", 32, 32, "id", "id 长度 32,必填");
|
||||
validateInIntegerArray("state", chkstate, "state", "state 可选值 2、9");
|
||||
validateString("memo", 0, 255, "memo", "memo 长度 0~255");
|
||||
}
|
||||
|
||||
protected void handleError(Controller c) {
|
||||
c.renderJson(Result.failed(getErrmsg()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
package com.cowr.service.ssjygl.ticket.log;
|
||||
|
||||
import com.cowr.common.validator.StartAndEndIntervalValidator;
|
||||
import com.cowr.common.view.ExcelRender;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.model.TicketLog;
|
||||
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.ssjygl.ticket.log.TicketLogPKValidator;
|
||||
import com.cowr.ssjygl.ticket.log.TicketLogService;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
|
||||
/**
|
||||
* Generated by COWR Thu Aug 13 23:09:29 CST 2020
|
||||
* TableName: ticket_log
|
||||
* Remarks: 结算单管理 - 结算单使用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketLogController extends Controller {
|
||||
|
||||
/**
|
||||
* 按主键检查对象是否存在
|
||||
* 返回 code = 200
|
||||
* 存在时 data = true
|
||||
* 不存在 data = false
|
||||
*/
|
||||
@Before(TicketLogPKValidator.class)
|
||||
public void checkExistsByPk() {
|
||||
TicketLog model = getModel(TicketLog.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketLogService.me.checkExistsByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查找 ticket_log 结算单管理 - 结算单使用记录
|
||||
*/
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
String order_sn = get("order_sn");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
renderJson(Result.object(TicketLogService.me.find(pp, supermarket_id, state, order_sn, stm, etm, ticket_code)));
|
||||
}
|
||||
|
||||
@Before(StartAndEndIntervalValidator.class)
|
||||
public void export() {
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer state = getInt("state");
|
||||
String order_sn = get("order_sn");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
String ticket_code = get("ticket_code");
|
||||
|
||||
Workbook wb = TicketLogService.me.export(supermarket_id, state, order_sn, stm, etm, ticket_code);
|
||||
|
||||
render(new ExcelRender("结算单使用日志_" + System.currentTimeMillis() + ".xlsx", wb));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 ticket_log 结算单管理 - 结算单使用记录
|
||||
*/
|
||||
@Before(TicketLogPKValidator.class)
|
||||
public void findByPk() {
|
||||
TicketLog model = getModel(TicketLog.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketLogService.me.findByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 ticket_log 结算单管理 - 结算单使用记录
|
||||
*/
|
||||
@Before(TicketLogPKValidator.class)
|
||||
public void get() {
|
||||
TicketLog model = getModel(TicketLog.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketLogService.me.findByPk(model));
|
||||
}
|
||||
|
||||
public void invalid() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
} else if (!SysuserSyncService.me.isTreasurer(tokenuser.getRole())) { // 财务才能作废结算单
|
||||
renderJson(Result.permissionDenied());
|
||||
return;
|
||||
}
|
||||
|
||||
Integer supermarket_id = getInt("supermarket_id", 0);
|
||||
String ticket_code = get("ticket_code");
|
||||
String invalid_memo = get("invalid_memo");
|
||||
|
||||
renderJson(TicketLogSyncService.me.invalid(supermarket_id, ticket_code, invalid_memo, tokenuser));
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
} else if (!SysuserSyncService.me.isTreasurer(tokenuser.getRole())) { // 财务才能作废结算单
|
||||
renderJson(Result.permissionDenied());
|
||||
return;
|
||||
}
|
||||
|
||||
String id = get("id");
|
||||
String invalid_memo = get("invalid_memo");
|
||||
|
||||
renderJson(TicketLogSyncService.me.cancel(id, invalid_memo, tokenuser));
|
||||
}
|
||||
|
||||
public void cancelByCode() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
} else if (!SysuserSyncService.me.isTreasurer(tokenuser.getRole())) { // 财务才能作废结算单
|
||||
renderJson(Result.permissionDenied());
|
||||
return;
|
||||
}
|
||||
|
||||
String ticket_code = get("ticket_code");
|
||||
String invalid_memo = get("invalid_memo");
|
||||
|
||||
renderJson(TicketLogSyncService.me.cancelByCode(ticket_code, invalid_memo, tokenuser));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,263 @@
|
|||
package com.cowr.service.ssjygl.ticket.log;
|
||||
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.enums.OrderStateEnum;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.service.ssjygl.base.BaseSyncService;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.ssjygl.modifylog.ModifyLogService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
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.Record;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TicketLogSyncService extends BaseSyncService {
|
||||
private static Log log = Log.getLog(TicketLogSyncService.class);
|
||||
public static TicketLogSyncService me = new TicketLogSyncService();
|
||||
|
||||
/**
|
||||
* 作废结算单,未关联订单的(损毁等,不是正常开票使用的结算单)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Result invalid(int supermarket_id, String ticket_code, String invalid_memo, Sysuser sysuser) {
|
||||
Supermarket supermarket = Supermarket.dao.findById(supermarket_id);
|
||||
|
||||
if (supermarket == null) {
|
||||
return Result.failed("未找到砂站信息");
|
||||
}
|
||||
|
||||
// 先判断这张结算单有没有被领用
|
||||
TicketReceive receive = TicketReceiveService.me.checkSurplusReceive(supermarket_id, ticket_code);
|
||||
if (receive == null) {
|
||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||
}
|
||||
|
||||
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t \n" +
|
||||
" where t.ticket_code = ? limit 1 ", ticket_code);
|
||||
|
||||
if (ticketLog != null) {
|
||||
// 再判断这张结算单是不是已经被取消了
|
||||
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("结算单已作废");
|
||||
} else {
|
||||
// 还要判断这张结算单已经在订单上使用了
|
||||
return Result.failed("结算单已使用,请使用“取消结算单”功能");
|
||||
}
|
||||
}
|
||||
|
||||
// 然后就可以开始取消了
|
||||
|
||||
ticketLog = new TicketLog();
|
||||
ticketLog.setId(StrKit.getRandomUUID());
|
||||
ticketLog.setInvalidUserId(sysuser.getId());
|
||||
ticketLog.setInvalidUserName(sysuser.getName());
|
||||
ticketLog.setInvalidTime(new Date());
|
||||
ticketLog.setInvalidMemo(invalid_memo);
|
||||
ticketLog.setState(OrderStateEnum.INVALID.getStateid());
|
||||
ticketLog.setTicketReceiveId(receive.getId());
|
||||
ticketLog.setTicketCode(ticket_code);
|
||||
|
||||
receive.setSurplus(receive.getSurplus() - 1);
|
||||
receive.setInvalidCount(receive.getInvalidCount() + 1);
|
||||
|
||||
if (receive.getSurplus() < 0) {
|
||||
return Result.failed("作废失败,减少剩余量时发生错误");
|
||||
} else if (receive.getSurplus() == 0) {
|
||||
// 作废最后一张结算单,当前结算单停再最后一个结算单号码上
|
||||
receive.setCurrentCode(receive.getEndCode());
|
||||
} else {
|
||||
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
|
||||
} else if (ticket_code.equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
|
||||
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
|
||||
} else {
|
||||
// 其他情况下不更新 current_code
|
||||
}
|
||||
}
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
TicketLog finalTicketLog = ticketLog;
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = finalTicketLog.save();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addSaveData(finalTicketLog);
|
||||
|
||||
ret = receive.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
synctask.addUpdateData(receive);
|
||||
|
||||
return SyncTaskService.me.save(synctask, supermarket_id)
|
||||
&& ModifyLogService.me.save(finalTicketLog, null, Enums.DataOpType.SAVE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 普票作废理解同步到砂站
|
||||
if (ret) {
|
||||
SyncTaskService.me.send(synctask);
|
||||
}
|
||||
|
||||
return ret ? Result.success(ticketLog) : Result.failed(false, "处理失败");
|
||||
}
|
||||
|
||||
public Result cancel(String id, String invalid_memo, Sysuser sysuser) {
|
||||
TicketLog ticketLog = TicketLog.dao.findById(id);
|
||||
|
||||
if (ticketLog == null) {
|
||||
return Result.failed("未找到结算单记录");
|
||||
}
|
||||
|
||||
return cancelType2(ticketLog, invalid_memo, sysuser);
|
||||
}
|
||||
|
||||
public Result cancelByCode(String ticket_code, String invalid_memo, Sysuser sysuser) {
|
||||
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t where ticket_code = ? limit 1 ", ticket_code);
|
||||
|
||||
if (ticketLog == null) {
|
||||
return Result.failed("未找到结算单记录");
|
||||
}
|
||||
|
||||
return cancelType2(ticketLog, invalid_memo, sysuser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消专票
|
||||
* 2020-09-29 一个专票可以关联多个订单,取消专票需要将关联的订单都取消结算单信息
|
||||
*
|
||||
* @param ticketLog
|
||||
* @param invalid_memo
|
||||
* @param sysuser
|
||||
* @return
|
||||
*/
|
||||
public Result cancelType2(TicketLog ticketLog, String invalid_memo, Sysuser sysuser) {
|
||||
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
|
||||
return Result.failed("记录已作废");
|
||||
}
|
||||
|
||||
List<OrderTemp> ordlist = OrderTemp.dao.find("select * from order_temp t \n" +
|
||||
" where t.state = ? \n" +
|
||||
" and t.ticket_code = ? ",
|
||||
OrderStateEnum.RECEIVED.getStateid(),
|
||||
ticketLog.getTicketCode()
|
||||
);
|
||||
|
||||
if (ordlist.isEmpty()) {
|
||||
return Result.failed("关联订单信息错误");
|
||||
}
|
||||
|
||||
List<TicketLog> loglist = TicketLog.dao.find("select * from ticket_log t \n" +
|
||||
" where t.state = ? \n" +
|
||||
" and t.ticket_code = ? ",
|
||||
OrderStateEnum.RECEIVED.getStateid(),
|
||||
ticketLog.getTicketCode()
|
||||
);
|
||||
|
||||
if (ordlist.isEmpty()) {
|
||||
return Result.failed("结算单使用信息错误");
|
||||
}
|
||||
|
||||
Map<Integer, SyncTask> map = new HashMap<>();
|
||||
Map<String, OrderTemp> ordmap = new HashMap<>();
|
||||
Date now = new Date();
|
||||
Record logrecord = new Record();
|
||||
|
||||
logrecord.set("state", OrderStateEnum.INVALID.getStateid());
|
||||
logrecord.set("ticket_code", ticketLog.getTicketCode());
|
||||
|
||||
for (OrderTemp o : ordlist) {
|
||||
o.setTicketCode(null);
|
||||
|
||||
int supermarket_id = o.getSupermarketId();
|
||||
|
||||
if (!map.containsKey(supermarket_id)) {
|
||||
map.put(supermarket_id, new SyncTask());
|
||||
}
|
||||
|
||||
map.get(supermarket_id).addUpdateData(o);
|
||||
ordmap.put(o.getSn(), o);
|
||||
}
|
||||
|
||||
for (TicketLog o : loglist) {
|
||||
o.setInvalidMemo(invalid_memo);
|
||||
o.setInvalidTime(now);
|
||||
o.setInvalidUserId(sysuser.getId());
|
||||
o.setInvalidUserName(sysuser.getName());
|
||||
o.setState(OrderStateEnum.INVALID.getStateid());
|
||||
|
||||
if (!ordmap.containsKey(o.getOrderSn())) {
|
||||
return Result.failedstr("结算单[%s]未找到订单信息", o.getTicketCode());
|
||||
}
|
||||
|
||||
int supermarket_id = ordmap.get(o.getOrderSn()).getSupermarketId();
|
||||
|
||||
if (!map.containsKey(supermarket_id)) {
|
||||
map.put(supermarket_id, new SyncTask());
|
||||
}
|
||||
|
||||
map.get(supermarket_id).addUpdateData(o);
|
||||
}
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
int[] editret = Db.batchUpdate(ordlist, ordlist.size());
|
||||
|
||||
for (int i : editret) {
|
||||
// 必须是每条 sql 修改一条记录
|
||||
if (i != 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
editret = Db.batchUpdate(loglist, loglist.size());
|
||||
|
||||
for (int i : editret) {
|
||||
// 必须是每条 sql 修改一条记录
|
||||
if (i != 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 将订单同步到不同的砂站
|
||||
for (Map.Entry<Integer, SyncTask> entry : map.entrySet()) {
|
||||
if (!SyncTaskService.me.save(entry.getValue(), entry.getKey())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return ModifyLogService.me.save(TicketLog.tablename, "id", logrecord.toJson(), Enums.DataOpType.SAVE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return ret ? Result.success() : Result.failed("修改失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
package com.cowr.service.ssjygl.ticket.receive;
|
||||
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.service.ssjygl.system.sysuser.SysuserSyncService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceivePKValidator;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveService;
|
||||
import com.cowr.ssjygl.ticket.receive.TicketReceiveValidator;
|
||||
import com.jfinal.aop.Before;
|
||||
import com.jfinal.core.Controller;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Generated by COWR Thu Aug 13 23:09:29 CST 2020
|
||||
* TableName: ticket_receive
|
||||
* Remarks: 结算单管理 - 领用记录
|
||||
* PrimaryKey: id
|
||||
*/
|
||||
public class TicketReceiveController extends Controller {
|
||||
|
||||
/**
|
||||
* 按主键检查对象是否存在
|
||||
* 返回 code = 200
|
||||
* 存在时 data = true
|
||||
* 不存在 data = false
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void checkExistsByPk() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.checkExistsByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceiveValidator.class)
|
||||
public void save() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveSyncService.me.save(model, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void del() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveSyncService.me.delete(model, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void restore() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveSyncService.me.restore(model, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceiveValidator.class)
|
||||
public void edit() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
renderJson(Result.noauth());
|
||||
return;
|
||||
}
|
||||
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveSyncService.me.update(model, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查找 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
String reveiver_user_name = get("reveiver_user_name");
|
||||
String stm = get("stm");
|
||||
String etm = get("etm");
|
||||
renderJson(Result.object(TicketReceiveService.me.find(pp, supermarket_id, reveiver_user_name, stm, etm)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void findByPk() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.findByPk(model));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按主键查找单个对象 ticket_receive 结算单管理 - 领用记录
|
||||
*/
|
||||
@Before(TicketReceivePKValidator.class)
|
||||
public void get() {
|
||||
TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(TicketReceiveService.me.findByPk(model));
|
||||
}
|
||||
|
||||
public void nextTicket() {
|
||||
Integer supermarket_id = getInt("supermarket_id", 0);
|
||||
|
||||
List<Record> receives = TicketReceiveService.me.nextTicketCodes(supermarket_id);
|
||||
if (receives == null || receives.isEmpty()) {
|
||||
renderJson(Result.failed("没有有效的结算单领用记录"));
|
||||
return;
|
||||
}
|
||||
|
||||
renderJson(Result.success(receives));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package com.cowr.service.ssjygl.ticket.receive;
|
||||
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.TicketReceive;
|
||||
import com.cowr.model.Supermarket;
|
||||
import com.cowr.model.SyncTask;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.service.ssjygl.base.BaseSyncService;
|
||||
import com.cowr.service.ssjygl.main.SvrCacheData;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.ssjygl.modifylog.ModifyLogService;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TicketReceiveSyncService extends BaseSyncService {
|
||||
private static Log log = Log.getLog(TicketReceiveSyncService.class);
|
||||
public static TicketReceiveSyncService me = new TicketReceiveSyncService();
|
||||
|
||||
public Result save(TicketReceive receive, Sysuser user) {
|
||||
Sysuser receive_user = Sysuser.dao.findById(receive.getReceiveUserId());
|
||||
|
||||
if (receive_user == null) {
|
||||
return Result.failed("未找到关联用户信息");
|
||||
}
|
||||
|
||||
receive.setReceiveUserName(receive_user.getName());
|
||||
|
||||
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(receive.getSupermarketId());
|
||||
if (supermarket == null) {
|
||||
return Result.failed("砂站信息无效");
|
||||
}
|
||||
|
||||
if (supermarket.getIsdeploy() == 0) {
|
||||
return Result.failedstr("[%s]砂站还未部署", supermarket.getName());
|
||||
}
|
||||
|
||||
try {
|
||||
// 十位或者更长的结算单号码要转 long,否则可能超过 Integer.MAX_VALUE 2147483647
|
||||
Long start = Long.parseLong(receive.getStartCode());
|
||||
Long end = Long.parseLong(receive.getEndCode());
|
||||
|
||||
List<TicketReceive> chklist = TicketReceive.dao.find("select * from ticket_receive t\n" +
|
||||
" where (( t.start_code <= ? and t.end_code >= ? )\n" +
|
||||
" or ( t.start_code <= ? and t.end_code >= ? ))", start, start, end, end);
|
||||
|
||||
if (!chklist.isEmpty()) {
|
||||
return Result.failed("结算单段和已领用的记录冲突");
|
||||
}
|
||||
|
||||
receive.setSurplus((int) (end - start) + 1);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
||||
return Result.failed("数据检查错误");
|
||||
}
|
||||
|
||||
try {
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
return receive.save()
|
||||
&& SyncTaskService.me.save(new SyncTask().addSaveData(receive), receive.getSupermarketId()) // 下发到指定的砂站
|
||||
&& ModifyLogService.me.save(receive, null, Enums.DataOpType.SAVE.getId(), user);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return ret ? Result.object(receive) : 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue