diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceLog.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceLog.java index 21027dc..2d4ba9e 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceLog.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceLog.java @@ -5,7 +5,7 @@ import com.jfinal.plugin.activerecord.IBean; import com.alibaba.fastjson.annotation.JSONField; /** - * Generated by COWR Fri Aug 14 11:13:17 CST 2020 + * Generated by COWR Mon Sep 21 13:04:24 CST 2020 * TableName: invoice_log * Remarks: 发票管理 - 发票使用记录 * PrimaryKey: id @@ -350,5 +350,49 @@ public abstract class BaseInvoiceLog> extends BaseMo return getInt("type"); } + /** + * name: invoice_type + * type: INT(10) + * isNullable: NO + * isPrimaryKey: NO + * defaultValue: 1 + * @param invoiceType 1.普票,2.专票 + */ + @JSONField(name="invoice_type") + public void setInvoiceType(Integer invoiceType) { + set("invoice_type", invoiceType); + } + + + /** + * @return invoice_type 1.普票,2.专票 + */ + @JSONField(name="invoice_type") + public Integer getInvoiceType() { + return getInt("invoice_type"); + } + + /** + * name: invoice_number + * type: VARCHAR(20) + * isNullable: NO + * 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"); + } + } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceReceive.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceReceive.java index 246ecee..41ec349 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceReceive.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseInvoiceReceive.java @@ -5,7 +5,7 @@ import com.jfinal.plugin.activerecord.IBean; import com.alibaba.fastjson.annotation.JSONField; /** - * Generated by COWR Sun Sep 06 16:28:55 CST 2020 + * Generated by COWR Mon Sep 21 13:04:24 CST 2020 * TableName: invoice_receive * Remarks: 发票管理 - 领用记录 * PrimaryKey: id @@ -262,5 +262,27 @@ public abstract class BaseInvoiceReceive> extend return getInt("invoice_type"); } + /** + * name: invoice_number + * type: VARCHAR(20) + * isNullable: NO + * 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"); + } + } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseOrderTemp.java b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseOrderTemp.java index c3c2050..fc0f938 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseOrderTemp.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/model/base/BaseOrderTemp.java @@ -5,7 +5,7 @@ import com.jfinal.plugin.activerecord.IBean; import com.alibaba.fastjson.annotation.JSONField; /** - * Generated by COWR Mon Aug 17 11:15:31 CST 2020 + * Generated by COWR Mon Sep 21 22:03:28 CST 2020 * TableName: order_temp * Remarks: 订单相关 - 外销单 * PrimaryKey: sn @@ -92,7 +92,7 @@ public abstract class BaseOrderTemp> extends BaseMode * isNullable: NO * isPrimaryKey: NO * defaultValue: - * @param supermarketId 砂站id + * @param supermarketId 超市id */ @JSONField(name="supermarket_id") public void setSupermarketId(Integer supermarketId) { @@ -101,7 +101,7 @@ public abstract class BaseOrderTemp> extends BaseMode /** - * @return supermarket_id 砂站id + * @return supermarket_id 超市id */ @JSONField(name="supermarket_id") public Integer getSupermarketId() { @@ -1046,5 +1046,27 @@ public abstract class BaseOrderTemp> extends BaseMode return getStr("invoice_code"); } + /** + * 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"); + } + } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java index acbb16d..5dfbf8e 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java @@ -21,17 +21,17 @@ import java.util.List; public class InvoiceLogService extends BaseService { public static final InvoiceLogService me = new InvoiceLogService(); - public Page find(PageParam pp, Integer supermarket_id, Integer state, String order_sn, String stm, String etm, String code, Integer invoice_type) { + public Page find(PageParam pp, String invoice_number, Integer supermarket_id, Integer state, String order_sn, String stm, String etm, String code, Integer invoice_type) { String selectsql = "select t.*, r.supermarket_id, s.name supermarket_name, \n" + - " case when t.type = 1 then s.weight when t.type = 3 then p.weight end weight, \n" + - " case when t.type = 1 then s.total_price when t.type = 3 then p.total_price end total_price, \n" + - " case when t.type = 1 then s.create_time when t.type = 3 then p.create_time end create_time, \n" + - " case when t.type = 1 then s.settlement_user_name when t.type = 3 then p.settlement_user_name end settlement_user_name, \n" + - " case when t.type = 1 then s.customer_name when t.type = 3 then p.customer_name end customer_name "; + " 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 invoice_log t \n" + " left join invoice_receive r on r.id = t.invoice_receive_id \n" + " left join supermarket s on s.id = r.supermarket_id \n" + - " left join order_sale s on s.sn = t.order_sn \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 \n"; List paraList = new ArrayList<>(); @@ -51,6 +51,11 @@ public class InvoiceLogService extends BaseService { paraList.add("%" + order_sn + "%"); } + if (StrKit.notBlank(invoice_number)) { + fromsql += " and t.invoice_number like ? \n"; + paraList.add("%" + invoice_number + "%"); + } + if (StrKit.notBlank(stm)) { fromsql += " and t.create_time >= ? \n"; paraList.add(stm); diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveService.java index 1abff3b..b2d7ef3 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveService.java @@ -3,7 +3,6 @@ package com.cowr.ssjygl.invoice.receive; import com.cowr.common.Const; import com.cowr.common.base.BaseService; import com.cowr.common.view.PageParam; -import com.cowr.common.view.Result; import com.cowr.model.InvoiceReceive; import com.jfinal.kit.StrKit; import com.jfinal.log.Log; @@ -24,20 +23,46 @@ public class InvoiceReceiveService extends BaseService { private static Log log = Log.getLog(InvoiceReceiveService.class); public static final InvoiceReceiveService me = new InvoiceReceiveService(); - public InvoiceReceive foremostReceive(int supermarket_id) { - String sql = "select * from invoice_receive t\n" + + /** + * 检查发票代码、发票号码是否是领用过的 + * @param supermarket_id + * @param invoice_number + * @param invoice_code + * @return + */ + public InvoiceReceive checkReceive(int supermarket_id, String invoice_number, String invoice_code) { + if(!StrKit.notBlank(invoice_number, invoice_code)){ + return null; + } + + Long code = Long.parseLong(invoice_code); + String sql = "select cast(t.end_code as unsigned integer) - t.surplus, t.* from invoice_receive t\n" + " where t.supermarket_id = ? \n" + - " and t.surplus > 0\n" + - " order by t.start_code asc\n" + + " and t.invoice_number = ? \n" + + " and t.end_code >= ? \n" + + " and cast(t.end_code as unsigned integer) - t.surplus < ? \n" + " limit 1"; - InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id); + InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code); + + return receive; + } + + public InvoiceReceive foremostReceive(int supermarket_id, String invoice_number) { + String sql = "select * from invoice_receive t\n" + + " where t.supermarket_id = ? \n" + + " and t.invoice_number = ? \n" + + " and t.surplus > 0\n" + + " order by cast(t.start_code as unsigned integer) asc\n" + + " limit 1"; + + InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number); return receive; } - public String nextInvoice(InvoiceReceive receive) { + public String nextInvoiceCode(InvoiceReceive receive) { if (receive == null) { log.debug("没有有效的发票领用记录"); return null; @@ -62,13 +87,26 @@ public class InvoiceReceiveService extends BaseService { * @param supermarket_id * @return */ - public String nextInvoice(int supermarket_id) { - InvoiceReceive receive = foremostReceive(supermarket_id); + public List nextInvoiceCode(int supermarket_id) { + String sql = "select * from invoice_receive t\n" + + " where t.supermarket_id = ? \n" + + " and t.surplus > 0\n" + + " order by cast(t.start_code as unsigned integer) asc"; - return nextInvoice(receive); + List receives = InvoiceReceive.dao.find(sql, supermarket_id); + List out = new ArrayList<>(); + + for (InvoiceReceive receive : receives) { + Record record = receive.toRecord(); + record.set("next_invoice_code", nextInvoiceCode(receive)); + + out.add(record); + } + + return out; } - public Page find(PageParam pp, Integer supermarket_id, String reveiver_user_name, String stm, String etm, Integer invoice_type) { + public Page find(PageParam pp, String invoice_number, Integer supermarket_id, String reveiver_user_name, String stm, String etm, Integer invoice_type) { String selectsql = "select t.*, s.name supermarket_name, s.name2 supermarket_name2 "; String fromsql = "from invoice_receive t \n" + " left join supermarket s on s.id = t.supermarket_id" + @@ -80,17 +118,22 @@ public class InvoiceReceiveService extends BaseService { paraList.add(supermarket_id); } - if(StrKit.notBlank(reveiver_user_name)){ + if (StrKit.notBlank(reveiver_user_name)) { fromsql += " and t.receive_user_name like ? \n"; paraList.add("%" + reveiver_user_name + "%"); } - if(StrKit.notBlank(stm)){ + if (StrKit.notBlank(invoice_number)) { + fromsql += " and t.invoice_number like ? \n"; + paraList.add("%" + invoice_number + "%"); + } + + if (StrKit.notBlank(stm)) { fromsql += " and t.create_time >= ? \n"; paraList.add(stm); } - if(StrKit.notBlank(etm)){ + if (StrKit.notBlank(etm)) { fromsql += " and t.create_time <= ? \n"; paraList.add(etm); } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveValidator.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveValidator.java index 75b0f70..dd530eb 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveValidator.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/receive/InvoiceReceiveValidator.java @@ -21,6 +21,7 @@ public class InvoiceReceiveValidator extends CrudParamValidator { validateString("id", 1, 32, "id", "id 长度 1~32"); } + validateString("invoice_number", 1, 20, "invoice_number", "invoice_number 长度 1~20"); 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"); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java index 7722bd4..c944f21 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java @@ -37,12 +37,13 @@ public class InvoiceLogController extends Controller { PageParam pp = getBean(PageParam.class, "", true); Integer supermarket_id = getInt("supermarket_id"); Integer state = getInt("state"); + String invoice_number = get("invoice_number"); String order_sn = get("order_sn"); String stm = get("stm"); String etm = get("etm"); String code = get("code"); Integer invoice_type = getInt("invoice_type"); - renderJson(Result.object(InvoiceLogService.me.find(pp, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); + renderJson(Result.object(InvoiceLogService.me.find(pp, invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); } /** @@ -85,10 +86,11 @@ public class InvoiceLogController extends Controller { return; } - String code = get("code"); - String invalid_memo = get("invalid_memo"); + String code = get("code"); + String invoice_number = get("invoice_number"); + String invalid_memo = get("invalid_memo"); - renderJson(InvoiceLogSyncService.me.cancelByCode(code, invalid_memo, tokenuser)); + renderJson(InvoiceLogSyncService.me.cancelByCode(invoice_number, code, invalid_memo, tokenuser)); } public void invalid() { @@ -100,9 +102,10 @@ public class InvoiceLogController extends Controller { } Integer supermarket_id = getInt("supermarket_id", 0); + String invoice_number = get("invoice_number"); String code = get("code"); String invalid_memo = get("invalid_memo"); - renderJson(InvoiceLogSyncService.me.invalid(supermarket_id, code, invalid_memo, tokenuser)); + renderJson(InvoiceLogSyncService.me.invalid(supermarket_id, invoice_number, code, invalid_memo, tokenuser)); } } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogSyncService.java index 5bd93b7..4d76b54 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogSyncService.java @@ -26,7 +26,7 @@ public class InvoiceLogSyncService extends BaseSyncService { * 作废发票,未关联订单的(损毁等,不是正常开票使用的发票) * @return */ - public Result invalid(int supermarket_id, String code, String invalid_memo, Sysuser sysuser){ + public Result invalid(int supermarket_id, String invoice_number, String code, String invalid_memo, Sysuser sysuser){ Supermarket supermarket = Supermarket.dao.findById(supermarket_id); if(supermarket == null){ @@ -39,12 +39,12 @@ public class InvoiceLogSyncService extends BaseSyncService { return Result.failed("发票已使用,请使用“取消发票”功能"); } - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(supermarket_id); + InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(supermarket_id, invoice_number); if (receive == null) { return Result.failed("没有有效的发票领用记录"); } - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); + String next_invoice_code = InvoiceReceiveService.me.nextInvoiceCode(receive); if (next_invoice_code == null) { return Result.failed("没有可用发票"); } @@ -62,6 +62,7 @@ public class InvoiceLogSyncService extends BaseSyncService { invoiceLog.setState(OrderStateEnum.INVALID.getStateid()); invoiceLog.setInvoiceReceiveId(receive.getId()); invoiceLog.setCode(code); + invoiceLog.setInvoiceNumber(invoice_number); InvoiceLog finalInvoiceLog = invoiceLog; boolean ret = Db.tx(new IAtom() { @@ -101,8 +102,8 @@ public class InvoiceLogSyncService extends BaseSyncService { return ret ? Result.success(invoiceLog) : Result.failed(false, "处理失败"); } - public Result cancelByCode(String code, String invalid_memo, Sysuser sysuser){ - InvoiceLog invoiceLog = InvoiceLog.dao.findFirst("select * from invoice_log t where code = ? limit 1 ", code); + public Result cancelByCode(String invoice_number, String code, String invalid_memo, Sysuser sysuser){ + InvoiceLog invoiceLog = InvoiceLog.dao.findFirst("select * from invoice_log t where invoice_number = ? and code = ? limit 1 ", invoice_number, code); if (invoiceLog == null) { return Result.failed("未找到发票记录"); @@ -151,6 +152,7 @@ public class InvoiceLogSyncService extends BaseSyncService { public boolean run() { try{ order.set("invoice_code", null); + order.set("invoice_number", null); boolean ret = order.update(); if(!ret){ diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/receive/InvoiceReceiveController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/receive/InvoiceReceiveController.java index c984670..a811a0b 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/receive/InvoiceReceiveController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/receive/InvoiceReceiveController.java @@ -7,6 +7,9 @@ import com.cowr.ssjygl.invoice.receive.InvoiceReceivePKValidator; import com.cowr.ssjygl.invoice.receive.InvoiceReceiveService; 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 @@ -35,10 +38,11 @@ public class InvoiceReceiveController extends Controller { PageParam pp = getBean(PageParam.class, "", true); Integer supermarket_id = getInt("supermarket_id"); String reveiver_user_name = get("reveiver_user_name"); + String invoice_number = get("invoice_number"); String stm = get("stm"); String etm = get("etm"); - Integer invoice_type = getInt("invoice_type"); - renderJson(Result.object(InvoiceReceiveService.me.find(pp, supermarket_id, reveiver_user_name, stm, etm, invoice_type))); + Integer invoice_type = getInt("invoice_type"); + renderJson(Result.object(InvoiceReceiveService.me.find(pp, invoice_number, supermarket_id, reveiver_user_name, stm, etm, invoice_type))); } /** @@ -62,18 +66,12 @@ public class InvoiceReceiveController extends Controller { public void nextInvoice() { Integer supermarket_id = getInt("supermarket_id", 0); - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(supermarket_id); - if (receive == null) { + List receives = InvoiceReceiveService.me.nextInvoiceCode(supermarket_id); + if (receives == null || receives.isEmpty()) { renderJson(Result.failed("没有有效的发票领用记录")); return; } - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - renderJson(Result.failed("没有可用发票")); - return; - } - - renderJson(Result.success(next_invoice_code)); + renderJson(Result.success(receives)); } } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java index 4f8e9fb..1cf1d73 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java @@ -51,15 +51,17 @@ public class OrderTempController extends BaseController { return; } - String uuid = get("uuid"); - String transport_id = get("transport_id"); - Integer product_id = getInt("product_id"); - Integer pay_type = getInt("pay_type"); - String memo = get("memo"); - String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); - int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 + String uuid = get("uuid"); + String transport_id = get("transport_id"); + Integer product_id = getInt("product_id"); + String invoice_number = get("invoice_number"); + String invoice_code = get("invoice_code"); + Integer pay_type = getInt("pay_type"); + String memo = get("memo"); + String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); + int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 - renderJson(OrderTempSyncService.me.pay(uuid, transport_id, product_id, pay_type, memo, printer, tokenuser, req_receipt)); + renderJson(OrderTempSyncService.me.pay(uuid, transport_id, product_id, invoice_number, invoice_code, pay_type, memo, printer, tokenuser, req_receipt)); } @@ -75,11 +77,13 @@ public class OrderTempController extends BaseController { String uuid = get("uuid"); String transport_id = get("transport_id"); Integer ordercluster_id = getInt("ordercluster_id"); + String invoice_number = get("invoice_number"); + String invoice_code = get("invoice_code"); String memo = get("memo"); String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 - renderJson(OrderTempSyncService.me.payordercluster(uuid, transport_id, ordercluster_id, memo, printer, tokenuser, req_receipt)); + renderJson(OrderTempSyncService.me.payordercluster(uuid, transport_id, ordercluster_id, invoice_number, invoice_code, memo, printer, tokenuser, req_receipt)); } @Before(OrderTempPrepayValidator.class) @@ -94,12 +98,14 @@ public class OrderTempController extends BaseController { String uuid = get("uuid"); String transport_id = get("transport_id"); Integer ordercluster_id = getInt("ordercluster_id"); + String invoice_number = get("invoice_number"); + String invoice_code = get("invoice_code"); Integer product_id = getInt("product_id"); String memo = get("memo"); String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 - renderJson(OrderTempSyncService.me.prepay(uuid, transport_id, ordercluster_id, product_id, memo, printer, tokenuser, req_receipt)); + renderJson(OrderTempSyncService.me.prepay(uuid, transport_id, ordercluster_id, invoice_number, invoice_code, product_id, memo, printer, tokenuser, req_receipt)); } /** @@ -130,13 +136,15 @@ public class OrderTempController extends BaseController { return; } - String sn = get("sn"); - String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); + String sn = get("sn"); + String invoice_number = get("invoice_number"); + String invoice_code = get("invoice_code"); + String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); if (Integer.parseInt(sn.substring(10, 12)) != OrderTypeEnum.TEMP.getTypeid()) { renderJson(Result.failed("sn 不能为 null")); } else { - renderJson(OrderTempSyncService.me.invoice(sn, printer, tokenuser)); + renderJson(OrderTempSyncService.me.invoice(sn, invoice_number, invoice_code, printer, tokenuser)); } } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java index 1158795..9145dfc 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java @@ -25,7 +25,6 @@ import com.jfinal.plugin.activerecord.IAtom; import com.jfinal.plugin.activerecord.Record; import java.math.BigDecimal; -import java.sql.SQLException; import java.util.Date; public class OrderTempSyncService { @@ -36,6 +35,8 @@ public class OrderTempSyncService { String uuid, String transport_id, Integer product_id, + String invoice_number, + String invoice_code, Integer pay_type, String memo, String printerId, @@ -52,14 +53,9 @@ public class OrderTempSyncService { return Result.failed("进出场记录已完结或者已作废,不能使用"); } - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(transport.getSupermarketId()); + InvoiceReceive receive = InvoiceReceiveService.me.checkReceive(transport.getSupermarketId(), invoice_number, invoice_code); if (receive == null) { - return Result.failed("没有有效的发票领用记录"); - } - - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - return Result.failed("没有可用发票"); + return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); } Product product = Product.dao.findById(product_id); @@ -102,7 +98,8 @@ public class OrderTempSyncService { BigDecimal net_weight = transport.getSecondWeight().subtract(transport.getFirstWeight()); // 销售的用第二次减第一次 // if (req_receipt == 1) { // 需要同时开具发票 - order.setInvoiceCode(next_invoice_code); + order.setInvoiceCode(invoice_code); + order.setInvoiceNumber(invoice_number); // } order.setTransportId(transport.getId()); @@ -138,7 +135,6 @@ public class OrderTempSyncService { transport.setState(order.getState()); // 使用 order 的 state transport.setType(OrderTypeEnum.TEMP.getTypeid()); - String finalNext_invoice_code = next_invoice_code; boolean ret = Db.tx(new IAtom() { @Override public boolean run() { @@ -168,19 +164,20 @@ public class OrderTempSyncService { // if (req_receipt == 1) { // 需要同时开具发票 // 这里的 finalReceive 在前面肯定验证过了 receive.setSurplus(receive.getSurplus() - 1); - receive.setCurrentCode(finalNext_invoice_code); + receive.setCurrentCode(invoice_code); ret = receive.update(); if (!ret) { - log.error("发票领用信息更新失败", finalNext_invoice_code); + log.error("发票领用信息更新失败", invoice_code); return false; } InvoiceLog invoiceLog = new InvoiceLog(); invoiceLog.setId(StrKit.getRandomUUID()); invoiceLog.setInvoiceReceiveId(receive.getId()); - invoiceLog.setCode(finalNext_invoice_code); + invoiceLog.setCode(invoice_code); + invoiceLog.setInvoiceNumber(invoice_number); invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); invoiceLog.setSettlementTime(now); invoiceLog.setSettlementUserId(order.getSettlementUserId()); @@ -221,6 +218,8 @@ public class OrderTempSyncService { String uuid, String transport_id, Integer ordercluster_id, + String invoice_number, + String invoice_code, String memo, String printerId, Sysuser sysuser, @@ -236,14 +235,9 @@ public class OrderTempSyncService { return Result.failed("进出场记录已完结或者已作废,不能使用"); } - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(transport.getSupermarketId()); + InvoiceReceive receive = InvoiceReceiveService.me.checkReceive(transport.getSupermarketId(), invoice_number, invoice_code); if (receive == null) { - return Result.failed("没有有效的发票领用记录"); - } - - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - return Result.failed("没有可用发票"); + return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); } Ordercluster ordercluster = Ordercluster.dao.findById(ordercluster_id); @@ -309,7 +303,8 @@ public class OrderTempSyncService { } // if (req_receipt == 1) { // 需要同时开具发票 - order.setInvoiceCode(next_invoice_code); + order.setInvoiceCode(invoice_code); + order.setInvoiceNumber(invoice_number); // } order.setTransportId(transport.getId()); @@ -425,19 +420,20 @@ public class OrderTempSyncService { // if (req_receipt == 1) { // 需要同时开具发票 // 这里的 finalReceive 在前面肯定验证过了 receive.setSurplus(receive.getSurplus() - 1); - receive.setCurrentCode(next_invoice_code); + receive.setCurrentCode(invoice_code); ret = receive.update(); if (!ret) { - log.error("发票领用信息更新失败", next_invoice_code); + log.error("发票领用信息更新失败", invoice_code); return false; } InvoiceLog invoiceLog = new InvoiceLog(); invoiceLog.setId(StrKit.getRandomUUID()); invoiceLog.setInvoiceReceiveId(receive.getId()); - invoiceLog.setCode(next_invoice_code); + invoiceLog.setCode(invoice_code); + invoiceLog.setInvoiceNumber(invoice_number); invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); invoiceLog.setSettlementTime(now); invoiceLog.setSettlementUserId(order.getSettlementUserId()); // 发票使用人 @@ -475,6 +471,8 @@ public class OrderTempSyncService { String uuid, String transport_id, Integer ordercluster_id, + String invoice_number, + String invoice_code, Integer product_id, String memo, String printerId, @@ -498,14 +496,9 @@ public class OrderTempSyncService { return Result.failed("进出场记录已完结或者已作废,不能使用"); } - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(transport.getSupermarketId()); + InvoiceReceive receive = InvoiceReceiveService.me.checkReceive(transport.getSupermarketId(), invoice_number, invoice_code); if (receive == null) { - return Result.failed("没有有效的发票领用记录"); - } - - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - return Result.failed("没有可用发票"); + return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); } OrderclusterTruck ot = OrderclusterTruck.dao.findFirst("select * from ordercluster_truck t \n" + @@ -605,7 +598,8 @@ public class OrderTempSyncService { SyncTask synctask = new SyncTask(); // if (req_receipt == 1) { // 需要同时开具发票 - order.setInvoiceCode(next_invoice_code); + order.setInvoiceCode(invoice_code); + order.setInvoiceNumber(invoice_number); // } order.setTransportId(transport.getId()); @@ -713,19 +707,20 @@ public class OrderTempSyncService { // if (req_receipt == 1) { // 需要同时开具发票 // 这里的 finalReceive 在前面肯定验证过了 receive.setSurplus(receive.getSurplus() - 1); - receive.setCurrentCode(next_invoice_code); + receive.setCurrentCode(invoice_code); ret = receive.update(); if (!ret) { - log.error("发票领用信息更新失败", next_invoice_code); + log.error("发票领用信息更新失败", invoice_code); return false; } InvoiceLog invoiceLog = new InvoiceLog(); invoiceLog.setId(StrKit.getRandomUUID()); invoiceLog.setInvoiceReceiveId(receive.getId()); - invoiceLog.setCode(next_invoice_code); + invoiceLog.setCode(invoice_code); + invoiceLog.setInvoiceNumber(invoice_number); invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); invoiceLog.setSettlementTime(now); invoiceLog.setSettlementUserId(order.getSettlementUserId()); @@ -901,7 +896,7 @@ public class OrderTempSyncService { return ret ? Result.success(order) : Result.failed("取消失败"); } - public Result invoice(String sn, String printerId, Sysuser sysuser) { + public Result invoice(String sn, String invoice_number, String invoice_code, String printerId, Sysuser sysuser) { // TODO: 判断权限 OrderTemp order = OrderTemp.dao.findById(sn); @@ -916,25 +911,21 @@ public class OrderTempSyncService { return Result.failed("订单已经取消"); } - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(order.getSupermarketId()); + InvoiceReceive receive = InvoiceReceiveService.me.checkReceive(order.getSupermarketId(), invoice_number, invoice_code); if (receive == null) { - return Result.failed("没有有效的发票领用记录"); - } - - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - return Result.failed("没有可用发票"); + return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); } if (StrKit.notBlank(order.getInvoiceCode())) { return Result.failedstr("请先将已开具的发票[%s]取消", order.getInvoiceCode()); } - order.setInvoiceCode(next_invoice_code); + order.setInvoiceCode(invoice_code); + order.setInvoiceNumber(invoice_number); Record logrecord = new Record(); logrecord.set("sn", sn); - logrecord.set("invoice", next_invoice_code); + logrecord.set("invoice", invoice_code); boolean ret = Db.tx(new IAtom() { @Override @@ -947,19 +938,20 @@ public class OrderTempSyncService { } receive.setSurplus(receive.getSurplus() - 1); - receive.setCurrentCode(next_invoice_code); + receive.setCurrentCode(invoice_code); ret = receive.update(); if (!ret) { - log.error("发票领用信息更新失败", next_invoice_code); + log.error("发票领用信息更新失败", invoice_code); return false; } InvoiceLog invoiceLog = new InvoiceLog(); invoiceLog.setId(StrKit.getRandomUUID()); invoiceLog.setInvoiceReceiveId(receive.getId()); - invoiceLog.setCode(next_invoice_code); + invoiceLog.setCode(invoice_code); + invoiceLog.setInvoiceNumber(invoice_number); invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); invoiceLog.setSettlementTime(new Date()); invoiceLog.setSettlementUserId(order.getSettlementUserId()); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java index b14141c..18aba6b 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java @@ -120,7 +120,8 @@ public class TransportQueryService { } } - transobj.set("next_invoice_code", InvoiceReceiveService.me.nextInvoice(transport.getSupermarketId())); // TODO 专票? +// transobj.set("next_invoice_code", InvoiceReceiveService.me.nextInvoiceCode(transport.getSupermarketId())); // 2020-09-21 加了发票代码 + transobj.set("invoice_numbers", InvoiceReceiveService.me.nextInvoiceCode(transport.getSupermarketId())); // TODO 专票? return Result.success(transobj); } diff --git a/ssjygl-xsx-local/src/main/resources/dev/db.properties b/ssjygl-xsx-local/src/main/resources/dev/db.properties index add365e..d1f34a1 100644 --- a/ssjygl-xsx-local/src/main/resources/dev/db.properties +++ b/ssjygl-xsx-local/src/main/resources/dev/db.properties @@ -4,14 +4,18 @@ jdbcUrl=jdbc:mysql://rm-wz9wa070076b2uge2ro.mysql.rds.aliyuncs.com:3306/ssjy_xsx user=dev_ssjy_xsx password=Ssjy_xs_890 -#jdbcUrl=jdbc:mysql://192.168.20.2:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true +#jdbcUrl=jdbc:mysql://localhost:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true #user=root #password=Ssjy_xsx_890 # redis redis.basekey=ssjcgl_xsx_dev -#redis.ip=127.0.0.1 -redis.ip=r-wz9168ab2f2f7ec4pd.redis.rds.aliyuncs.com redis.port=6379 + +#redis.ip=127.0.0.1 +#redis.pwd= +#redis.db=13 + +redis.ip=r-wz9168ab2f2f7ec4pd.redis.rds.aliyuncs.com redis.pwd=CoWR1111 redis.db=13 \ No newline at end of file diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java index 8f4f0b4..7973173 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java @@ -36,12 +36,13 @@ public class InvoiceLogController extends Controller { PageParam pp = getBean(PageParam.class, "", true); Integer supermarket_id = getInt("supermarket_id"); Integer state = getInt("state"); + String invoice_number = get("invoice_number"); String order_sn = get("order_sn"); String stm = get("stm"); String etm = get("etm"); String code = get("code"); Integer invoice_type = getInt("invoice_type"); - renderJson(Result.object(InvoiceLogService.me.find(pp, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); + renderJson(Result.object(InvoiceLogService.me.find(pp, invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); } /** diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java index 3142e1f..fedb641 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java @@ -10,6 +10,9 @@ import com.cowr.ssjygl.invoice.receive.InvoiceReceiveService; import com.cowr.ssjygl.invoice.receive.InvoiceReceiveValidator; 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 @@ -26,7 +29,7 @@ public class InvoiceReceiveController extends Controller { * 不存在 data = false */ @Before(InvoiceReceivePKValidator.class) - public void checkExistsByPk(){ + public void checkExistsByPk() { InvoiceReceive model = getModel(InvoiceReceive.class, "", true); // 忽略不在model中的字段 renderJson(InvoiceReceiveService.me.checkExistsByPk(model)); } @@ -35,7 +38,7 @@ public class InvoiceReceiveController extends Controller { * 新增 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceiveValidator.class) - public void save(){ + public void save() { Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); if (tokenuser == null) { @@ -51,7 +54,7 @@ public class InvoiceReceiveController extends Controller { * 删除 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceivePKValidator.class) - public void del(){ + public void del() { Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); if (tokenuser == null) { @@ -67,7 +70,7 @@ public class InvoiceReceiveController extends Controller { * 恢复 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceivePKValidator.class) - public void restore(){ + public void restore() { Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); if (tokenuser == null) { @@ -83,7 +86,7 @@ public class InvoiceReceiveController extends Controller { * 修改 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceiveValidator.class) - public void edit(){ + public void edit() { Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); if (tokenuser == null) { @@ -98,21 +101,22 @@ public class InvoiceReceiveController extends Controller { /** * 分页查找 invoice_receive 发票管理 - 领用记录 */ - public void find(){ - PageParam pp = getBean(PageParam.class, "", true); + public void find() { + PageParam pp = getBean(PageParam.class, "", true); Integer supermarket_id = getInt("supermarket_id"); String reveiver_user_name = get("reveiver_user_name"); + String invoice_number = get("invoice_number"); String stm = get("stm"); String etm = get("etm"); - Integer invoice_type = getInt("invoice_type"); - renderJson(Result.object(InvoiceReceiveService.me.find(pp, supermarket_id, reveiver_user_name, stm, etm, invoice_type))); + Integer invoice_type = getInt("invoice_type"); + renderJson(Result.object(InvoiceReceiveService.me.find(pp, invoice_number, supermarket_id, reveiver_user_name, stm, etm, invoice_type))); } /** * 按主键查找单个对象 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceivePKValidator.class) - public void findByPk(){ + public void findByPk() { InvoiceReceive model = getModel(InvoiceReceive.class, "", true); // 忽略不在model中的字段 renderJson(InvoiceReceiveService.me.findByPk(model)); } @@ -121,7 +125,7 @@ public class InvoiceReceiveController extends Controller { * 按主键查找单个对象 invoice_receive 发票管理 - 领用记录 */ @Before(InvoiceReceivePKValidator.class) - public void get(){ + public void get() { InvoiceReceive model = getModel(InvoiceReceive.class, "", true); // 忽略不在model中的字段 renderJson(InvoiceReceiveService.me.findByPk(model)); } @@ -129,18 +133,12 @@ public class InvoiceReceiveController extends Controller { public void nextInvoice() { Integer supermarket_id = getInt("supermarket_id", 0); - InvoiceReceive receive = InvoiceReceiveService.me.foremostReceive(supermarket_id); - if (receive == null) { + List receives = InvoiceReceiveService.me.nextInvoiceCode(supermarket_id); + if (receives == null || receives.isEmpty()) { renderJson(Result.failed("没有有效的发票领用记录")); return; } - String next_invoice_code = InvoiceReceiveService.me.nextInvoice(receive); - if (next_invoice_code == null) { - renderJson(Result.failed("没有可用发票")); - return; - } - - renderJson(Result.success(next_invoice_code)); + renderJson(Result.success(receives)); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java index 35b8db4..087e52d 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java @@ -45,8 +45,9 @@ public class InvoiceReceiveSyncService extends BaseSyncService { Long end = Long.parseLong(receive.getEndCode()); List chklist = InvoiceReceive.dao.find("select * from invoice_receive t\n" + - " where ( t.start_code <= ? and t.end_code >= ? )\n" + - " or ( t.start_code <= ? and t.end_code >= ? )", start, start, end, end); + " where t.invoice_number = ? \n " + + " and (( t.start_code <= ? and t.end_code >= ? )\n" + + " or ( t.start_code <= ? and t.end_code >= ? ))", receive.getInvoiceNumber(), start, start, end, end); if (!chklist.isEmpty()) { return Result.failed("发票段和已领用的记录冲突"); diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java index 2cc564c..66ea4bf 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java @@ -306,6 +306,7 @@ public class OrderclusterSyncService extends BaseSyncService { SyncTask synctask = new SyncTask(); Ordercluster model = new Ordercluster(); model.setCustomerName(customer_name); + model.setCustomerTexpayerName(customer_name); // 判断是否需要开具发票 // if (req_receipt == 1) {