| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- package com.qlm.service;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.jfinal.aop.Before;
- import com.jfinal.kit.PropKit;
- import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
- import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
- import com.jfinal.plugin.activerecord.Db;
- import com.jfinal.plugin.activerecord.Record;
- import com.jfinal.plugin.activerecord.dialect.OracleDialect;
- import com.jfinal.plugin.activerecord.tx.Tx;
- import com.jfinal.plugin.druid.DruidPlugin;
- import com.qlm.log.Log;
- import com.qlm.tools.MD5Utils;
- import com.qlm.tools.WxUtil;
- public class UploadService {
-
-
- public static void main(String[] args) {
- con();
- update();
-
-
- }
-
- public static void con(){
- DruidPlugin oraclePlugin = new DruidPlugin("jdbc:oracle:thin:@192.168.0.183:61521/orcl", "pxl","xuwei417");
-
- oraclePlugin.setDriverClass("oracle.jdbc.OracleDriver");
- oraclePlugin.setValidationQuery("select 1 from dual");
- oraclePlugin.start();
-
- ActiveRecordPlugin oracleArp = new ActiveRecordPlugin("oracle", oraclePlugin);
- oracleArp.setDialect(new OracleDialect());
- oracleArp.setContainerFactory(new CaseInsensitiveContainerFactory());
- oracleArp.start();
-
- }
- @Before(Tx.class)
- public void upload(String data){
- // Log.info("receive data:"+data);
- JSONObject parseObject = JSONObject.parseObject(data);
- String deviceId = parseObject.getString("d");
- List<Record> list = new ArrayList();
- List<Record> xiangList = new ArrayList<Record>();
- JSONArray jsonArray = parseObject.getJSONArray("l");
- Map<String,JSONObject> masterMap = new HashMap<String, JSONObject>();
- for (int i = 0; i < jsonArray.size(); i++) {
- JSONObject jsonObject = jsonArray.getJSONObject(i);
- String master = jsonObject.getString("m");
- master = master.toUpperCase();
- String childCode = jsonObject.getString("i");
-
- if("nodata".equals(master)){
- int update = Db.update("update jinzai_upload_record set master_code = null where child_code = ?",childCode);
- if(update>0){
- Record r = new Record();
- r.set("child_code", childCode).set("create_time", new Date())
- .set("device_no", deviceId);
- try{
- Db.save("jinzai_unbind_record","child_code", r);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
-
- }else{
- JSONObject jsonObject2 = masterMap.get(master);
- if(jsonObject2 == null){
- masterMap.put(master, jsonObject) ;
- }
- Record info = new Record();
- info.set("child_code", childCode).set("master_code", master)
- .set("create_time", new Date());
- list.add(info);
- }
- }
- Set<Entry<String,JSONObject>> entrySet = masterMap.entrySet();
- List<Record> find = Db.find("SELECT i.sku,i.kouwei,p.product_name,i.id,i.product_id from t_jz_item i left join t_jz_product p on (i.product_id = p.id) where sku is not null");
-
- Map<String, Record> skuMap =new HashMap<String, Record>();
-
- for (Record record : find) {
- String sku = record.getStr("sku");
- skuMap.put(sku, record);
- }
- for (Entry<String, JSONObject> entry : entrySet) {
- String master = entry.getKey();
- JSONObject jsonObject = entry.getValue();
- String addTime = jsonObject.getString("g");
- String duoma = jsonObject.getString("t");
- duoma = duoma.toUpperCase();
- String taskNo = jsonObject.getString("s");
- String sku = jsonObject.getString("k");
- String productDate = jsonObject.getString("d");
-
- String banzu = jsonObject.getString("b");
- Record masterInfo = new Record();
-
- Record record = skuMap.get(sku);
- String pinXiang = "";
- String kouwei = "";
- if(record != null){
- pinXiang = record.getStr("product_name");
- kouwei = record.getStr("kouwei");
- }
- masterInfo.set("id", master).set("create_time", new Date()).set("produce_date", productDate)
- .set("duo_code", duoma.toUpperCase()).set("device_no", deviceId).set("guo_time", addTime)
- .set("pinxiang", pinXiang).set("kouwei", kouwei).set("sku", sku).set("task_no", taskNo).set("banzu", banzu);
-
- xiangList.add(masterInfo);
- }
-
-
- WxUtil.batchSaveIgnore("jinzai_upload_child", list, "");
-
-
- WxUtil.batchSaveIgnore("jinzai_upload_master", xiangList, "");
- }
- @Before(Tx.class)
- public void unBindCode(String code,String line, String time, String sign) {
- boolean check = checksign(code,time,sign);
- if(check){
- int update = Db.update("update jinzai_upload_child set master_code = null where child_code = ?",code);
- if(update>0){
- Record r = new Record();
- r.set("child_code", code).set("create_time", new Date())
- .set("device_no", line);
- try{
- Db.save("jinzai_unbind_record","child_code", r);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
-
- }
- }
-
- static boolean isRunning = false;
-
- //同步订单到我们自己的库
- public static void update(){
- if(isRunning){
- return;
- }
- isRunning = true;
- try{
- // 获取当前时间
- LocalDateTime now = LocalDateTime.now();
-
- // 获取昨天的当前时间(减去 1 天)
- LocalDateTime yesterdaySameTime = now.minusDays(1);
-
- // 格式化输出(可选)
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- String formattedTime = yesterdaySameTime.format(formatter);
-
-
- String udfSqlString = "SELECT * FROM WMS_PROD.V_TMSO_RETURN_H WHERE DELIVERYTIME >= TO_DATE('"+formattedTime+"', 'YYYY-MM-DD HH24:MI:SS')";
- List<Record> find = Db.use("oracle").find(udfSqlString);
- Log.info("执行同步数据查询:数据量,"+find.size());
- List<Record> list = new ArrayList<Record>();
- for (Record record : find) {
- String orderNo = record.getStr("ORDERNO");//发货单号
-
- String OUTWAREHOUSE = record.getStr("OUTWAREHOUSE");//工厂名称
-
-
- String WAREHOUSEID = record.getStr("WAREHOUSEID");//工厂ID
-
-
- Date Deliverytime = record.getDate("DELIVERYTIME");//出库时间
-
- String caseCode = record.getStr("CASECODE");//箱码
-
- String palletCode = record.getStr("PALLETCODE");//垛码
-
-
- String PRODUCTNAME = record.getStr("PRODUCTNAME");//产品名称
-
-
-
- String CUSTOMERNAME = record.getStr("CUSTOMERNAME");//客户姓名
-
- String SKUNAME = record.getStr("SKUNAME");//SKU名称
-
- String LICENSEPLATE = record.getStr("LICENSEPLATE");//车牌号
-
- String OUTWAREHOUSENO = record.getStr("OUTWAREHOUSENO");//工厂编号
-
- String SKUNO = record.getStr("SKUNO");//sku编号
-
- String OPERATEUSER = record.getStr("OPERATEUSER");//操作人
-
- String PRODUCTNO = record.getStr("PRODUCTNO");//产品编号
-
- String CUSTOMERNO = record.getStr("CUSTOMERNO");//客户编号
-
- Record info = new Record();
-
- info.set("OrderNo", orderNo).set("OutWarehouse", OUTWAREHOUSE).set("WarehouseID", WAREHOUSEID)
-
- .set("DeliveryTime", Deliverytime).set("CaseCode", caseCode).set("PalletCode", palletCode)
-
- .set("ProductName", PRODUCTNAME).set("CustomerName", CUSTOMERNAME).set("SKUName", SKUNAME)
-
-
- .set("LicensePlate", LICENSEPLATE).set("OutWarehouseNo", OUTWAREHOUSENO).set("SKUNo", SKUNO)
-
- .set("OperateUser", OPERATEUSER).set("ProductNo", PRODUCTNO).set("CustomerNo", CUSTOMERNO);
-
-
- list.add(info);
-
- }
- WxUtil.batchSaveIgnore("deliveryorders", list, "");
- Log.info("执行同步数据:完成,"+find.size());
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- isRunning = false;
- }
-
-
- }
-
-
- static boolean isEmRunning = false;
-
- //同步订单到我们自己的库
- public static void updateEm(){
- if(isEmRunning){
- return;
- }
- isEmRunning = true;
- int pageSize = 1000;
- try{
- for (int pageNumber = 1; pageNumber <100000000; pageNumber++) {
- int pageStart = (pageNumber - 1) * pageSize + 1;
- int pageEnd = pageSize*pageNumber;
-
- String udfSqlString = "SELECT * FROM (SELECT a.*, ROWNUM rnum FROM (SELECT * FROM WMS_PROD.V_YMSO_RETURN_H) a WHERE ROWNUM <= ?) WHERE rnum > ?";
- List<Record> find = Db.use("oracle").find(udfSqlString,pageEnd,pageStart);
- if(find.isEmpty()){
- break;
- }
-
- List<Record> list = new ArrayList<Record>();
- for (Record record : find) {
- String orderNo = record.getStr("ORDERNO");//发货单号
-
- String OUTWAREHOUSE = record.getStr("OUTWAREHOUSE");//工厂名称
-
-
- String WAREHOUSEID = record.getStr("WAREHOUSEID");//工厂ID
-
-
- Date Deliverytime = record.getDate("DELIVERYTIME");//出库时间
-
- String caseCode = record.getStr("CASECODE");//箱码
-
- String palletCode = record.getStr("PALLETCODE");//垛码
-
-
- String PRODUCTNAME = record.getStr("PRODUCTNAME");//产品名称
-
-
-
- String CUSTOMERNAME = record.getStr("CUSTOMERNAME");//客户姓名
-
- String SKUNAME = record.getStr("SKUNAME");//SKU名称
-
- String LICENSEPLATE = record.getStr("LICENSEPLATE");//车牌号
-
- String OUTWAREHOUSENO = record.getStr("OUTWAREHOUSENO");//工厂编号
-
- String SKUNO = record.getStr("SKUNO");//sku编号
-
- String OPERATEUSER = record.getStr("OPERATEUSER");//操作人
-
- String PRODUCTNO = record.getStr("PRODUCTNO");//产品编号
-
- String CUSTOMERNO = record.getStr("CUSTOMERNO");//客户编号
-
- Record info = new Record();
-
- info.set("OrderNo", orderNo).set("OutWarehouse", OUTWAREHOUSE).set("WarehouseID", WAREHOUSEID)
-
- .set("DeliveryTime", Deliverytime).set("CaseCode", caseCode).set("PalletCode", palletCode)
-
- .set("ProductName", PRODUCTNAME).set("CustomerName", CUSTOMERNAME).set("SKUName", SKUNAME)
-
-
- .set("LicensePlate", LICENSEPLATE).set("OutWarehouseNo", OUTWAREHOUSENO).set("SKUNo", SKUNO)
-
- .set("OperateUser", OPERATEUSER).set("ProductNo", PRODUCTNO).set("CustomerNo", CUSTOMERNO);
-
-
- list.add(info);
-
- }
- WxUtil.batchSaveIgnore("deliveryorders", list, "");
- }
- Log.info("执行同步数据em:完成");
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- isEmRunning = false;
- }
-
-
- }
- private static String key = "wYG(nx%Xlc7vb%Ss1=2L#JZ*gSk^WXuV";
- private boolean checksign(String code, String time, String sign) {
- String str = time+key;
- String md5 = MD5Utils.MD5(str).toLowerCase();
- return md5.equals(sign);
- }
- }
|