package com.yc.open.jinwu.service; import com.yc.action.grid.GridUtils; import com.yc.factory.FactoryBean; import com.yc.open.init.Task; import com.yc.open.jinwu.entity.*; import com.yc.open.utils.ApiUtils; import com.yc.service.BaseService; import com.yc.utils.DateUtil; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Service; import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; /** * 金屋接口 */ @Service public class JinWuImpl extends BaseService implements JinWuIfc { final Logger log = LoggerFactory.getLogger(this.getClass()); @Override public List getT640210() { List results=null; Map currMap=null; String sql=" set nocount on \n"+ " select \n" + " a.docCode,--单号\n" + " a.docDate,--单据日期\n" + " a.preSendDate,--送货日期\n" + " a.companyID,--公司\n" + " a.companyName,--公司名称\n" + " a.ccCode,--部门编号\n" + " a.ccName,--部门名称\n" + " a.servicetype,--派工方式\n" + " a.degreeEmergency,--紧急程度\n" + " a.propertyAddress,--送货地址\n" + " a.cltCode,--客户编号\n" + " a.cltName,--客户姓名\n" + " a.tel,--电话\n" + " a.repairMemo,a.sellerCode,a.sellerName,--服务需求\n" + " a.serviceprovidercode,--售后服务商\n" + " a.tel2,--电话2\n" + " a.roadfee,--路费\n" + " a.areaname,--区域\n" + " a.bespeakDate,--预约上门时间\n" + " a.weixiuWay,--质保范围\n" + " b.docItem,--行号\n" + " b.rowid,--rowid\n" + " b.refcodeitem,--引用单号\n" + " b.matCode,--物料型号\n" + " b.matName,--物料名称\n" + " b.special,--规格\n" + " b.brand,--品牌\n" + " b.uom,--单位\n" + " b.digit,--数量\n" + " b.cv1,--测量单号\n" + " b.stCode,--仓库编码\n" + " b.stName,--仓库名称\n" + " b.itemMemo,--备注\n"+ " d.MatGroupname \n"+ " from t640210H a join t640210D b on a.DocCode=b.DocCode " + " join t110503 d on d.MatCode=b.matcode "+ " where isnull(b.PushStatus,0)=0 and a.DocStatus=20 " ; try { List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { results=new ArrayList<>(); for(Map map : list) { currMap=map; PostDataEntity postDataEntity=new PostDataEntity(); postDataEntity.setNo(GridUtils.prossRowSetDataType_String(map, "docCode")+"-"+ GridUtils.prossRowSetDataType_Int(map, "docItem")); postDataEntity.setBuyOrder(GridUtils.prossRowSetDataType_String(map, "sellerName")+ GridUtils.prossRowSetDataType_String(map, "cltCode")); postDataEntity.setName(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setPhone(GridUtils.prossRowSetDataType_String(map, "tel")+ ((!"".equals(GridUtils.prossRowSetDataType_String(map, "tel2")))?","+GridUtils.prossRowSetDataType_String(map, "tel2"):"")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "areaname")+GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setAgent(GridUtils.prossRowSetDataType_String(map, "ccCode")+"_SZJW"); postDataEntity.setBrand(GridUtils.prossRowSetDataType_String(map, "brand")); postDataEntity.setCategory(GridUtils.prossRowSetDataType_String(map, "MatGroupname")); postDataEntity.setNum((int)GridUtils.prossRowSetDataType_Float(map, "digit")); postDataEntity.setModel(GridUtils.prossRowSetDataType_String(map, "matCode")); postDataEntity.setNote(GridUtils.prossRowSetDataType_String(map, "preSendDate")+"-"+ GridUtils.prossRowSetDataType_String(map, "servicetype")+"-"+ GridUtils.prossRowSetDataType_String(map, "repairMemo")+"-"+ GridUtils.prossRowSetDataType_String(map, "itemMemo") ); postDataEntity.setFormid(640210); postDataEntity.setDocCode(GridUtils.prossRowSetDataType_String(map, "docCode")); postDataEntity.setRowid(GridUtils.prossRowSetDataType_String(map, "rowid")); postDataEntity.setTimestamp(DateUtil.toDay().replace("-","").replace(":","").replaceAll(" ","")); getKeyByMD5(postDataEntity); postDataEntity.setMatCode(GridUtils.prossRowSetDataType_String(map, "matCode")); postDataEntity.setMatName(GridUtils.prossRowSetDataType_String(map, "matName")); postDataEntity.setDigit(GridUtils.prossRowSetDataType_Float(map, "digit")); postDataEntity.setSpecial(GridUtils.prossRowSetDataType_String(map, "special")); postDataEntity.setUom(GridUtils.prossRowSetDataType_String(map, "uom")); postDataEntity.setItemMemo(GridUtils.prossRowSetDataType_String(map, "itemMemo")); postDataEntity.setDocItem(GridUtils.prossRowSetDataType_Int(map, "docItem")); results.add(postDataEntity); } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640210,currMap,e); } } return results; } @Override public List getT640210V2(String docCode) { List results=null; Map currMap=null; String sql=" set nocount on \n"+ " select \n" + " a.docCode,--单号\n" + " a.docDate,--单据日期\n" + " a.preSendDate,--送货日期\n" + " a.companyID,--公司\n" + " a.companyName,--公司名称\n" + " a.ccCode,--部门编号\n" + " a.ccName,--部门名称\n" + " a.servicetype,--派工方式\n" + " a.degreeEmergency,--紧急程度\n" + " a.propertyAddress,--送货地址\n" + " a.cltCode,--客户编号\n" + " a.cltName,--客户姓名\n" + " a.tel,--电话\n" + " a.repairMemo,a.sellerCode,a.sellerName,a.servicetype,a.ProvinceName,a.CityName,a.DistrictName, --服务需求\n" + " a.serviceprovidercode,--售后服务商\n" + " a.tel2,--电话2\n" + " a.roadfee,--路费\n" + " a.areaname,--区域\n" + " a.bespeakDate,--预约上门时间\n" + " a.weixiuWay,--质保范围\n" + " b.docItem,--行号\n" + " b.rowid,--rowid\n" + " b.refcodeitem,--引用单号\n" + " b.matCode,--物料型号\n" + " b.matName,--物料名称\n" + " b.special,--规格\n" + " b.brand,--品牌\n" + " b.uom,--单位\n" + " b.digit,--数量\n" + " b.cv1,--测量单号\n" + " b.stCode,--仓库编码\n" + " b.stName,--仓库名称\n" + " b.itemMemo,--备注\n"+ " a.traderTag,\n"+ " d.MatGroupname,b.PushStatus2,c.telephone,isnull(d.SalesPrice,0)*isnull(d.AnweiDiscount,0) as price \n"+ " from t640210H a join t640210D b on a.DocCode=b.DocCode " + " join t110503 d on d.MatCode=b.matcode "+ " join v180205 c on c.hrcode=a.SellerCode \n"+ " where a.DocStatus=20 "; if(docCode!=null){ sql+=" and b.docCode='"+docCode+"' and (isnull(b.PushStatus2,0)=0 or b.PushStatus2=-1 ) \n"; }else { sql+=" and isnull(b.PushStatus2,0)=0 "; } sql+=" order by b.Doccode asc \n"; try { //log.info("640210sql>>"+sql); List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { results=new ArrayList<>(); //过滤相同单号,取得以单号为key的集合 String currDoccode=null; for(Map map : list) { //第一次或不是相同单号 if(currDoccode==null||!currDoccode.equalsIgnoreCase(GridUtils.prossRowSetDataType_String(map, "docCode"))) { PostDataEntityV2 postDataEntity = new PostDataEntityV2(); currMap = map; currDoccode = GridUtils.prossRowSetDataType_String(map, "docCode"); postDataEntity.setContractBillCode(GridUtils.prossRowSetDataType_String(map, "docCode")); String date=GridUtils.prossRowSetDataType_String(map, "PreSendDate"); if(StringUtils.isNotBlank(date)) { postDataEntity.setContractBillDate(DateUtil.formatDate(date, "yyyy-MM-dd")); } String dateStr=GridUtils.prossRowSetDataType_String(map, "docDate"); if(StringUtils.isNotBlank(dateStr)) { postDataEntity.setExpectDate(DatePlus(DateUtil.formatDate(dateStr, "yyyy-MM-dd"),2)); } postDataEntity.setBillSourceName("门店下单"); postDataEntity.setProvince(GridUtils.prossRowSetDataType_String(map, "ProvinceName")); postDataEntity.setCity(GridUtils.prossRowSetDataType_String(map, "CityName")); postDataEntity.setArea(GridUtils.prossRowSetDataType_String(map, "DistrictName")); postDataEntity.setContractShop(GridUtils.prossRowSetDataType_String(map, "ccName")); postDataEntity.setTraderCode(GridUtils.prossRowSetDataType_String(map, "cltCode")); postDataEntity.setTraderName(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setContactor(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setMobilePhone(GridUtils.prossRowSetDataType_String(map, "tel")); postDataEntity.setTel(GridUtils.prossRowSetDataType_String(map, "tel2")); postDataEntity.setCompanyName(GridUtils.prossRowSetDataType_String(map, "companyName")); postDataEntity.setTraderTag(GridUtils.prossRowSetDataType_String(map, "traderTag")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "areaname") + "-" + GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setRemark(GridUtils.prossRowSetDataType_String(map, "RepairMemo")); postDataEntity.setNewUserName(GridUtils.prossRowSetDataType_String(map, "SellerName")); postDataEntity.setNewUserMobilePhone(GridUtils.prossRowSetDataType_String(map, "telephone")); //----明细 List ronYaEntityV2List = new ArrayList<>(); list.stream().forEach(x -> { if(postDataEntity.getContractBillCode().equalsIgnoreCase(x.get("docCode") + "")) { DetailEntity ronYaEntityV2 = new DetailEntity(); ronYaEntityV2.setRepairTypeName(GridUtils.prossRowSetDataType_String(x, "servicetype")); ronYaEntityV2.setWarranty(GridUtils.prossRowSetDataType_String(x, "weixiuWay")); ronYaEntityV2.setBrandName(GridUtils.prossRowSetDataType_String(x, "brand")); ronYaEntityV2.setGoodsTypeName(GridUtils.prossRowSetDataType_String(x, "MatGroupname")); ronYaEntityV2.setRepairGDSpecs(GridUtils.prossRowSetDataType_String(x, "matCode")); ronYaEntityV2.setQuantity(GridUtils.prossRowSetDataType_String(x, "digit")); ronYaEntityV2.setRemark(GridUtils.prossRowSetDataType_String(x, "ItemMemo")); ronYaEntityV2.setFormid(640210); ronYaEntityV2.setRowid(GridUtils.prossRowSetDataType_String(x, "rowid")); ronYaEntityV2.setDocCode(GridUtils.prossRowSetDataType_String(x, "docCode")); ronYaEntityV2.setMatCode(GridUtils.prossRowSetDataType_String(x, "matCode")); ronYaEntityV2.setMatName(GridUtils.prossRowSetDataType_String(x, "matName")); ronYaEntityV2.setDigit(GridUtils.prossRowSetDataType_Float(x, "digit")); ronYaEntityV2.setSpecial(GridUtils.prossRowSetDataType_String(x, "special")); ronYaEntityV2.setUom(GridUtils.prossRowSetDataType_String(x, "uom")); ronYaEntityV2.setItemMemo(GridUtils.prossRowSetDataType_String(x, "ItemMemo")); ronYaEntityV2.setPushStatus(GridUtils.prossRowSetDataType_Int(x, "PushStatus2")); ronYaEntityV2.setDocItem(GridUtils.prossRowSetDataType_Int(x, "docItem")); ronYaEntityV2.setPrice(GridUtils.prossRowSetDataType_Double(x, "price")); ronYaEntityV2List.add(ronYaEntityV2); } }); postDataEntity.setDetails(ronYaEntityV2List); results.add(postDataEntity); } } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640210,currMap,e); } } return results; } @Override public PostDataEntityV3 getT640210V3(String docCode,Task task) { PostDataEntityV3 postDataEntity=null; Map currMap=null; String sql=" set nocount on \n"+ " select \n" + " a.docCode, --单号\n" + " convert(varchar(10),a.docDate,120) as docDate,--单据日期\n" + " convert(varchar(10),a.preSendDate,120) as preSendDate,--单据日期\n" + " a.companyID,--公司\n" + " a.companyName,--公司名称\n" + " a.ccCode,--部门编号\n" + " a.ccName,--部门名称\n" + " a.servicetype,--派工方式\n" + " a.degreeEmergency,--紧急程度\n" + " a.propertyAddress,--送货地址\n" + " a.cltCode,--客户编号\n" + " a.cltName,--客户姓名\n" + " a.tel,--电话\n" + " a.RepairMemo,a.sellerCode,a.sellerName,a.servicetype, a.ProvinceName,a.CityName,a.DistrictName,a.ShopGuideName,\n" + " b.docItem,--行号\n" + " b.rowid,--rowid\n" + " b.refcodeitem,--引用单号\n" + " b.matCode,--物料型号\n" + " b.matName,--物料名称\n" + " b.special,--规格\n" + " b.brand,--品牌\n" + " b.uom,--单位\n" + " b.digit,--数量\n" + " b.cv1,--测量单号\n" + " b.stCode,--仓库编码\n" + " b.stName,--仓库名称\n" + " b.itemMemo,--备注\n"+ " e.ProductType ,b.YonYa_PushStatus \n" + //" ,isnull(d.SalesPrice,0)*0.6 as price \n"+ " from t640210H a join t640210D b on a.DocCode=b.DocCode " + //" join t110503 d on d.MatCode=b.matcode "+ " join t110501 e on e.MatGroup=b.MatGroup "+ " where b.docCode='"+docCode+"' and isnull(a.isActivePush,0) = 0 and (isnull(b.YonYa_PushStatus,0)=0 or b.YonYa_PushStatus=-1 ) \n"; try { //log.info("640210sql>>"+sql); List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { postDataEntity = new PostDataEntityV3(); List ronYaEntityV3List = new ArrayList<>(); int index = 0; for (Map map : list) { //第一次或不是相同单号 if (index == 0) { currMap = map; String dateStr = GridUtils.prossRowSetDataType_String(map, "docDate"); if (StringUtils.isNotBlank(dateStr)) { postDataEntity.setExpectDate(DatePlus(dateStr, 2)); } postDataEntity.setProvince(GridUtils.prossRowSetDataType_String(map, "ProvinceName")); postDataEntity.setCity(GridUtils.prossRowSetDataType_String(map, "CityName")); postDataEntity.setArea(GridUtils.prossRowSetDataType_String(map, "DistrictName")); postDataEntity.setContactor(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setTel(GridUtils.prossRowSetDataType_String(map, "tel")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setRemark(GridUtils.prossRowSetDataType_String(map, "RepairMemo")); postDataEntity.setBillCode(docCode); postDataEntity.setContractShop(GridUtils.prossRowSetDataType_String(map, "ccName")); postDataEntity.setEmpName(GridUtils.prossRowSetDataType_String(map, "ShopGuideName")); } index++; //----明细 DetailEntityV3 ronYaEntityV3 = new DetailEntityV3(); ronYaEntityV3.setRepairType(GridUtils.prossRowSetDataType_String(map, "servicetype")); ronYaEntityV3.setBrand(GridUtils.prossRowSetDataType_String(map, "brand")); ronYaEntityV3.setGoodsType(GridUtils.prossRowSetDataType_String(map, "ProductType")); ronYaEntityV3.setSpecs(GridUtils.prossRowSetDataType_String(map, "matCode")); ronYaEntityV3.setQuantity(GridUtils.prossRowSetDataType_String(map, "digit")); ronYaEntityV3.setMemo(GridUtils.prossRowSetDataType_String(map, "ItemMemo")); ronYaEntityV3.setFormid(640210); ronYaEntityV3.setRowid(GridUtils.prossRowSetDataType_String(map, "rowid")); ronYaEntityV3.setDocCode(GridUtils.prossRowSetDataType_String(map, "docCode")); ronYaEntityV3.setMatCode(GridUtils.prossRowSetDataType_String(map, "matCode")); ronYaEntityV3.setMatName(GridUtils.prossRowSetDataType_String(map, "matName")); ronYaEntityV3.setDigit(GridUtils.prossRowSetDataType_Float(map, "digit")); ronYaEntityV3.setSpecial(GridUtils.prossRowSetDataType_String(map, "special")); ronYaEntityV3.setUom(GridUtils.prossRowSetDataType_String(map, "uom")); ronYaEntityV3.setItemMemo(GridUtils.prossRowSetDataType_String(map, "ItemMemo")); ronYaEntityV3.setPushStatus(GridUtils.prossRowSetDataType_Int(map, "YonYa_PushStatus")); ronYaEntityV3.setDocItem(GridUtils.prossRowSetDataType_Int(map, "docItem")); ronYaEntityV3.setPrice(GridUtils.prossRowSetDataType_Double(map, "price")); ronYaEntityV3List.add(ronYaEntityV3); postDataEntity.setItems(ronYaEntityV3List); } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640210,currMap,e); } } return postDataEntity; } @Override public PostDataEntityV3 getT640109V3(String docCode, Task task) { //测量单 PostDataEntityV3 postDataEntity=null; Map currMap=null; String sql=" set nocount on "+ " select \n" + " convert(varchar(10),b.docDate,120) as docDate,--单据日期\n" + "b.CompanyName, \n" + " convert(varchar(10),b.preSendDate,120) as preSendDate,\n" + " b.factdate, \n" + " b.docType, \n" + " b.cltCode, \n" + " b.cltName, \n" + " b.meterName, \n" + " b.tel, b.tel2,b.areaname, \n" + " b.propertyAddress, \n" + " b.sellerName, \n" + " b.shopGuideName, \n" + " b.shejiCode, \n" + " b.shejiName, \n" + " b.hDMemo, \n" + " b.attachmentDate, \n" + " b.approvalMemo, \n" + " b.approvalMemo2, \n" + " b.approvalMemo3, \n" + " b.approvalMemo4,b.docStatus, b.docStatusName,b.refCode,b.EnterName,b.ccCode,b.ccName,b.ProvinceName,b.CityName,b.DistrictName, \n" + " c.DocCode,c.rowid,c.docItem," + " c.uom,c.digit,c.ItemMemo,c.refcodeitem,c.refrowid,c.YonYa_PushStatus,c.brand,c.matCode,c.matName" + //",d.ProductType \n"+ " from t640109H b join t640109D c on b.doccode = c.doccode \n" + //" join t110501 d on d.MatGroup=c.MatGroup \n"+ //" join v180205 e on e.hrcode=b.SellerCode \n"+ " where c.docCode='"+docCode+"' and (isnull(c.YonYa_PushStatus,0)=0 or c.YonYa_PushStatus=-1 ) \n"; try { //log.info("640109sql>>"+sql); List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { postDataEntity=new PostDataEntityV3(); List ronYaEntityV3List = new ArrayList<>(); int index=0; for(Map map : list) { if(index==0) { currMap=map; String dateStr = GridUtils.prossRowSetDataType_String(map, "docDate"); if (StringUtils.isNotBlank(dateStr)) { postDataEntity.setExpectDate(DatePlus(dateStr, 2)); } postDataEntity.setProvince(GridUtils.prossRowSetDataType_String(map, "ProvinceName")); postDataEntity.setCity(GridUtils.prossRowSetDataType_String(map, "CityName")); postDataEntity.setArea(GridUtils.prossRowSetDataType_String(map, "DistrictName")); postDataEntity.setContactor(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setTel(GridUtils.prossRowSetDataType_String(map, "tel")+" "+GridUtils.prossRowSetDataType_String(map, "tel2")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setRemark(GridUtils.prossRowSetDataType_String(map, "hDMemo")); postDataEntity.setBillCode(docCode); postDataEntity.setContractShop(GridUtils.prossRowSetDataType_String(map, "ccName")); postDataEntity.setEmpName(GridUtils.prossRowSetDataType_String(map, "ShopGuideName")); } index++; //----明细 DetailEntityV3 ronYaEntityV3 = new DetailEntityV3(); ronYaEntityV3.setRepairType("测量"); ronYaEntityV3.setBrand(GridUtils.prossRowSetDataType_String(map, "brand")); //ronYaEntityV2.setGoodsType(GridUtils.prossRowSetDataType_String(map, "ProductType")); ronYaEntityV3.setSpecs(GridUtils.prossRowSetDataType_String(map, "matCode")); ronYaEntityV3.setQuantity(GridUtils.prossRowSetDataType_String(map, "digit")); ronYaEntityV3.setMemo(GridUtils.prossRowSetDataType_String(map, "ItemMemo")); ronYaEntityV3.setFormid(640109); ronYaEntityV3.setRowid(GridUtils.prossRowSetDataType_String(map, "rowid")); ronYaEntityV3.setDocCode(GridUtils.prossRowSetDataType_String(map, "docCode")); ronYaEntityV3.setMatCode(GridUtils.prossRowSetDataType_String(map, "matCode")); ronYaEntityV3.setMatName(GridUtils.prossRowSetDataType_String(map, "matName")); ronYaEntityV3.setDigit(GridUtils.prossRowSetDataType_Float(map, "digit")); ronYaEntityV3.setSpecial(GridUtils.prossRowSetDataType_String(map, "special")); ronYaEntityV3.setUom(GridUtils.prossRowSetDataType_String(map, "uom")); ronYaEntityV3.setItemMemo(GridUtils.prossRowSetDataType_String(map, "ItemMemo")); ronYaEntityV3.setPushStatus(GridUtils.prossRowSetDataType_Int(map, "YonYa_PushStatus")); ronYaEntityV3.setDocItem(GridUtils.prossRowSetDataType_Int(map, "docItem")); ronYaEntityV3List.add(ronYaEntityV3); postDataEntity.setItems(ronYaEntityV3List); } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640109,currMap,e); } } return postDataEntity; } /** * * @param dateStr --只能接收日期, * @param days * @return */ private String DatePlus(String dateStr,int days){ LocalDate date=null; try { date = LocalDate.parse(dateStr); }catch (Exception e){ //月份前面没有0 try { date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-M-dd")); }catch (Exception e1){ try { date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-M-d")); }catch (Exception e2){ try { date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-d")); }catch (Exception e3){ date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); } } } } return date.plusDays(days).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } private void getKeyByMD5(PostDataEntity postDataEntity) throws IOException { Map map= new org.apache.commons.beanutils.BeanMap(postDataEntity); String[] keys = map.keySet().toArray(new String[0]); Arrays.sort(keys); StringBuilder query = new StringBuilder(); int index=0; for (String key : keys) { if(key.equals("key")||key.equalsIgnoreCase("class")||map.get(key)==null) continue; Object value = map.get(key); if(index==0) { query.append(key).append("=").append(value); }else { query.append("&").append(key).append("=").append(value); } index++; } query.append("&"+ ConstantEnum.YONYA_MD5_Serct); //System.out.println("query:"+query.toString()); //log.info("query:"+query.toString()); byte[] bytes = ApiUtils.encryptMD5(query.toString()); String md5=ApiUtils.byte2hexByLowCase(bytes); //System.out.println("md5:"+md5); //log.info("md5:"+md5); postDataEntity.setKey(md5); } /** *把推送时查询sql出错信息写到日志表110562 * @param sql */ private void doErrorLog(int formid,Map map,Exception ex){ JinWuBaseService jinWuBaseService = (JinWuBaseService) FactoryBean.getBean("jinWuBaseService"); List list=new ArrayList<>(); //一个功能号只生成一条运行时出错日志 list.add(new T110562Entity(formid,GridUtils.prossRowSetDataType_String(map,"docCode"), GridUtils.prossRowSetDataType_Int(map,"docItem"), GridUtils.prossRowSetDataType_String(map,"rowid"), GridUtils.prossRowSetDataType_String(map,"matCode"),GridUtils.prossRowSetDataType_String(map,"matName"),"","",0,0,0,"","","sql出错",0,0,ex.getMessage().replaceAll("'","''"))); try { jinWuBaseService.doLogBy110562(list); } catch (Exception e) { e.printStackTrace(); } } @Override public List getT640109() { List results=null; Map currMap=null; String sql=" set nocount on "+ " select \n" + " b.docDate, \n" + " b.preSendDate, \n" + " b.factdate, \n" + " b.docType, \n" + " b.cltCode, \n" + " b.cltName, \n" + " b.meterName, \n" + " b.tel, b.tel2,b.areaname, \n" + " b.propertyAddress, \n" + " b.sellerName, \n" + " b.shopGuideName, \n" + " b.shejiCode, \n" + " b.shejiName, \n" + " b.hDMemo, \n" + " b.attachmentDate, \n" + " b.approvalMemo, \n" + " b.approvalMemo2, \n" + " b.approvalMemo3, \n" + " b.approvalMemo4,b.docStatus, b.docStatusName,b.refCode,b.EnterName,b.ccCode, \n" + " c.DocCode,c.rowid,c.docItem," + " c.uom,c.digit,c.ItemMemo,c.refcodeitem,c.refrowid,c.PushStatus,c.brand,c.matCode,c.matName,d.MatGroupname \n"+ " from t640109H b join t640109D c on b.doccode = c.doccode \n" + " join t110503 d on d.MatCode=c.matcode \n"+ " where isnull(c.PushStatus,0)=0 and b.DocStatus=30 \n"; try { List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { results=new ArrayList<>(); for(Map map : list) { currMap=map; PostDataEntity postDataEntity=new PostDataEntity(); postDataEntity.setNo(GridUtils.prossRowSetDataType_String(map, "docCode")+"-"+ GridUtils.prossRowSetDataType_Int(map, "docItem")); postDataEntity.setBuyOrder(GridUtils.prossRowSetDataType_String(map, "sellerName")+ GridUtils.prossRowSetDataType_String(map, "cltCode")); postDataEntity.setName(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setPhone(GridUtils.prossRowSetDataType_String(map, "tel")+ ((!"".equals(GridUtils.prossRowSetDataType_String(map, "tel2")))?","+GridUtils.prossRowSetDataType_String(map, "tel2"):"")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "areaname")+GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setAgent(GridUtils.prossRowSetDataType_String(map, "ccCode")+"_SZJW"); postDataEntity.setBrand(GridUtils.prossRowSetDataType_String(map, "brand")); postDataEntity.setCategory(GridUtils.prossRowSetDataType_String(map, "MatGroupname")); postDataEntity.setNum((int)GridUtils.prossRowSetDataType_Float(map, "digit")); postDataEntity.setModel(GridUtils.prossRowSetDataType_String(map, "matCode")); postDataEntity.setNote("安排测量:"+GridUtils.prossRowSetDataType_String(map, "preSendDate") +"-"+ GridUtils.prossRowSetDataType_String(map, "matName") +"-"+ GridUtils.prossRowSetDataType_String(map, "hDMemo") +"-"+GridUtils.prossRowSetDataType_String(map, "itemMemo") ); postDataEntity.setFormid(640109); postDataEntity.setRowid(GridUtils.prossRowSetDataType_String(map, "rowid")); postDataEntity.setDocCode(GridUtils.prossRowSetDataType_String(map, "docCode")); postDataEntity.setTimestamp(DateUtil.toDay().replace("-","").replace(":","").replaceAll(" ","")); getKeyByMD5(postDataEntity); postDataEntity.setMatCode(GridUtils.prossRowSetDataType_String(map, "matCode")); postDataEntity.setMatName(GridUtils.prossRowSetDataType_String(map, "matName")); postDataEntity.setDigit(GridUtils.prossRowSetDataType_Float(map, "digit")); postDataEntity.setSpecial(GridUtils.prossRowSetDataType_String(map, "special")); postDataEntity.setUom(GridUtils.prossRowSetDataType_String(map, "uom")); postDataEntity.setItemMemo(GridUtils.prossRowSetDataType_String(map, "ItemMemo")); postDataEntity.setPushStatus(GridUtils.prossRowSetDataType_Int(map, "PushStatus")); postDataEntity.setDocItem(GridUtils.prossRowSetDataType_Int(map, "docItem")); results.add(postDataEntity); } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640109,currMap,e); } } return results; } @Override public List getT640109V2(String docCode) { //测量单 List results=null; Map currMap=null; String sql=" set nocount on "+ " select \n" + " b.docDate, b.CompanyName, \n" + " b.preSendDate, \n" + " b.factdate, \n" + " b.docType, \n" + " b.cltCode, \n" + " b.cltName, \n" + " b.meterName, \n" + " b.tel, b.tel2,b.areaname, \n" + " b.propertyAddress, \n" + " b.sellerName, \n" + " b.shopGuideName, \n" + " b.shejiCode, \n" + " b.shejiName, \n" + " b.hDMemo, \n" + " b.attachmentDate, \n" + " b.approvalMemo, \n" + " b.approvalMemo2, \n" + " b.approvalMemo3, \n" + " b.approvalMemo4,b.docStatus, b.docStatusName,b.refCode,b.EnterName,b.ccCode,b.ccName,e.telephone, \n" + " c.DocCode,c.rowid,c.docItem," + " c.uom,c.digit,c.ItemMemo,c.refcodeitem,c.refrowid,c.PushStatus2,c.brand,c.matCode,c.matName,d.MatGroupname \n"+ " from t640109H b join t640109D c on b.doccode = c.doccode \n" + " join t110503 d on d.MatCode=c.matcode \n"+ " join v180205 e on e.hrcode=b.SellerCode \n"+ " where b.DocStatus=30 \n"; if(docCode!=null){ sql+=" and c.docCode='"+docCode+"' and (isnull(c.PushStatus2,0)=0 or c.PushStatus2=-1 ) \n"; }else { sql+=" and isnull(c.PushStatus2,0)=0 "; } sql+=" order by c.Doccode asc \n"; try { //log.info("640109sql>>"+sql); List> list= this.jdbcTemplate.queryForList(sql); if(list!=null&&list.size()>0) { results=new ArrayList<>(); //过滤相同单号,取得以单号为key的集合 String currDoccode=null; for(Map map : list) { //第一次或不是相同单号 if(currDoccode==null||!currDoccode.equalsIgnoreCase(GridUtils.prossRowSetDataType_String(map, "docCode"))) { PostDataEntityV2 postDataEntity = new PostDataEntityV2(); currMap = map; currDoccode = GridUtils.prossRowSetDataType_String(map, "docCode"); postDataEntity.setContractBillCode(GridUtils.prossRowSetDataType_String(map, "docCode")); postDataEntity.setBillSourceName("门店下单"); String dateStr=GridUtils.prossRowSetDataType_String(map, "docDate"); if(StringUtils.isNotBlank(dateStr)) { postDataEntity.setExpectDate(DatePlus(DateUtil.formatDate(dateStr, "yyyy-MM-dd"),2)); } postDataEntity.setContractShop(GridUtils.prossRowSetDataType_String(map, "ccName")); postDataEntity.setTraderName(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setTraderCode(GridUtils.prossRowSetDataType_String(map, "cltCode")); postDataEntity.setContactor(GridUtils.prossRowSetDataType_String(map, "cltName")); postDataEntity.setMobilePhone(GridUtils.prossRowSetDataType_String(map, "tel")); postDataEntity.setTel(GridUtils.prossRowSetDataType_String(map, "tel2")); postDataEntity.setCompanyName(GridUtils.prossRowSetDataType_String(map, "companyName")); postDataEntity.setAddress(GridUtils.prossRowSetDataType_String(map, "areaname") + "-" + GridUtils.prossRowSetDataType_String(map, "propertyAddress")); postDataEntity.setRemark(GridUtils.prossRowSetDataType_String(map, "hDMemo")); postDataEntity.setNewUserName(GridUtils.prossRowSetDataType_String(map, "SellerName")); postDataEntity.setNewUserMobilePhone(GridUtils.prossRowSetDataType_String(map, "telephone")); //----明细 List ronYaEntityV2List = new ArrayList<>(); list.stream().forEach(x -> { if(postDataEntity.getContractBillCode().equalsIgnoreCase(x.get("docCode") + "")) { DetailEntity ronYaEntityV2 = new DetailEntity(); ronYaEntityV2.setRepairTypeName("测量"); ronYaEntityV2.setBrandName(GridUtils.prossRowSetDataType_String(x, "brand")); ronYaEntityV2.setGoodsTypeName(GridUtils.prossRowSetDataType_String(x, "MatGroupname")); ronYaEntityV2.setRepairGDSpecs(GridUtils.prossRowSetDataType_String(x, "matCode")); ronYaEntityV2.setQuantity(GridUtils.prossRowSetDataType_String(x, "digit")); ronYaEntityV2.setRemark(GridUtils.prossRowSetDataType_String(x, "ItemMemo")); ronYaEntityV2.setFormid(640109); ronYaEntityV2.setRowid(GridUtils.prossRowSetDataType_String(x, "rowid")); ronYaEntityV2.setDocCode(GridUtils.prossRowSetDataType_String(x, "docCode")); ronYaEntityV2.setMatCode(GridUtils.prossRowSetDataType_String(x, "matCode")); ronYaEntityV2.setMatName(GridUtils.prossRowSetDataType_String(x, "matName")); ronYaEntityV2.setDigit(GridUtils.prossRowSetDataType_Float(x, "digit")); ronYaEntityV2.setSpecial(GridUtils.prossRowSetDataType_String(x, "special")); ronYaEntityV2.setUom(GridUtils.prossRowSetDataType_String(x, "uom")); ronYaEntityV2.setItemMemo(GridUtils.prossRowSetDataType_String(x, "ItemMemo")); ronYaEntityV2.setPushStatus(GridUtils.prossRowSetDataType_Int(x, "PushStatus2")); ronYaEntityV2.setDocItem(GridUtils.prossRowSetDataType_Int(x, "docItem")); ronYaEntityV2List.add(ronYaEntityV2); } }); postDataEntity.setDetails(ronYaEntityV2List); results.add(postDataEntity); } } } }catch(Exception e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); this.doErrorLog(640109,currMap,e); } } return results; } @Override public CanelEntity getCanelEntityByTableName(String hdtable, String dttable, String doccode, int formid) { String hsql=""; if(formid==170139) { hsql = " set nocount on " + " select distinct b.docCode,b.docType,a.cvenCode, a.cshopCode,b.refcode " + " from " + hdtable + " b join t110606 a on a.ccCode=b.ccCode " + " where isnull(b.cccode,'') <> '' and b.pushStatus=1 and b.DocCode=?"; }else{ hsql = " set nocount on " + " select distinct b.docCode,b.docType,a.cvenCode, a.cshopCode,b.refcode " + " from " + hdtable + " b join t110606 a on a.ccCode=b.ccCode " + " join "+dttable+" c on b.doccode = c.doccode " + " where isnull(b.cccode,'') <> '' and c.pushStatus=1 and b.DocCode=?"; } try { Map map= this.jdbcTemplate.queryForMap(hsql,doccode); CanelEntity canelEntity=new CanelEntity( GridUtils.prossRowSetDataType_String(map,"docCode"), GridUtils.prossRowSetDataType_String(map,"docType"), GridUtils.prossRowSetDataType_String(map,"cvenCode"), GridUtils.prossRowSetDataType_String(map,"cshopCode"), GridUtils.prossRowSetDataType_String(map,"refcode") ); return canelEntity; }catch(DataAccessException e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); throw e; } } } }