From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:44:19 +0800 Subject: [PATCH] 删除 --- src/main/java/com/gk/firework/Scheduls/DL/ReportOrderTask.java | 382 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 382 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Scheduls/DL/ReportOrderTask.java b/src/main/java/com/gk/firework/Scheduls/DL/ReportOrderTask.java new file mode 100644 index 0000000..6d00523 --- /dev/null +++ b/src/main/java/com/gk/firework/Scheduls/DL/ReportOrderTask.java @@ -0,0 +1,382 @@ +package com.gk.firework.Scheduls.DL; + +import com.alibaba.fastjson.JSONObject; +import com.gk.firework.Domain.CustomerInfo; +import com.gk.firework.Domain.Enterprise; +import com.gk.firework.Domain.SaleOrderDetailInfo; +import com.gk.firework.Domain.SaleOrderInfo; +import com.gk.firework.Domain.Utils.BeanUtils; +import com.gk.firework.Domain.Utils.HttpUtils; +import com.gk.firework.Domain.Utils.StringUtils; +import com.gk.firework.Service.*; +import org.apache.axis.client.Call; +import org.apache.axis.client.Service; +import org.apache.axis.encoding.XMLType; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.io.IOException; +import java.util.*; + +/** + * @author : jingjy + * @date : 2022/1/26 17:15 + */ +@Configuration +@EnableScheduling +//@ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true") +public class ReportOrderTask { + private Logger logger = LogManager.getLogger(com.gk.firework.Scheduls.WarningTask.StockWarnTask.class); + private static final String url = "http://118.190.117.180:8888"; + @Value("${com.gk.firework.schedules.single.switch}") + private Boolean switchBtn; + @Autowired + EnterpriseService enterpriseService; + @Autowired + SaleOrderService saleOrderService; + @Autowired + SaleOrderDetailService saleOrderDetailService; + @Autowired + StockService stockService; + @Autowired + CustomerService customerService; + + //@Scheduled(cron = "0 0 2 * * ?") //每天凌晨两点执行一次 + @Scheduled(cron = "0/10 * * * * ?") //每隔10秒执行一次 + private void reportOrder() { + if (!switchBtn) return; + //1.获取需要上传的企业信息 + List<Enterprise>enterprises = enterpriseService.selectSaleEnterpriseForUpload(); + for (Enterprise enterprise : enterprises){ + if (StringUtils.isBlank(enterprise.getDlcompanycode()) || StringUtils.isBlank(enterprise.getDeviceid())){ + continue; + } + + //2.获取握手密码 + DlResult result = getHandshake(enterprise); + if (result == null || StringUtils.isBlank(result.getFwdz()) || StringUtils.isBlank(result.getWsmm())){ + continue; + } + //获取企业未上传销售数据 + List<SaleOrderInfo> orderInfos = saleOrderService.getWaitUploadOrderByEnterprise(enterprise); + if (orderInfos == null || orderInfos.size() == 0){ + continue; + } + + uploadOrders(orderInfos,result,enterprise); + } + + //3.上传数据 + //4.处理上传结果 + + } + + private DlResult getHandshake(Enterprise enterprise){ + String respnse = null; + DlResult result = new DlResult(); + Map params = new HashMap();//请求参数 + params.put("sbid", enterprise.getDeviceid());// + params.put("dwdm", enterprise.getDlcompanycode());// + + try { + respnse = HttpUtils.net(url+"/lsjk/Sbrz", params, "GET"); + JSONObject jsonResult = JSONObject.parseObject(respnse); + String wsmm = jsonResult.getString("wsmm"); + String fwdz = jsonResult.getString("fwdz"); + result.setFwdz(fwdz); + result.setWsmm(wsmm); + return result; + }catch (Exception e){ + return result; + } + } + + public void uploadOrders(List<SaleOrderInfo>orderInfos, DlResult result, Enterprise enterprise){ + + String servicesUrl = url+result.getFwdz(); + for (SaleOrderInfo orderInfo : orderInfos){ + Service service = new Service(); + Call call = null; + /** + * <?xml version="1.0" encoding="GBK"?> + * <sb> + * <sjbs>YH</sjbs><!--数据标注 --> + * <jylx>XX</jylx><!-- 交易类型(03-运输入库、09-退货、10-零散销售) --> + * <sjscsj>20100630151617</sjscsj><!--数据生成时间(精确到秒) --> + * <dwdm>XXXX</dwdm><!--单位代码(和烟花系统确定对应关系) --> + * <cjsbid>XXXX</cjsbid ><!--条码采集设备ID(定长32,不足补0) --> + * <zjlx>1</zjlx><!--证件类型(1-身份证、2-其他) --> + * <zjhm>XXXX</zjhm><!--证件号码,定长18 --> + * <tms> + * <bh>XXX</bh><!--条码编号--> + * <sj>20100630151617</sj><!--采集时间(精确到秒)--> + * </tms> + * </sb> + */ + try { + List<SaleOrderDetailInfo> detailInfos = saleOrderDetailService.selectByOrderCode(orderInfo.getCode()); + CustomerInfo customerInfo = customerService.getById(orderInfo.getCustomer()); + String date = new DateTime(orderInfo.getCreatedat()).toString("yyyyMMddHHmmss"); + ReportEntity reportEntity = new ReportEntity(); + reportEntity.setSjbs("YH"); + reportEntity.setJylx("10"); + reportEntity.setSjscsj(date); + reportEntity.setDwdm(enterprise.getDlcompanycode()); + reportEntity.setCjsbid(enterprise.getDeviceid()); + reportEntity.setZjlx("1"); + reportEntity.setZjhm(customerInfo.getIdcardnum()); + + List<TmsEntity>tmsEntities = new ArrayList<>(); + for (SaleOrderDetailInfo detailInfo : detailInfos){ + TmsEntity tmsEntity = new TmsEntity(detailInfo.getDirectioncode(),date); + tmsEntities.add(tmsEntity); + } + reportEntity.setTms(tmsEntities); + String xml = BeanUtils.beanToXml(reportEntity,ReportEntity.class); + //String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sb><sjbs>YH</sjbs><jylx>03</jylx><sjscsj>20160203221055</sjscsj><dwdm>ADW000000008422</dwdm><cjsbid>ADW000000008422652722194006466</cjsbid><zjlx>1</zjlx><zjhm>220283198201021916</zjhm><tms><bh>11230I4WY0F62203824</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203819</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203822</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203826</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203820</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203823</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203818</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203817</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203821</bh><sj>20160114195153</sj></tms></sb>"; + BASE64Encoder encoder = new BASE64Encoder(); + //String str = encoder.encode(sb.toString().trim().getBytes("utf-8")); + String str = encoder.encode(xml.getBytes("UTF-8")); + String cjsbid = enterprise.getDeviceid();//设备ID + String dwdm = enterprise.getDlcompanycode();//单位代码 + String wsmm = result.getWsmm();//握手密码 + call = (Call) service.createCall(); + call.setTargetEndpointAddress(servicesUrl); + call.setTimeout(5 * 60 * 1000);// 超时设定5分钟抛出异常 + call.setOperationName("lssjsb");// 调用方法 + call.setReturnType(XMLType.XSD_STRING);// 指定返回类型 + call.addParameter("str", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 + call.addParameter("sbid", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 + call.addParameter("dwdm", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 + call.addParameter("wsmm", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 + String callResult = (String) call.invoke(new Object[] { str,cjsbid, dwdm,wsmm });// 调用服务并返回存在的对应数据 + BASE64Decoder decoder = new BASE64Decoder(); + String xmlCode = null; + try { + xmlCode = new String(decoder.decodeBuffer(callResult)); + DlReportResult reportResult = (DlReportResult) BeanUtils.xmlToBean(xmlCode,DlReportResult.class); + DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmss"); + DateTime dateTime = dateTimeFormatter.parseDateTime(reportResult.getSjscsj()); + Date uploadAt = dateTime.toDate(); + orderInfo.setIsupload((byte)1); + orderInfo.setUploadat(uploadAt); + orderInfo.setReturncode(reportResult.getFhlx()); + } catch (IOException e1) { + e1.printStackTrace(); + orderInfo.setReturncode("999"); + orderInfo.setIsupload((byte)2); + } + } catch (Exception e) { + System.out.println("调用webservice失败!" + e.getMessage()); + orderInfo.setReturncode("998"); + orderInfo.setIsupload((byte)2); + } + saleOrderService.updateById(orderInfo); + } + + + } +} + +class DlResult{ + private String wsmm; + private String fwdz; + + DlResult() { + } + + public DlResult(String wsmm, String fwdz) { + this.wsmm = wsmm; + this.fwdz = fwdz; + } + + public String getWsmm() { + return wsmm; + } + + public void setWsmm(String wsmm) { + this.wsmm = wsmm; + } + + public String getFwdz() { + return fwdz; + } + + public void setFwdz(String fwdz) { + this.fwdz = fwdz; + } + +} + +@XmlRootElement(name="fh") +class ReportEntity{ + private String sjbs; + private String jylx; + private String sjscsj; + private String dwdm; + private String cjsbid; + private String zjlx; + private String zjhm; + private List<TmsEntity> tms; + + public String getSjbs() { + return sjbs; + } + + public void setSjbs(String sjbs) { + this.sjbs = sjbs; + } + + public String getJylx() { + return jylx; + } + + public void setJylx(String jylx) { + this.jylx = jylx; + } + + public String getSjscsj() { + return sjscsj; + } + + public void setSjscsj(String sjscsj) { + this.sjscsj = sjscsj; + } + + public String getDwdm() { + return dwdm; + } + + public void setDwdm(String dwdm) { + this.dwdm = dwdm; + } + + public String getCjsbid() { + return cjsbid; + } + + public void setCjsbid(String cjsbid) { + this.cjsbid = cjsbid; + } + + public String getZjlx() { + return zjlx; + } + + public void setZjlx(String zjlx) { + this.zjlx = zjlx; + } + + public String getZjhm() { + return zjhm; + } + + public void setZjhm(String zjhm) { + this.zjhm = zjhm; + } + + @XmlElement(name="tms") + public List<TmsEntity> getTms() { + return tms; + } + + public void setTms(List<TmsEntity> tms) { + this.tms = tms; + } +} + +@XmlRootElement(name="tms") +class TmsEntity{ + private String bh; + + private String sj; + + public String getBh() { + return bh; + } + + public void setBh(String bh) { + this.bh = bh; + } + + public TmsEntity() { + } + + public TmsEntity(String bh, String sj) { + this.bh = bh; + this.sj = sj; + } + + public String getSj() { + return sj; + } + + public void setSj(String sj) { + this.sj = sj; + } +} + +@XmlRootElement(name="fh") +class DlReportResult{ + private String sjbs; + + private String cjsbid; + + private String sjscsj; + + private String fhlx; + + private String fhsj; + + public String getSjbs() { + return sjbs; + } + + public void setSjbs(String sjbs) { + this.sjbs = sjbs; + } + + public String getCjsbid() { + return cjsbid; + } + + public void setCjsbid(String cjsbid) { + this.cjsbid = cjsbid; + } + + public String getSjscsj() { + return sjscsj; + } + + public void setSjscsj(String sjscsj) { + this.sjscsj = sjscsj; + } + + public String getFhlx() { + return fhlx; + } + + public void setFhlx(String fhlx) { + this.fhlx = fhlx; + } + + public String getFhsj() { + return fhsj; + } + + public void setFhsj(String fhsj) { + this.fhsj = fhsj; + } +} -- Gitblit v1.9.2