1.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <welcome-file-list>
        <welcome-file>loginPage.action</welcome-file>
    </welcome-file-list>
    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>JspSupportServlet</servlet-name>
        <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet>
        <servlet-name>CXFWS</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>2</load-on-startup>    
    </servlet>
    
    <servlet-mapping>
        <servlet-name>CXFWS</servlet-name>
         <!--这里路径最重为http://localhost:8080/toms/WS/-->
        <url-pattern>/WS/*</url-pattern>
    </servlet-mapping>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <!-- sitemesh相关配置 -->
    <filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- struts2升级后配置 -->
    <filter>
        <filter-name>struts-prepare</filter-name>
        <filter-class>cn.tcl.strutsext.MyStrutsPrepareFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts-prepare</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>struts-execute</filter-name>
    <!--<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> -->
        <filter-class>cn.tcl.strutsext.MyStrutsExcuteFilter</filter-class>    
    </filter>
    <filter-mapping>
        <filter-name>struts-execute</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- Session Timeout 监听 -->
    <listener>
        <listener-class>cn.tcl.common.SessionMonitor</listener-class>
    </listener>
    <!-- 配置Session失效时间时间(单位:分钟) -->
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>

2.spring.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="
               http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/jaxws 
            http://cxf.apache.org/schemas/jaxws.xsd">
      
    <import resource="classpath:META-INF/cxf/cxf.xml"/>  
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    
        
    <jaxws:endpoint id="SaleWS" implementor="cn.tcl.platform.ws.service.impl.ISaleServiceImpl"
    address="/SaleWS"/>
    

</beans>

3.服务接口实现

package cn.tcl.platform.ws.service.impl;


import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import cn.tcl.common.WebPageUtil;
import cn.tcl.platform.customer.dao.ICustomerDao;
import cn.tcl.platform.customer.vo.Customer;
import cn.tcl.platform.modelmap.dao.IModelMapDao;
import cn.tcl.platform.modelmap.vo.ModelMap;
import cn.tcl.platform.sale.dao.ISaleDao;
import cn.tcl.platform.sale.vo.Sale;
import cn.tcl.platform.shop.dao.IShopDao;
import cn.tcl.platform.shop.vo.Shop;
import cn.tcl.platform.ws.dao.DMXProductDao;
import cn.tcl.platform.ws.dao.DMXShopDao;
import cn.tcl.platform.ws.dao.SaleDao;
import cn.tcl.platform.ws.service.ISaleService;
import cn.tcl.platform.ws.vo.DMXProduct;
import cn.tcl.platform.ws.vo.DMXShop;
import cn.tcl.platform.ws.vo.SaleReq;

@WebService(endpointInterface="cn.tcl.platform.ws.service.ISaleService")
public class ISaleServiceImpl implements ISaleService {
    
    protected Logger log = Logger.getLogger(this.getClass());
        
    @Autowired
    private SaleDao saleDaoWs;
    
    @Autowired
    private IShopDao shopDao;
    
    @Autowired
    private DMXShopDao dmxShopDao;
    
    @Autowired
    private ICustomerDao customerDao;
    
    @Autowired
    private DMXProductDao dmxProductDao;
    
    @Autowired
    private IModelMapDao modelmapDao;
            

    @Override
    public String InputSaleData(List<SaleReq> saledataList) throws Exception {
        // TODO Auto-generated method stub
        log.info("invoke service Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("read InputSaleData Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        //越南分公司的partyId
        String partyId="19";
        //世界电子渠道名称
        //String customerName="CAO PHONG";
        String customerName="DMX";
        List<Customer> clst=null;
        //验证世界电子这个渠道是否维护
        clst=customerDao.getCustomerByName(customerName);
        if(clst==null ||clst.size()==0)
        {
            log.info("the customer named '"+customerName+"' is unmaintened in the system");
            return "the customer named 'CAO PHONG' is unmaintened in the system";
        }
        //查询渠道id
        Map<String,SaleReq> saledatamap = new HashMap<String,SaleReq>();
        //数据不规范的集合
        List<SaleReq> incorrectmodelLst=new LinkedList<SaleReq>();
        List<SaleReq> incorrectshopLst =new LinkedList<SaleReq>();
        List<SaleReq> incorrectsodateLst =new LinkedList<SaleReq>();
        //遍历输入数据列表
        SaleReq inputreq=null;
        SaleReq storereq=null;
        int count=0;
        String key=null;
        log.info("InputSaleData  Size:"+saledataList.size());
        if(saledataList==null||saledataList.size()==0)
        {
            return "error,there is no data";
        }
        if(saledataList.size()>1000)
        {
            return "there is too much data,the most amount is 1000";
        }
        log.info("traverse InputData Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        for(int i=0;i<saledataList.size();i++)
        {
            inputreq=saledataList.get(i);
            //判断是否填写有model
            if(inputreq.getModel()==null||inputreq.getModel()=="")
            {
                incorrectmodelLst.add(inputreq);
                continue;
            }
            //判断是否填写有shopName
            if(inputreq.getShopName()==null||inputreq.getModel()=="")
            {
                incorrectshopLst.add(inputreq);
                continue;
            }
            //判断是否填写有销售日期
            if(inputreq.getSoDate()==null)
            {
                incorrectsodateLst.add(inputreq);
                continue;
            }
            //处理日期格式
            key=inputreq.getModel()+inputreq.getShopName()+WebPageUtil.dateToStr(inputreq.getSoDate());
            count=inputreq.getCount()!=0?inputreq.getCount():1;
            if(saledatamap.containsKey(key))
            {
                storereq=saledatamap.get(key);            
                storereq.setCount(storereq.getCount()+count);
                saledatamap.put(key, storereq);
            }
            else
            {
                inputreq.setCount(count);
                saledatamap.put(key, inputreq);
            };
        }
        log.info("traverse InputData End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        //需要添加销售数据纪录的集合
        List<Sale> saledataAdd=new LinkedList<Sale>();
        //需要更新销售数据纪录的集合
        List<Sale> saledataUpdate=new LinkedList<Sale>();
        //门店不存在的集合
        List<DMXShop> lackdmxShops=new LinkedList<DMXShop>();
        //产品型号不存在的集合
        //Map<String,SaleReq> UnmaintainedModels=new HashMap<String,SaleReq>();
        List<DMXProduct> lackdmxProduct=new LinkedList<DMXProduct>();
        //临时对象
        Sale sale=null;
        DMXShop lackShop=null;
        DMXProduct lackProduct=null;
        storereq=null;
        List<Shop> solst=null;
        List<ModelMap> mlst=null;
        List<DMXShop> dshoplst=null;
        List<DMXProduct> dplst=null;
        StringBuilder remarkSb=new StringBuilder();
        log.info("traversed data size:"+saledatamap.size());
        log.info("traverse and classification InputData Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        for(Map.Entry<String,SaleReq> entry:saledatamap.entrySet())
        {
            storereq=entry.getValue();
            solst=shopDao.getShopBySNameAndCName(storereq.getShopName(), customerName);
            mlst=modelmapDao.getModelMapByBModel(storereq.getModel());
            if(solst==null||solst.size()==0||mlst==null || mlst.size()==0)
            {
                //判断门店是否已维护
                if(solst==null || solst.size()==0)
                {            
                    dshoplst=dmxShopDao.GetShopByName(storereq.getShopName());
                    if(dshoplst==null || dshoplst.size()==0)
                    {
                        lackShop=new DMXShop();
                        //lackShop.ResetNull();
                        lackShop.setShopName(storereq.getShopName());
                        lackShop.setShopCode(storereq.getShopCode());
                        lackShop.setCtime(WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
                        lackdmxShops.add(lackShop);                
                    }
                    log.info("the shop named "+storereq.getShopName()+" is unmaintened !");            
                }
                //判断产品是否已经维护            
                if(mlst==null || mlst.size()==0)
                {
                    dplst=dmxProductDao.getDMXProductByModel(storereq.getModel());
                    if(dplst==null || dplst.size()==0)
                    {
                        lackProduct=new DMXProduct();
                        //lackProduct.ResetNull();
                        lackProduct.setModel(storereq.getModel());
                        lackProduct.setCtime(WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
                        lackdmxProduct.add(lackProduct);
                    }
                    log.info("the branch model named "+storereq.getModel()+" is unmaintened !");                
                }
                continue;
            }
            remarkSb.delete(0,remarkSb.length());
            sale=new Sale();
            //sale.ResetNull();
            sale.setShopId(solst.get(0).getShopId());
            sale.setDatadate(WebPageUtil.dateToStr(storereq.getSoDate()));
            sale.setModel(storereq.getModel());
            List<Sale> lst=saleDaoWs.selectSaleList(sale);
            //判断数据库中是否存在纪录(以shopId,Datadate,Model作为唯一性判断依据)
            if(lst==null||lst.size()==0)
            {
                sale.setQuantity(storereq.getCount());
                sale.setUserId("admin");
                if(mlst.get(0).getPrice()==0)
                {
                    log.info("the price of the branch model named "+storereq.getModel()+" is unmaintened !");
                }
                sale.setPrice((double)mlst.get(0).getPrice());
                sale.setCountry("19");
                sale.setAmount((double)mlst.get(0).getPrice()*storereq.getCount());
                sale.setCtime(WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
                if(storereq.getShopCode()!=null&&storereq.getShopCode().trim()!="")
                {
                    remarkSb.append("ShopCode:"+storereq.getShopCode()+";");
                }
                if(storereq.getConsumerName()!=null&&storereq.getConsumerName().trim()!="")
                {
                    remarkSb.append("CustomerName:"+storereq.getConsumerName()+";");
                }
                if(storereq.getPhoneNumber()!=null&&storereq.getPhoneNumber().trim()!="")
                {
                    remarkSb.append("PhoneNumber:"+storereq.getPhoneNumber()+";");
                }
                if(storereq.getSn()!=null&&storereq.getSn().trim()!="")
                {
                    remarkSb.append("SN:"+storereq.getSn()+";");
                }
                sale.setRemark(remarkSb.toString());
                //添加需要新增的销售数据记录
                saledataAdd.add(sale);
                continue;
            }
            sale.setSaleId(lst.get(0).getSaleId());
            count=lst.get(0).getQuantity();
            sale.setQuantity(storereq.getCount()+count);
            if(mlst.get(0).getPrice()==0)
            {
                log.info("the price of the branch model named "+storereq.getModel()+" is unmaintened !");
            }
            sale.setPrice((double)mlst.get(0).getPrice());
            sale.setCountry("19");
            if(lst.get(0).getAmount()==null)
            {
                sale.setAmount((double)mlst.get(0).getPrice()*storereq.getCount());
            }
            else
            {
                sale.setAmount(lst.get(0).getAmount()+mlst.get(0).getPrice()*storereq.getCount());
            }
            sale.setCtime(WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
            if(storereq.getShopCode()!=null&&storereq.getShopCode().trim()!="")
            {
                remarkSb.append("ShopCode:"+storereq.getShopCode()+";");
            }
            if(storereq.getConsumerName()!=null&&storereq.getConsumerName().trim()!="")
            {
                remarkSb.append("CustomerName:"+storereq.getConsumerName()+";");
            }
            if(storereq.getPhoneNumber()!=null&&storereq.getPhoneNumber().trim()!="")
            {
                remarkSb.append("PhoneNumber:"+storereq.getPhoneNumber()+";");
            }
            if(storereq.getSn()!=null&&storereq.getSn().trim()!="")
            {
                remarkSb.append("SN:"+storereq.getSn()+";");
            }
            sale.setRemark(remarkSb.toString());
            //添加需要更新的销售数据记录
            saledataUpdate.add(sale);
        } 
        log.info("traverse and classification InputData End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("Add SaleData into DB Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("Add SaleData Size:"+saledataAdd.size());
        if(saledataAdd !=null && saledataAdd.size()>0)
        {
            saleDaoWs.InsertSaleDataBatch(saledataAdd);
        }
        log.info("Add SaleData into DB End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        //更新需修改数据至数据库
        log.info("Update SaleData into DB Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("Add saledataUpdate Size:"+saledataUpdate.size());
        if(saledataUpdate !=null && saledataUpdate.size()>0)
        {
            saleDaoWs.UpdateSaleDataBatch(saledataUpdate);
        }
        log.info("Update SaleData into DB End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        //Log纪录不存在的门店,建数据库表存储起来
        log.info("Add DMX Lack Shop Data into DB Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("Add lackdmxShops Size:"+lackdmxShops.size());
        if(lackdmxShops !=null&&lackdmxShops.size()>0)
        {
            dmxShopDao.InsertUnMaintainedShopBatch(lackdmxShops);
        }
        log.info("Add DMX Lack Shop Data into DB End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        //log纪录不存在的model,并存入数据库
        log.info("Add DMX Lack Model Data into DB Start time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        if(lackdmxProduct!=null&&lackdmxProduct.size()>0)
        {
            dmxProductDao.InsertUnmaintenedModel(lackdmxProduct);
        }
        log.info("Add DMX Lack Model Data into DB End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        log.info("invoke service End time:"+WebPageUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
        return "success";
    }

}

4.客户端访问wsdl

new-->other --webServiceClient

 

posted on 2017-12-15 15:21  Yusco  阅读(385)  评论(0编辑  收藏  举报