diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/model/base/BaseOrderTransfer.java b/ssjygl-xsct-common/src/main/java/com/cowr/model/base/BaseOrderTransfer.java index 2a7871b..13f2120 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/model/base/BaseOrderTransfer.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/model/base/BaseOrderTransfer.java @@ -722,4 +722,26 @@ public abstract class BaseOrderTransfer> extends return getStr("ticket_code"); } + /** + * name: ordercluster_id + * type: INT(10) + * isNullable: YES + * isPrimaryKey: NO + * defaultValue: + * @param orderclusterId ordercluste id + */ + @JSONField(name="ordercluster_id") + public void setOrderclusterId(Integer orderclusterId) { + set("ordercluster_id", orderclusterId); + } + + + /** + * @return ordercluster_id ordercluste id + */ + @JSONField(name="ordercluster_id") + public Integer getOrderclusterId() { + return getInt("ordercluster_id"); + } + } diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java index 928b681..bca30b8 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordercluster/OrderclusterService.java @@ -218,7 +218,7 @@ public class OrderclusterService extends BaseService { Page page = Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); List list = page.getList(); - setOverWeight(list); + setOverWeight2(list); setTruckNum(list); return page; @@ -730,6 +730,50 @@ public class OrderclusterService extends BaseService { } } + public void setOverWeight2(List list) { + // 使用已完成的订单动态计算剩余量 + if (list == null || list.isEmpty()) { + return; + } + + StringBuilder ids = new StringBuilder(); + Map map = new HashMap<>(); + for (Record record : list) { + if (ids.length() > 0) { + ids.append(", "); + } + + record.set("over_weight", record.get("total_weight")); // 默认用 total_weight 填充,下面根据实际的数据覆盖 + record.set("complete_weight", 0); + + ids.append(record.getStr("id")); + map.put(record.getInt("id"), record); + } + + String sql = " select t.ordercluster_id, sum(t.weight) weight from order_transfer t \n" + + " where t.state = ? \n" + + " and t.ordercluster_id in(" + ids.toString() + ") \n" + + " group by t.ordercluster_id "; + + List orderlist = Db.find(sql, OrderStateEnum.RECEIVED.getStateid()); + + for (Record cli : orderlist) { + int ordercluster_id = cli.getInt("ordercluster_id"); + BigDecimal weight = cli.getBigDecimal("weight"); + + if (map.containsKey(ordercluster_id) && weight != null) { + Record record = map.get(ordercluster_id); + if (record.getBigDecimal("total_weight").compareTo(weight) == 0) { + record.set("over_weight", 0); + } else { + record.set("over_weight", record.getBigDecimal("total_weight").subtract(weight).setScale(2, BigDecimal.ROUND_HALF_UP)); + } + + record.set("complete_weight", weight.setScale(2, BigDecimal.ROUND_HALF_UP)); + } + } + } + /** * 查询集团订单的子订单 * diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java index 44fcee4..4164e03 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java @@ -165,7 +165,6 @@ public class OrderEndService extends BaseService { log.info("数据结果为空"); if (StrKit.notBlank(customerId) &&StrKit.notBlank(tm) &&StrKit.notBlank(supermarketId) &&StrKit.notBlank(String.valueOf(saleType)) - &&StrKit.notBlank(String.valueOf(invoiceType)) &&StrKit.notBlank(String.valueOf(productId)) &&StrKit.notBlank(String.valueOf(orderclusterId)) ){ @@ -173,7 +172,6 @@ public class OrderEndService extends BaseService { "_" + tm + "_" + supermarketId + "_" + saleType + -// "_" + invoiceType + "_" + productId + "_" + orderclusterId; Record first = Db.findFirst("select * from order_end WHERE ID = '" + id + "'"); @@ -216,7 +214,6 @@ public class OrderEndService extends BaseService { "_" + DateTimeUtil.sdf.get().format(o.getDate("date")) + "_" + o.getSupermarketId() + "_" + o.getSaleType() + -// "_" + o.getInvoiceType() + "_" + o.getProductId() + "_" + o.getOrderclusterId()); return o; diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java index 917afa9..3640778 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java @@ -524,7 +524,7 @@ public class OrderTempService extends BaseService { "SUM( TOTAL_PRICE ) TOTAL_PRICE,\n" + "SALE_TYPE,\n" + "PRODUCT_ID,\n" + - "INVOICE_TYPE,\n" + +// "INVOICE_TYPE,\n" + "ORDERCLUSTER_ID,\n" + "ifnull(COUNT( SN ), 0 ) COUNT \n" + "FROM\n" + diff --git a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java index 1580d43..ee20f06 100644 --- a/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java +++ b/ssjygl-xsct-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java @@ -630,7 +630,8 @@ public class OrderStatService { List sale_list = Db.find("SELECT\n" + " s.id AS sandfarm_id,\n" + " s.NAME AS sandfarm_name,\n" + - " IFNULL( SUM( CASE WHEN t.supermarket_id = 1 THEN t.count END ), 0 ) AS xsl_1,\n" + +// " IFNULL( SUM( CASE WHEN t.supermarket_id = 1 THEN t.count END ), 0 ) AS xsl_1,\n" + + " 0 AS xsl_1,\n" + " IFNULL( SUM( CASE WHEN t.supermarket_id = 1 THEN t.source_weight END ), 0 ) AS xse_1,\n" + " IFNULL( SUM( CASE WHEN t.supermarket_id = 1 THEN t.weight END ), 0 ) AS xss_1,\n" + " IFNULL( SUM( t.weight ), 0 ) AS weight \n" + @@ -3246,7 +3247,7 @@ public class OrderStatService { " ifnull( sum( CASE WHEN g.supermarket_id = 2 THEN g.count END ), 0 ) xsc_2,\n" + " ifnull( sum( CASE WHEN g.supermarket_id = 2 THEN g.source_weight END ), 0 ) xss_2,\n" + " ifnull( sum( CASE WHEN g.supermarket_id = 2 THEN g.weight END ), 0 ) xsw_2,\n" + - " ifnull( sum( CASE WHEN g.supermarket_id = 2 THEN g.trans_price END ), 0 ) xst_2,\n" + + " ifnull( sum( CASE WHEN g.supermarket_id = 2 THEN g.trans_price END ), 0 ) xst_2\n" + " ifnull( sum( CASE WHEN g.supermarket_id = 3 THEN g.count END ), 0 ) xsc_3,\n" + " ifnull( sum( CASE WHEN g.supermarket_id = 3 THEN g.source_weight END ), 0 ) xss_3,\n" + " ifnull( sum( CASE WHEN g.supermarket_id = 3 THEN g.weight END ), 0 ) xsw_3,\n" + @@ -3261,7 +3262,7 @@ public class OrderStatService { " ifnull( t.trans_co_id, ifnull( ot.trans_co_id, 0 ) ) trans_co_id,\n" + " t.supermarket_id,\n" + " t.truck_license license,\n" + - " ifnull( count( t.sn ), 0 ) count,\n" + + " ifnull( count( ot.sn ), 0 ) count,\n" + " ifnull( sum( t.weight ), 0 ) weight,\n" + " ifnull( sum( ot.weight ), 0 ) source_weight,\n" + " ifnull( sum( ot.trans_price ), 0 ) trans_price \n" + diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java index faa0ebd..8f0206f 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/common/DeviceThread.java @@ -188,38 +188,39 @@ public class DeviceThread extends Thread { // 一个摄像头只能连一次 Camera camera = new Camera(which + "_camera", cameraconf.getString("ip")); LEDThread led = new LEDThread(which + "_led", ledconf.getString("ip"), ledconf.getIntValue("port")); - AbsScale scale; + AbsScale scale = null; // 根据砂站id,兼容不同的表头 - if (supermarket_id == 3) { // 城隍用了耀华的表头 + if (supermarket_id == 1) { // 城隍用了耀华的表头 scale = new YaoHuaScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } else if (supermarket_id == 4) { // 石畈用了两个不一样的表头 - if (scaleconf.getIntValue("port") == 10001) { // 根据现场实际接线配置 -// scale = new YaoHuaScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - - // 2021-03-07 原来地方1号传感器故障,让二期地磅厂家更换传感器 - scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } else { - scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } - } else if (supermarket_id == 5) { - // 2021-04-15 融嘉入口磅换了 - if (which.startsWith(Enums.CtrlFlowEnum.R.name())) { - scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } else { - scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } - } else if (supermarket_id == 7) { - if (which.startsWith(Enums.CtrlFlowEnum.C.name())) { - scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } else { - scale = new KeLiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } - } else if (supermarket_id == 8 || supermarket_id == 9) { - scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); - } else { - scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); } +// else if (supermarket_id == 4) { // 石畈用了两个不一样的表头 +// if (scaleconf.getIntValue("port") == 10001) { // 根据现场实际接线配置 +//// scale = new YaoHuaScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// +// // 2021-03-07 原来地方1号传感器故障,让二期地磅厂家更换传感器 +// scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } else { +// scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } +// } else if (supermarket_id == 5) { +// // 2021-04-15 融嘉入口磅换了 +// if (which.startsWith(Enums.CtrlFlowEnum.R.name())) { +// scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } else { +// scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } +// } else if (supermarket_id == 7) { +// if (which.startsWith(Enums.CtrlFlowEnum.C.name())) { +// scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } else { +// scale = new KeLiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } +// } else if (supermarket_id == 8 || supermarket_id == 9) { +// scale = new DingsongScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } else { +// scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port")); +// } PLC plc = null; for (Map.Entry entry : plcMap.entrySet()) { diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java index ebd725b..12cf510 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/InController.java @@ -160,18 +160,18 @@ public class InController extends Controller implements Runnable { log.error(e.getMessage(), e); } - log.debug("%s 【%s】上磅,重置地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】上磅,重置雷达信号状态", getWhich(), pair.license); try { getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } - log.debug("%s 【%s】上磅,等待地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】上磅,等待雷达信号状态"+getSensor1(), getWhich(), pair.license); try { - while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 + while (!getResetFlow()) { // 流程没有被重置,就一直等待雷达信号状态 if (getPlc().read(getSensor1())) { // 读取前地感状态 break; } @@ -181,7 +181,7 @@ public class InController extends Controller implements Runnable { log.error(e.getMessage(), e); } - // 重置流程,这个位置要重置地感线圈状态 + // 重置流程,这个位置要重置雷达信号状态 if (getResetFlow()) { try { getPlc().write(getSensor1Reset()); // 重置前地感状态 @@ -293,13 +293,13 @@ public class InController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } - log.debug("%s 【%s】下磅,等待地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】下磅,等待雷达信号状态", getWhich(), pair.license); try { - while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 + while (!getResetFlow()) { // 流程没有被重置,就一直等待雷达信号状态 if (getPlc().read(getSensor2())) { // 读取后地感状态 break; } @@ -313,7 +313,7 @@ public class InController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } setResetFlow(false); @@ -328,7 +328,7 @@ public class InController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } setResetFlow(false); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java index 2ff68ef..aa0da57 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/controllers/OutController.java @@ -159,18 +159,18 @@ public class OutController extends Controller implements Runnable { log.error(e.getMessage(), e); } - log.debug("%s 【%s】上磅,重置地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】上磅,重置雷达信号状态", getWhich(), pair.license); try { getPlc().write(getSensor1Reset()); // 重置前地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } - log.debug("%s 【%s】上磅,等待地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】上磅,等待雷达信号状态", getWhich(), pair.license); try { - while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 + while (!getResetFlow()) { // 流程没有被重置,就一直等待雷达信号状态 if (getPlc().read(getSensor1())) { // 读取前地感状态 break; } @@ -180,10 +180,10 @@ public class OutController extends Controller implements Runnable { log.error(e.getMessage(), e); } - // 获取到地感线圈状态后,等待 5 秒后开始称重 + // 获取到雷达信号状态后,等待 5 秒后开始称重 Thread.sleep(getScaleWaitTime()); - // 重置流程,这个位置要重置地感线圈状态 + // 重置流程,这个位置要重置雷达信号状态 if (getResetFlow()) { try { getPlc().write(getSensor1Reset()); // 重置前地感状态 @@ -203,7 +203,7 @@ public class OutController extends Controller implements Runnable { log.error(e.getMessage(), e); } - // 获取到地感线圈状态后,等待 5 秒后开始称重 + // 获取到雷达信号状态后,等待 5 秒后开始称重 Thread.sleep(getScaleWaitTime()); double weight = 0; @@ -303,13 +303,13 @@ public class OutController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } - log.debug("%s 【%s】下磅,等待地感线圈状态", getWhich(), pair.license); + log.debug("%s 【%s】下磅,等待雷达信号状态", getWhich(), pair.license); try { - while (!getResetFlow()) { // 流程没有被重置,就一直等待地感线圈状态 + while (!getResetFlow()) { // 流程没有被重置,就一直等待雷达信号状态 if (getPlc().read(getSensor2())) { // 读取后地感状态 break; } @@ -323,7 +323,7 @@ public class OutController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } setResetFlow(false); @@ -338,7 +338,7 @@ public class OutController extends Controller implements Runnable { try { getPlc().write(getSensor2Reset()); // 重置后地感状态 } catch (IOException e) { - log.debug("%s 【%s】 重置地感线圈状态失败", getWhich(), pair.license); + log.debug("%s 【%s】 重置雷达信号状态失败", getWhich(), pair.license); log.error(e.getMessage(), e); } setResetFlow(false); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/PLC.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/PLC.java index 2fcdb34..95384f4 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/PLC.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/PLC.java @@ -275,7 +275,7 @@ public class PLC extends Device { public static void main(String[] args) { try { - PLC plc = new PLC("_plc", "192.168.20.20", 502, com.cowr.local.ssjygl.devicectrl.common.DeviceThread.defaultAddressTable); + PLC plc = new PLC("_plc", "192.168.20.21", 502, com.cowr.local.ssjygl.devicectrl.common.DeviceThread.defaultAddressTable); plc.connect(); plc.isConnected(); // plc.write("rodIn1Down"); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/YaoHuaScale.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/YaoHuaScale.java index 44912b0..7835ee0 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/YaoHuaScale.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/YaoHuaScale.java @@ -110,7 +110,7 @@ public class YaoHuaScale extends AbsScale { public static void main(String[] args) { - YaoHuaScale s = new YaoHuaScale("scale", "192.168.20.30", 10001); + YaoHuaScale s = new YaoHuaScale("scale", "192.168.20.31", 10001); try { boolean connect = s.connect(); @@ -123,9 +123,20 @@ public class YaoHuaScale extends AbsScale { for (int i = 0; i < 100; i++) { try { - st = System.currentTimeMillis(); + if (!s.isConnected()) { + s.connect(); + } + double weigh = s.weigh15(); System.out.println("end:" + weigh + ", tm: " + (System.currentTimeMillis() - st)); + if (weigh > 0) { + + } else { + // 读数错误,断开连接,下次读取时重连 + s.disconnect(); + } + st = System.currentTimeMillis(); + try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/ExcelHelper.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/ExcelHelper.java index d43cbf8..ac2c43b 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/ExcelHelper.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/ExcelHelper.java @@ -29,7 +29,7 @@ public class ExcelHelper { log.debug("读取模板耗时:" + (System.currentTimeMillis() - st)); Sheet sheet = workbook.getSheetAt(0); - if ("tpl_bill_full.xlsx".equals(tplFile.getName())) { + if ("tpl_bill_full.xlsx".equals(tplFile.getName()) || "tpl_bill_full1.xlsx".equals(tplFile.getName())) { addrMap = JsdCellAddresses.addrMap; datetimePrint = JsdCellAddresses.datetimePrint; } else { diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/JsdCellAddresses.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/JsdCellAddresses.java index 69c3d9a..3eb4401 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/JsdCellAddresses.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/devicectrl/printer/JsdCellAddresses.java @@ -8,10 +8,14 @@ import java.util.Map; // 保存预设的发票内容单元格位置 // 结算单 public class JsdCellAddresses { + // 订单号 + public static final CellAddress sn = makeCellAddress("d8"); // 开票时间 public static final CellAddress datetimePrint = makeCellAddress("o8"); // 客户名称 public static final CellAddress clientName = makeCellAddress("c9"); + + public static final CellAddress productName = makeCellAddress("b14"); // 净重 public static final CellAddress goodsNetWeight = makeCellAddress("g18"); @@ -31,17 +35,23 @@ public class JsdCellAddresses { public static final CellAddress priceGoodsTotalUpper = makeCellAddress("m17"); // 备注 public static final CellAddress remark = makeCellAddress("m20"); + public static final CellAddress memo = makeCellAddress("m21"); // 开票人 public static final CellAddress drawer = makeCellAddress("e24"); // 车牌号 public static final CellAddress truckLicense = makeCellAddress("m11"); + public static final CellAddress dest = makeCellAddress("d9"); + + public static final CellAddress origin = makeCellAddress("e20"); + public static Map addrMap = new HashMap<>(); static { addrMap.put("datatimePrint", datetimePrint); addrMap.put("goodsSetWeight", goodsSetWeight); addrMap.put("clientName", clientName); + addrMap.put("goodsName", productName); addrMap.put("goodsNetWeight", goodsNetWeight); addrMap.put("goodsTareWeight", goodsTareWeight); addrMap.put("goodsGrossWeight", goodsGrossWeight); @@ -51,6 +61,10 @@ public class JsdCellAddresses { addrMap.put("remark", remark); addrMap.put("drawer", drawer); addrMap.put("truck_license", truckLicense); + addrMap.put("dest", dest); + addrMap.put("origin", origin); + addrMap.put("sn", sn); + addrMap.put("memo", memo); } private static CellAddress makeCellAddress(String addr) { diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/hbrsms/HbrsmsService.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/hbrsms/HbrsmsService.java index f081555..a46f196 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/hbrsms/HbrsmsService.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/hbrsms/HbrsmsService.java @@ -50,6 +50,10 @@ public class HbrsmsService { public void put(OrderTemp order, Transport transport) { + } + + public void put1(OrderTemp order, Transport transport) { + Hbrsms hbrsms = new Hbrsms(); hbrsms.setCategory(0); //0-砂石,1-卵石,2 - 土 String billerName = Config.configprop.get("hbrsms.billerName"); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/LocalOrderService.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/LocalOrderService.java index 09469e9..98db424 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/LocalOrderService.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/LocalOrderService.java @@ -148,8 +148,12 @@ public class LocalOrderService { try { printdata.set("first_weight", transport.getFirstWeight()); printdata.set("second_weight", transport.getSecondWeight()); + if (printerId == Enums.PrinterIdEnum.printer2.name()){ + Config.deviceThread.print(printerId, getPrintFile1(printdata)); + } else { + Config.deviceThread.print(printerId, getPrintFile(printdata)); + } - Config.deviceThread.print(printerId, getPrintFile(printdata)); out.set("print", true); } catch (Exception e) { out.set("print", "打印指令发送失败"); @@ -224,6 +228,7 @@ public class LocalOrderService { String transDistance = "---"; // 运输距离 String priceTransTotal = "---"; // 运输总价 String priceTransTotalUpper = "---"; // 运输总价大写 + String memo = ""; if (sntype == OrderTypeEnum.SALE.getTypeid()) { @@ -251,12 +256,12 @@ public class LocalOrderService { return null; } - origin = supermarket.getName(); // 运输起点 +// origin = supermarket.getName(); // 运输起点 dest = clientName; // 运输终点 vendor = CacheData.print_vendor; // 销售方名称 vendorTaxId = CacheData.print_vendorTaxId; // 销售方纳税人识别号 - remark = "销售订单:" + sn; +// remark = "销售订单:" + sn; if (order.get("total_price") != null) { paid = String.format("%.2f", order.getBigDecimal("total_price")); // 总价 @@ -284,13 +289,13 @@ public class LocalOrderService { goodsGrossWeight = String.format("%.2f", first_weight); // 毛重 goodsSetWeight = goodsNetWeight; - goodsNetWeight = String.format("%.2f", second_weight.subtract(first_weight)); // 计算净重 + goodsNetWeight = String.format("%.2f", first_weight.subtract(second_weight)); // 计算净重 - Sandfarm sandfarm = Sandfarm.dao.findById(order.get("sandfarm_id")); + Supermarket sandfarm = Supermarket.dao.findById(order.get("sandfarm_id")); if (sandfarm == null) { - log.error("获取砂场信息失败 %s", order.getInt("sandfarm_id")); + log.error("获取取土场信息失败 %s", order.getInt("sandfarm_id")); return null; } @@ -304,24 +309,24 @@ public class LocalOrderService { origin = sandfarm.getName(); // 运输起点 dest = supermarket.getName(); // 运输终点 - remark = "转运订单:" + sn; + remark = "原材料运输订单"; if (order.get("source_weight") != null) { remark += String.format("\n底单重量:%.2f", order.getBigDecimal("source_weight")); } // 运输单价,车辆载重对应的起步价 - priceTrans = TransPriceService.me.getOrderStartTransPrice(order.getInt("trans_co_id"), Math.abs(order.getDouble("weight"))) + ""; - - priceGoods = StrUtil.getRecordStr(order, "unit_price"); // 商品单价 - transDistance = StrUtil.getRecordStr(order, "trans_distance"); // 运输距离 - priceTransTotal = StrUtil.getRecordStr(order, "trans_price"); // 运输总价 - - if (order.get("trans_price") != null) { - priceTransTotalUpper = ChineseNumberUtil.getChineseNumber(order.getBigDecimal("trans_price").doubleValue()); - } else { - priceTransTotalUpper = ""; // 运输总价大写 - } +// priceTrans = TransPriceService.me.getOrderStartTransPrice(order.getInt("trans_co_id"), Math.abs(order.getDouble("weight"))) + ""; +// + priceGoods = StrUtil.getRecordStr(order, "sn"); // 商品单价 +// transDistance = StrUtil.getRecordStr(order, "trans_distance"); // 运输距离 +// priceTransTotal = StrUtil.getRecordStr(order, "trans_price"); // 运输总价 +// +// if (order.get("trans_price") != null) { +// priceTransTotalUpper = ChineseNumberUtil.getChineseNumber(order.getBigDecimal("trans_price").doubleValue()); +// } else { +// priceTransTotalUpper = ""; // 运输总价大写 +// } } else if (sntype == OrderTypeEnum.TEMP.getTypeid()) { int decimal; int total_weight_decimal = 0; @@ -364,7 +369,7 @@ public class LocalOrderService { return null; } - origin = supermarket.getName(); // 运输起点 + origin = "结算重量"; dest = StrUtil.getRecordStr(order, "customer_receiver_address"); // 运输终点 vendor = CacheData.print_vendor; // 销售方名称 @@ -379,6 +384,8 @@ public class LocalOrderService { } } + memo = StrUtil.getRecordStr(order, "memo"); + // if(StrKit.notBlank(origin)){ // remark += "\r\n发货地:" + origin; // } @@ -457,6 +464,7 @@ public class LocalOrderService { out.put("goodsTareWeight", new BigDecimal(goodsTareWeight).setScale(2, RoundingMode.HALF_UP).toString()); out.put("goodsGrossWeight", new BigDecimal(goodsGrossWeight).setScale(2, RoundingMode.HALF_UP).toString()); // out.put("qrcode", sn); + out.put("sn",sn); out.put("serial", sn); out.put("datetimePrint", sdf.get().format(new Date())); out.put("clientName", clientName); @@ -485,6 +493,7 @@ public class LocalOrderService { out.put("vendor", vendor); out.put("vendorTaxId", vendorTaxId); out.put("remark", remark); + out.put("memo", memo); out.put("drawer", StrUtil.getRecordStr(order, "settlement_user_name")); out.put("truck_license", StrUtil.getRecordStr(order, "truck_license")); @@ -511,14 +520,68 @@ public class LocalOrderService { Workbook wb = null; try { - Object invoice_type = data.get("invoice_type"); // 可能是 null + wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl_bill_full.xlsx")); - if ("2".equals(invoice_type)) { // 2020-09-29 开专票的订单先用结算单模板 - wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl_bill_full.xlsx")); - } else { // 其他的用冠名发票 - wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl.xlsx")); +// Object invoice_type = data.get("invoice_type"); // 可能是 null +// +// if ("2".equals(invoice_type)) { // 2020-09-29 开专票的订单先用结算单模板 +// wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl_bill_full.xlsx")); +// } else { // 其他的用冠名发票 +// wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl.xlsx")); +// } + + if (wb == null) { + log.error("获取 Workbook 失败"); + return null; } + log.debug("生成文件耗时1:%s", System.currentTimeMillis() - st); + + File out = new File(String.format("%s%s%s-%d.xlsx", + Config.getRootPath() + File.separator + Const.PringExcelTmpFolder, + File.separator, + order.getStr("sn"), + System.currentTimeMillis() + )); + + try (FileOutputStream output = new FileOutputStream(out)) { + wb.write(output); + + log.debug("生成票据打印文件: %s", out.getAbsolutePath()); + log.debug("生成文件耗时2:%s", System.currentTimeMillis() - st); + + return out; + } catch (Exception e) { + log.error(e.getMessage(), e); + return null; + } + } catch (Exception e) { + log.error(e.getMessage(), e); + return null; + } finally { + if (wb != null) { + try { + wb.close(); + wb = null; + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + } + } + + public File getPrintFile1(Record order) { + long st = System.currentTimeMillis(); + Map data = getPrintModel(order); + + if (data == null) { + return null; + } + + Workbook wb = null; + try { + wb = ExcelHelper.genExcel(data, new File(PathKit.getRootClassPath() + "/tpl_bill_full1.xlsx")); + if (wb == null) { log.error("获取 Workbook 失败"); return null; @@ -597,7 +660,12 @@ public class LocalOrderService { cmd.set("printer", printerId); try { - Config.deviceThread.print(printerId, getPrintFile(printdata)); + if(printerId == Enums.PrinterIdEnum.printer2.name()){ + Config.deviceThread.print(printerId, getPrintFile1(printdata)); + }else { + Config.deviceThread.print(printerId, getPrintFile(printdata)); + } + cmd.set("status", true); ActionCmdLogSyncService.me.save(cmd.toJson(), sysuser); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java index f2d9df3..89e3b9b 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java @@ -246,7 +246,8 @@ public class OrderTempController extends BaseController { String sn = get("sn"); String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); - if (Integer.parseInt(sn.substring(10, 12)) != OrderTypeEnum.TEMP.getTypeid()) { + if (Integer.parseInt(sn.substring(10, 12)) != OrderTypeEnum.TEMP.getTypeid() && + Integer.parseInt(sn.substring(10, 12)) != OrderTypeEnum.TRANSFER.getTypeid()) { renderJson(Result.failed("sn 不能为 null")); } else { renderJson(LocalOrderService.me.print(sn, printer, tokenuser)); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java index 724fc62..0ab2ef4 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java @@ -742,6 +742,7 @@ public class OrderTempSyncService { // 根据客户消息判断是否需要打折 CustomerDiscount customerDiscount = CustomerDiscountService.me.getDiscountByCustomerId(customer.getId()); // 预付费结算 if (Objects.nonNull(customerDiscount) && Objects.nonNull(customerDiscount.getDiscount()) && 12 != transport.getSupermarketId()){ + order.setMemo("水杂点"+(100-customerDiscount.getDiscount())+"%"); net_weight = net_weight.multiply(BigDecimal.valueOf(customerDiscount.getDiscount()/100)); } @@ -870,7 +871,7 @@ public class OrderTempSyncService { order.setState(OrderStateEnum.RECEIVED.getStateid()); // 直接完成,没有前面的过程 order.setSaleType(ordercluster.getSaleType()); order.setCreateTime(now); - order.setMemo(memo); // 备注 +// order.setMemo(memo); // 备注 // 更新 transport 出入场信息 transport.setState(OrderStateEnum.RECEIVED.getStateid()); // 标记 transport state 为 5 ,表示出入场记录完成 diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferController.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferController.java index 49cd5a8..0e78bb5 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferController.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferController.java @@ -53,10 +53,11 @@ public class OrderTransferController extends BaseController { String transport_id = get("transport_id"); String old_sn = get("old_sn"); Integer product_id = getInt("product_id",1); - String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); + String printer = get("printer", Enums.PrinterIdEnum.printer2.name()); Double source_weight = getParaToDouble("source_weight"); String ticket_code = get("ticket_code"); - renderJson(OrderTransferSyncService.me.pay(uuid, transport_id, old_sn, product_id, printer, source_weight, tokenuser, ticket_code)); + Integer ordercluster_id = getInt("ordercluster_id"); + renderJson(OrderTransferSyncService.me.pay(uuid, transport_id, old_sn, product_id, printer, source_weight, tokenuser, ticket_code,ordercluster_id)); } /** @@ -87,7 +88,7 @@ public class OrderTransferController extends BaseController { } String sn = get("sn"); - String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); + String printer = get("printer", Enums.PrinterIdEnum.printer2.name()); if (Integer.parseInt(sn.substring(10, 12)) != OrderTypeEnum.TRANSFER.getTypeid()) { renderJson(Result.failed("sn 不能为 null")); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferPayValidator.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferPayValidator.java index d7ed081..8a5ec3c 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferPayValidator.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferPayValidator.java @@ -12,7 +12,7 @@ public class OrderTransferPayValidator extends CrudParamValidator { validateString("uuid", 32, 32, "uuid", "uuid 长度 32,必填"); validateString("transport_id", 32, 32, "transport_id", "transport_id 长度 32,必填"); // validateInteger("sandfarm_id", 1, 2147483647, "sandfarm_id", "sandfarm_id 范围 1~2147483647"); - validateString("old_sn", 1, 16, "old_sn", "old_sn 长度 1~16"); +// validateString("old_sn", 1, 16, "old_sn", "old_sn 长度 1~16"); if (StrKit.notBlank(c.get("source_weight"))) { validateDouble("source_weight", 0.01, 9999, "source_weight", "source_weight 范围 0.01~999"); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferSyncService.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferSyncService.java index 835ef46..884eab4 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferSyncService.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/order/ordertransfer/OrderTransferSyncService.java @@ -45,7 +45,8 @@ public class OrderTransferSyncService { String printerId, Double source_weight, Sysuser sysuser, - String ticket_code + String ticket_code, + Integer ordercluster_id ) { Transport transport = Transport.dao.findById(transport_id); if (transport == null) { @@ -86,19 +87,20 @@ public class OrderTransferSyncService { OrderTransfer order = new OrderTransfer(); order.setUuid(uuid); - if (old_sn.length() != 16) { - return Result.failed("【%s】取土场订单编号错误", old_sn); - } +// if (old_sn.length() != 16) { +// return Result.failed("【%s】取土场订单编号错误", old_sn); +// } // YYYYMMDD + 两位销售点id(避免离线生成订单号重复) + 两位订单类型 + 四位序列号 - Integer sandfarm_id = Integer.valueOf(old_sn.substring(8, 10)); +// Integer sandfarm_id = Integer.valueOf(old_sn.substring(8, 10)); - Supermarket byId = Supermarket.dao.findById(sandfarm_id); - if (Objects.isNull(byId) || byId.getType() != 1) { - return Result.failedstr("当前订单号不是取土场订单"); - } +// Supermarket byId = Supermarket.dao.findById(sandfarm_id); +// if (Objects.isNull(byId) || byId.getType() != 1) { +// return Result.failedstr("当前订单号不是取土场订单"); +// } order.setOldSn(old_sn); - order.setSandfarmId(sandfarm_id); + + order.setOrderclusterId(ordercluster_id); if (order.checkDuplicate("uuid")) { return Result.failed("【%s】已经存在", uuid); @@ -120,6 +122,15 @@ public class OrderTransferSyncService { order.setSourceWeight(new BigDecimal(source_weight)); } + Ordercluster ordercluster = Ordercluster.dao.findById(ordercluster_id); + if (ordercluster == null) { + return Result.failedstr("原材料运输订单【%s】信息不存在", ordercluster_id); + } + + if (ordercluster.getState() == OrderStateEnum.INVALID.getStateid()) { + return Result.failedstr("原材料运输订单【%s】已完结,请重新下单", ordercluster_id); + } + order.setSandfarmId(ordercluster.getSupermarketId()); TicketReceive ticketReceive = TicketReceiveService.me.checkSurplusReceive(transport.getSupermarketId(), ticket_code); if (ticketReceive == null) { return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用"); @@ -174,7 +185,7 @@ public class OrderTransferSyncService { } - BigDecimal distance = SupermarketSandfarmDistanceService.me.getDistance(transport.getSupermarketId(), sandfarm_id); + BigDecimal distance = SupermarketSandfarmDistanceService.me.getDistance(transport.getSupermarketId(), ordercluster.getSupermarketId()); order.setTransDistance(distance); // 转运运距 BigDecimal transUnitPrice = new BigDecimal(TransPriceService.me.getTransferStartTransPrice(order.getTransDistance().doubleValue())); order.setTransUnitPrice(transUnitPrice); // 转运单价 @@ -201,6 +212,18 @@ public class OrderTransferSyncService { return false; } + if (ordercluster.getState() == OrderStateEnum.INITIAL.getStateid()) { + ordercluster.setState(OrderStateEnum.ENTERED.getStateid()); + + ret = ordercluster.update(); + + if (!ret) { + return false; + } + + synctask.addUpdateData(ordercluster); + } + // Stock stock = Stock.dao.findByIds(transport.getSupermarketId(), product_id); // if (stock == null) { // log.error("未找到库存信息 %s, %s", order.getSupermarketId(), order.getProductId()); diff --git a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java index cceea2d..f7b4038 100644 --- a/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java +++ b/ssjygl-xsct-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java @@ -3,8 +3,10 @@ package com.cowr.local.ssjygl.transport; import com.cowr.common.base.BaseController; import com.cowr.common.enums.Enums; import com.cowr.common.view.Result; +import com.cowr.local.ssjygl.devicectrl.device.YaoHuaScale; import com.cowr.local.ssjygl.main.AuthInterceptor; import com.cowr.local.ssjygl.main.CliCacheData; +import com.cowr.local.ssjygl.main.Config; import com.cowr.local.ssjygl.system.sysuser.SysuserSyncService; import com.cowr.model.Sysuser; import com.cowr.ssjygl.transport.LicenseValidator; @@ -16,6 +18,7 @@ import com.jfinal.kit.StrKit; import com.jfinal.upload.UploadFile; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -292,6 +295,24 @@ public class TransportController extends BaseController { renderJson(result ? Result.success(true) : Result.failed("抬闸失败")); } + @Clear(AuthInterceptor.class) + public void getLedInfo() { + String which = getUpperCaseVal("which"); + String text = get("text"); + Config.deviceThread.getController(which).getLed().setInfo(" ", text); + } + + @Clear(AuthInterceptor.class) + public void getWeightInfo() throws IOException { + YaoHuaScale s = new YaoHuaScale("scale", "192.168.20.30", 10001); + if(!s .isConnected()){ + s.connect(); + } + String which = getUpperCaseVal("which"); + double v = Config.deviceThread.getController(which).getScale().weigh15(); + renderJson(v); + } + @Before(TransportIdValidator.class) public void cmdScale() { Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); diff --git a/ssjygl-xsct-local/src/main/resources/dev/db.properties b/ssjygl-xsct-local/src/main/resources/dev/db.properties index 3bb4998..c84d28f 100644 --- a/ssjygl-xsct-local/src/main/resources/dev/db.properties +++ b/ssjygl-xsct-local/src/main/resources/dev/db.properties @@ -4,7 +4,7 @@ #user=root #password=19999999 -jdbcUrl=jdbc:mysql://192.168.66.47:3306/ssjy_xsct?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true +jdbcUrl=jdbc:mysql://192.168.20.2:3306/ssjy_xsct?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true user=root password=Ssjy_xsx_890 diff --git a/ssjygl-xsct-local/src/main/resources/tpl_bill_full.xlsx b/ssjygl-xsct-local/src/main/resources/tpl_bill_full.xlsx index 5ba066f..d1beea3 100644 Binary files a/ssjygl-xsct-local/src/main/resources/tpl_bill_full.xlsx and b/ssjygl-xsct-local/src/main/resources/tpl_bill_full.xlsx differ diff --git a/ssjygl-xsct-local/src/main/resources/tpl_bill_full1.xlsx b/ssjygl-xsct-local/src/main/resources/tpl_bill_full1.xlsx new file mode 100644 index 0000000..29210b8 Binary files /dev/null and b/ssjygl-xsct-local/src/main/resources/tpl_bill_full1.xlsx differ