JOOutWorkPlanVC.m 132 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509
  1. //
  2. // JOOutWorkPlanVC.m
  3. // shiku_im
  4. //
  5. // Created by jobor Zhou on 2016/12/30.
  6. // Copyright © 2016年 Reese. All rights reserved.
  7. //
  8. //系统版本号是否大于8.0
  9. #define IS_SystemVersionGreaterThanEight ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0)
  10. #import "JOOutWorkPlanVC.h"
  11. #import "AFNetworking.h"
  12. #import "MJExtension.h"
  13. #import "OutWorkingSettingViewController.h"//外勤设置
  14. #import "OutWorkModel.h"//外勤模型
  15. #import "JOWQJHDATAModel.h"//外勤计划数据源模型
  16. #import "BGLogation.h"//单例定位
  17. #import "HypTextView.h"//textView
  18. #import "JOOAViewController.h"//OA主页面
  19. #import "ZQDayPickerViewController.h"//时间控件
  20. #import <MAMapKit/MAMapKit.h>
  21. #import <AMapSearchKit/AMapSearchKit.h>
  22. #import "JZLocationConverter.h"//经纬度转码库
  23. #import "JOOAEmergencyViewController.h"//目的选择
  24. #import "JONavigationController.h"
  25. #import <MAMapKit/MAMapKit.h>
  26. #import <AMapSearchKit/AMapSearchKit.h>
  27. #import "JOOAOutSelectAddressVC.h"//选择目的地
  28. #import "JOOutAddressModel.h"//拜访公司地址模型
  29. #import "LYAlerterView.h"
  30. #import "IndependentOAViewController.h"
  31. #import <AMapFoundationKit/AMapFoundationKit.h>
  32. #import <AMapLocationKit/AMapLocationKit.h>
  33. #import "Reachability.h"
  34. #import "NSDictionary+JOExtension.h"
  35. #import "JORouteNaviVC.h"//导航
  36. #import <MapKit/MapKit.h>
  37. #import <CoreLocation/CoreLocation.h>
  38. #import "JOGetShenPiManVC.h"
  39. #import "UASChooseAddDetailVc.h"
  40. #import "UASWorkManager.h"
  41. #import "UASLocaManager.h"
  42. //人脸识别
  43. #import "DetectionViewController.h"
  44. #import "NetAccessModel.h"
  45. #import <IDLFaceSDK/IDLFaceSDK.h>
  46. #pragma mark -- 自定义的cell
  47. @interface JOCell : UITableViewCell
  48. @property (nonatomic , copy) NSString * nameString;
  49. @property (nonatomic , strong) UIActivityIndicatorView * indicator;
  50. -(void)setModel:(JOWQJHDATAModel *)model withIndex:(NSInteger)rowIndex;
  51. -(void)B2BsetModel:(JOWQJHDATAModel *)model withIndex:(NSInteger)rowIndex canUserEnditing:(BOOL)yesOrNo;
  52. @end
  53. @implementation JOCell
  54. -(void)setModel:(JOWQJHDATAModel *)model withIndex:(NSInteger)rowIndex canUserEnditing:(BOOL)yesOrNo
  55. {
  56. self.userInteractionEnabled=yesOrNo;
  57. /**cell标题名字*/
  58. UILabel * nameLabel=[[UILabel alloc]initWithFrame:CGRectMake(10, 0, 120, 40)];;
  59. nameLabel.font=FONT_SIZE(14);
  60. nameLabel.textColor=[UIColor colorWithRed:87/255.0 green:87/255.0 blue:87/255.0 alpha:1.0];;
  61. nameLabel.text=_nameString;
  62. [self.contentView addSubview:nameLabel];
  63. if(rowIndex==9||rowIndex==10)
  64. {
  65. nameLabel.textColor=Color(150, 149, 149, 1.0);
  66. }
  67. UILabel * label=[[UILabel alloc]init];
  68. #pragma mark -- setUI
  69. //创建时间,距离,实时距离,实际到达时间,实际离开时间,拜访目的
  70. if (rowIndex==2||rowIndex==3||rowIndex==6||rowIndex==9||rowIndex==10||rowIndex==4||rowIndex==1)
  71. {
  72. label.frame=CGRectMake(100,0,[UIScreen mainScreen].bounds.size.width-110,40);
  73. label.textColor=Color(150, 149, 149, 1.0);
  74. label.textAlignment=2;
  75. label.font=FONT_SIZE(12);
  76. [self.contentView addSubview:label];
  77. //出访单位
  78. }else if (rowIndex==0)
  79. {
  80. UIImageView * images=[[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-25, 12.5, 15, 15)];
  81. images.image=[UIImage imageNamed:@"oa_waiqin_comName"];
  82. [self.contentView addSubview:images];
  83. label.frame=CGRectMake(120,0,[UIScreen mainScreen].bounds.size.width-145,40);
  84. label.textColor=Color(150, 149, 149, 1.0);
  85. label.textAlignment=2;
  86. label.font=FONT_SIZE(12);
  87. [self.contentView addSubview:label];
  88. //预计到达时间
  89. }else if (rowIndex==8)
  90. {
  91. NSString * str=@"";
  92. if (model.YujiTime==nil)
  93. {
  94. str=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  95. /*富文本,为了必填项的红色“*”*/
  96. NSString *titleName = _nameString;
  97. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  98. [AttributedStr addAttribute:NSForegroundColorAttributeName
  99. value:[UIColor redColor]
  100. range:NSMakeRange(titleName.length, 1)];
  101. nameLabel.attributedText = AttributedStr;
  102. }else{
  103. // if (model.YujiTime.length>10)
  104. // {
  105. // str=[self timeWithTimeIntervalString:model.YujiTime];
  106. // }else{
  107. str=model.YujiTime;
  108. // }
  109. }
  110. nameLabel.width = 130;
  111. label.frame=CGRectMake(140,0,SCREEN_WIDTH-150,40);
  112. label.textColor=Color(150, 149, 149, 1.0);
  113. label.textAlignment=2;
  114. label.font=FONT_SIZE(12);
  115. label.text=str;
  116. label.userInteractionEnabled=YES;
  117. [self.contentView addSubview:label];
  118. //实时距离
  119. }else if (rowIndex==7)
  120. {
  121. label.frame=CGRectMake([UIScreen mainScreen].bounds.size.width-255,0,180,40);
  122. label.textColor=Color(17,76,160,1.0);
  123. label.textAlignment=NSTextAlignmentRight;
  124. label.font=FONT_SIZE(12);
  125. [self.contentView addSubview:label];
  126. self.userInteractionEnabled=YES;
  127. }
  128. #pragma mark -- setValue
  129. //创建位子
  130. if (rowIndex==5)
  131. {
  132. label.frame=CGRectMake(100,0,[UIScreen mainScreen].bounds.size.width-110,40);
  133. label.textColor=Color(150, 149, 149, 1.0);
  134. label.textAlignment=2;
  135. label.numberOfLines=0;
  136. label.font=FONT_SIZE(12);
  137. DLog(@"%@",model.CreateAddress);
  138. if ([model.CreateAddress isEqualToString:@"未获取到当前位置"]||[model.CreateAddress isEqualToString:@""])
  139. {
  140. // label.text=@"重新获取位置信息";
  141. // label.textColor=[UIColor redColor];
  142. UIButton * btn=[UIButton buttonWithType:UIButtonTypeCustom];
  143. btn.frame=CGRectMake([UIScreen mainScreen].bounds.size.width-160,0,150,40);
  144. if (yesOrNo) {
  145. [btn setTitle:Localized(@"UU_work_OA_WorkOutsideSign_RetrieveLocationInformation") forState:UIControlStateNormal];
  146. }
  147. btn.titleLabel.font=FONT_SIZE(12);
  148. btn.titleLabel.textAlignment=2;
  149. [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
  150. [btn addTarget:self action:@selector(clickOutIndicator:) forControlEvents:UIControlEventTouchUpInside];
  151. [self.contentView addSubview:btn];
  152. _indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
  153. //设置显示位置
  154. _indicator.center = CGPointMake([UIScreen mainScreen].bounds.size.width-60,20);
  155. //将这个控件加到父容器中。
  156. [self.contentView addSubview:_indicator];
  157. }else{
  158. label.text=model.CreateAddress;
  159. [self.contentView addSubview:label];
  160. }
  161. //创建时间
  162. }
  163. else if (rowIndex==6)
  164. {
  165. if ([model.CreateTime isEqualToString:@""]||model.CreateTime==nil)
  166. {
  167. label.text=@"";
  168. }else{
  169. label.text=model.CreateTime;
  170. }
  171. //出访单位
  172. }
  173. else if (rowIndex==0)
  174. {
  175. if ([model.CFdanwei isEqualToString:@""]||model.CFdanwei==nil)
  176. {
  177. label.text=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  178. /*富文本,为了必填项的红色“*”*/
  179. NSString *titleName = _nameString;
  180. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  181. [AttributedStr addAttribute:NSForegroundColorAttributeName
  182. value:[UIColor redColor]
  183. range:NSMakeRange(titleName.length, 1)];
  184. nameLabel.attributedText = AttributedStr;
  185. }else{
  186. label.text=model.CFdanwei;
  187. }
  188. //出访地址
  189. }
  190. else if (rowIndex==1)
  191. {
  192. label.textAlignment=2;
  193. label.numberOfLines=0;
  194. if ([model.CFdizhi isEqualToString:@""]||model.CFdizhi==nil)
  195. {
  196. label.text=@"";
  197. }else{
  198. label.text=model.CFdizhi;
  199. }
  200. }
  201. //出访目的
  202. else if(rowIndex==2)
  203. {
  204. if ([model.CFmudi isEqualToString:@""]||model.CFmudi==nil)
  205. {
  206. label.text=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  207. /*富文本,为了必填项的红色“*”*/
  208. NSString *titleName = _nameString;
  209. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  210. [AttributedStr addAttribute:NSForegroundColorAttributeName
  211. value:[UIColor redColor]
  212. range:NSMakeRange(titleName.length, 1)];
  213. nameLabel.attributedText = AttributedStr;
  214. }else{
  215. label.text=[NSString stringWithFormat:@"%@",model.CFmudi];
  216. }
  217. }
  218. //距离
  219. else if (rowIndex==4)
  220. {
  221. DLog(@"%@",model.Juli);
  222. if ([model.Juli isEqualToString:@""]||model.Juli==nil)
  223. {
  224. label.text=@"";
  225. }else{
  226. if ([model.Juli intValue]>999)
  227. {
  228. label.text=[NSString stringWithFormat:@"%.2f千米",[model.Juli floatValue]/1000];
  229. }else{
  230. label.text=[NSString stringWithFormat:@"%@%@",model.Juli,Localized(@"UU_work_OA_punchClock_rice")];
  231. }
  232. }
  233. //实时距离
  234. }
  235. else if (rowIndex==7)
  236. {
  237. if ([model.ShiSjuli isEqualToString:@""]||model.ShiSjuli==nil)
  238. {
  239. label.text=@"";
  240. }else{
  241. label.textColor=[UIColor blueColor];
  242. if ([model.ShiSjuli intValue]>999)
  243. {
  244. label.text=[NSString stringWithFormat:@"%.2f千米",[model.ShiSjuli floatValue]/1000];
  245. }else{
  246. label.text=[NSString stringWithFormat:@"%@%@",model.ShiSjuli,Localized(@"UU_work_OA_punchClock_rice")];
  247. }
  248. }
  249. //实际到达时间
  250. }
  251. else if (rowIndex==9)
  252. {
  253. if ([model.ShijArriveTime isEqualToString:@""]||model.ShijArriveTime==nil)
  254. {
  255. label.text=@"";
  256. }else{
  257. label.text=[self timeWithTimeIntervalString:model.ShijArriveTime];
  258. }
  259. //实际离开时间
  260. }
  261. else if (rowIndex==10)
  262. {
  263. if ([model.ShijLeaveTime isEqualToString:@""]||model.ShijLeaveTime==nil)
  264. {
  265. label.text=@"";
  266. }else{
  267. label.text=[self timeWithTimeIntervalString:model.ShijLeaveTime];
  268. label.textColor=[UIColor blueColor];
  269. }
  270. }
  271. }
  272. -(void)B2BsetModel:(JOWQJHDATAModel *)model withIndex:(NSInteger)rowIndex canUserEnditing:(BOOL)yesOrNo
  273. {
  274. self.userInteractionEnabled=yesOrNo;
  275. //表名
  276. UILabel * nameLabel=[[UILabel alloc]initWithFrame:CGRectMake(10, 0, 100, 40)];;
  277. nameLabel.font=FONT_SIZE(14);
  278. nameLabel.textColor=[UIColor colorWithRed:87/255.0 green:87/255.0 blue:87/255.0 alpha:1.0];;
  279. nameLabel.text=_nameString;
  280. [self.contentView addSubview:nameLabel];
  281. if(rowIndex==9||rowIndex==10)
  282. {
  283. nameLabel.textColor=Color(150, 149, 149, 1.0);
  284. }
  285. UILabel * label=[[UILabel alloc]init];
  286. #pragma mark -- setUI
  287. //创建时间,距离,实时距离,实际到达时间,实际离开时间,拜访目的
  288. if (rowIndex==2||rowIndex==3||rowIndex==6||rowIndex==9||rowIndex==10||rowIndex==4||rowIndex==1)
  289. {
  290. label.frame=CGRectMake(100,0,[UIScreen mainScreen].bounds.size.width-110,40);
  291. label.textColor=Color(150, 149, 149, 1.0);
  292. label.textAlignment=2;
  293. label.font=FONT_SIZE(12);
  294. [self.contentView addSubview:label];
  295. //出访单位
  296. }else if (rowIndex==0)
  297. {
  298. UIImageView * images=[[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-25, 12.5, 15, 15)];
  299. images.image=[UIImage imageNamed:@"oa_waiqin_comName"];
  300. [self.contentView addSubview:images];
  301. label.frame=CGRectMake(100,0,[UIScreen mainScreen].bounds.size.width-130,40);
  302. label.textColor=Color(150, 149, 149, 1.0);
  303. label.textAlignment=2;
  304. label.font=FONT_SIZE(12);
  305. [self.contentView addSubview:label];
  306. //预计到达时间
  307. }else if (rowIndex==8)
  308. {
  309. NSString * str=@"";
  310. if (model.YujiTime==nil)
  311. {
  312. str=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  313. /*富文本,为了必填项的红色“*”*/
  314. NSString *titleName = _nameString;
  315. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  316. [AttributedStr addAttribute:NSForegroundColorAttributeName
  317. value:[UIColor redColor]
  318. range:NSMakeRange(titleName.length, 1)];
  319. nameLabel.attributedText = AttributedStr;
  320. }else if (model.YujiTime.length>16)
  321. {
  322. str=model.YujiTime;
  323. }
  324. else{
  325. str=[self timeWithTimeIntervalString:model.YujiTime];
  326. }
  327. label.frame=CGRectMake(100,0,SCREEN_WIDTH-110,40);
  328. label.textColor=Color(150, 149, 149, 1.0);
  329. label.textAlignment=2;
  330. label.font=FONT_SIZE(12);
  331. label.text=str;
  332. label.userInteractionEnabled=YES;
  333. [self.contentView addSubview:label];
  334. //实时距离
  335. }
  336. else if (rowIndex==7)
  337. {
  338. label.frame=CGRectMake([UIScreen mainScreen].bounds.size.width-120,0,60,40);
  339. label.textColor=Color(50,150,250,1.0);
  340. label.textAlignment=0;
  341. label.font=FONT_SIZE(12);
  342. [self.contentView addSubview:label];
  343. self.userInteractionEnabled=YES;
  344. }
  345. if (rowIndex==5)
  346. {
  347. label.frame=CGRectMake(100,0,[UIScreen mainScreen].bounds.size.width-110,40);
  348. label.textColor=Color(150, 149, 149, 1.0);
  349. label.textAlignment=2;
  350. label.numberOfLines=0;
  351. label.font=FONT_SIZE(12);
  352. //DLog(@"%@",model.CreateAddress);
  353. if ([model.CreateAddress isEqualToString:@"未获取到当前位置"]||[model.CreateAddress isEqualToString:@""])
  354. {
  355. UIButton * btn=[UIButton buttonWithType:UIButtonTypeCustom];
  356. btn.frame=CGRectMake([UIScreen mainScreen].bounds.size.width-110,0,100,40);
  357. [btn setTitle:Localized(@"UU_work_OA_WorkOutsideSign_RetrieveLocationInformation") forState:UIControlStateNormal];
  358. btn.titleLabel.font=FONT_SIZE(12);
  359. btn.titleLabel.textAlignment=2;
  360. [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
  361. [btn addTarget:self action:@selector(clickOutIndicator:) forControlEvents:UIControlEventTouchUpInside];
  362. [self.contentView addSubview:btn];
  363. _indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
  364. //设置显示位置
  365. _indicator.center = CGPointMake([UIScreen mainScreen].bounds.size.width-60,20);
  366. //将这个控件加到父容器中。
  367. [self.contentView addSubview:_indicator];
  368. }else{
  369. label.text=model.CreateAddress;
  370. [self.contentView addSubview:label];
  371. }
  372. //创建时间
  373. }
  374. else if (rowIndex==6)
  375. {
  376. if ([model.CreateTime isEqualToString:@""]||model.CreateTime==nil)
  377. {
  378. label.text=@"";
  379. }else if (model.CreateTime.length>16)
  380. {
  381. label.text=model.CreateTime;
  382. }
  383. else{
  384. label.text=[self timeWithTimeIntervalString:model.CreateTime];
  385. }
  386. }
  387. //出访单位
  388. else if (rowIndex==0)
  389. {
  390. if ([model.CFdanwei isEqualToString:@""]||model.CFdanwei==nil)
  391. {
  392. label.text=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  393. /*富文本,为了必填项的红色“*”*/
  394. NSString *titleName = _nameString;
  395. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  396. [AttributedStr addAttribute:NSForegroundColorAttributeName
  397. value:[UIColor redColor]
  398. range:NSMakeRange(titleName.length, 1)];
  399. nameLabel.attributedText = AttributedStr;
  400. }else{
  401. label.text=model.CFdanwei;
  402. }
  403. }
  404. //出访地址
  405. else if (rowIndex==1)
  406. {
  407. if ([model.CFdizhi isEqualToString:@""]||model.CFdizhi==nil)
  408. {
  409. label.text=@"";
  410. }else{
  411. label.text=model.CFdizhi;
  412. }
  413. }
  414. //出访目的
  415. else if(rowIndex==2)
  416. {
  417. if ([model.CFmudi isEqualToString:@""]||model.CFmudi==nil)
  418. {
  419. label.text=FORMAT(@"%@>",Localized(@"UU_custom_pleaseSelect"));
  420. /*富文本,为了必填项的红色“*”*/
  421. NSString *titleName = _nameString;
  422. NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
  423. [AttributedStr addAttribute:NSForegroundColorAttributeName
  424. value:[UIColor redColor]
  425. range:NSMakeRange(titleName.length, 1)];
  426. nameLabel.attributedText = AttributedStr;
  427. }else{
  428. label.text=[NSString stringWithFormat:@"%@",model.CFmudi];
  429. }
  430. }
  431. //距离
  432. else if (rowIndex==4)
  433. {
  434. if ([model.Juli isEqualToString:@""]||model.Juli==nil)
  435. {
  436. label.text=@"";
  437. }else{
  438. if ([model.Juli intValue]>999)
  439. {
  440. label.text=[NSString stringWithFormat:@"%.2f千米",[model.Juli floatValue]/1000];
  441. }else{
  442. label.text=[NSString stringWithFormat:@"%@%@",model.Juli,Localized(@"UU_work_OA_punchClock_rice")];
  443. }
  444. }
  445. }
  446. //实时距离
  447. else if (rowIndex==7)
  448. {
  449. if ([model.ShiSjuli isEqualToString:@""]||model.ShiSjuli==nil)
  450. {
  451. label.text=@"";
  452. }else{
  453. label.textColor=[UIColor blueColor];
  454. if ([model.ShiSjuli intValue]>999)
  455. {
  456. label.text=[NSString stringWithFormat:@"%.2f千米",[model.ShiSjuli floatValue]/1000];
  457. }else{
  458. label.text=[NSString stringWithFormat:@"%@%@",model.ShiSjuli,Localized(@"UU_work_OA_punchClock_rice")];
  459. }
  460. }
  461. }
  462. //实际到达时间
  463. else if (rowIndex==9)
  464. {
  465. DLog(@"%@",model.ShijArriveTime);
  466. if ([model.ShijArriveTime isEqualToString:@"<null>"]||model.ShijArriveTime==nil||[model.ShijArriveTime isEqualToString:@""]||model.ShijArriveTime.length<=5)
  467. {
  468. label.text=@"";
  469. }else{
  470. label.text=[self timeWithTimeIntervalString:model.ShijArriveTime];
  471. }
  472. }
  473. //实际离开时间
  474. else if (rowIndex==10)
  475. {
  476. if ([model.ShijLeaveTime isEqualToString:@"<null>"]||model.ShijLeaveTime==nil||[model.ShijLeaveTime isEqualToString:@""]||model.ShijLeaveTime.length<=5)
  477. {
  478. label.text=@"";
  479. }
  480. else{
  481. label.text=[self timeWithTimeIntervalString:model.ShijLeaveTime];
  482. label.textColor=[UIColor blueColor];
  483. }
  484. }
  485. }
  486. //时间戳转字符串
  487. - (NSString *)timeWithTimeIntervalString:(NSString *)timeString
  488. {
  489. // 格式化时间
  490. NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
  491. formatter.timeZone = [NSTimeZone systemTimeZone];
  492. [formatter setDateStyle:NSDateFormatterMediumStyle];
  493. [formatter setTimeStyle:NSDateFormatterShortStyle];
  494. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  495. // 毫秒值转化为秒
  496. NSDate* date = [NSDate dateWithTimeIntervalSince1970:[timeString doubleValue]/ 1000.0];
  497. NSString* dateString = [formatter stringFromDate:date];
  498. DLog(@"%@",dateString);
  499. return dateString;
  500. }
  501. - (void)clickOutIndicator:(UIButton *)btn
  502. {
  503. [_indicator startAnimating];
  504. btn.hidden=YES;
  505. [[NSNotificationCenter defaultCenter] postNotificationName:@"initLocatonWithClick" object:nil];
  506. }
  507. @end
  508. #pragma mark --------------------------------------------------------------------------------
  509. @interface JOOutWorkPlanVC ()<UITableViewDelegate,UITableViewDataSource,ZQDayPickerViewControllerDelegate,HypTextViewDelegate,AMapSearchDelegate,UIAlertViewDelegate,LYAlerterViewDelegate>
  510. {
  511. UITableView * _tableView;
  512. //cellTitle数据源
  513. NSArray * _cellTitleSource;
  514. //OutWorkModel接口模型数组
  515. NSMutableArray * _sectionSource;
  516. //JOWQJHModel数据源模型数组
  517. NSMutableArray * _cellDataSource;
  518. ZQDayPickerViewController * _dayPickerViewController;
  519. //记录是否可被编辑
  520. NSMutableArray * _yesOrNoEntingArr;
  521. //装ID和code
  522. NSMutableArray * _idAndCodeArr;
  523. //装添加目标经纬度
  524. NSMutableArray * _jingweiduArr;
  525. NSMutableArray * _jingweidubrr;
  526. }
  527. @property (nonatomic,strong) AMapSearchAPI * searchAPI;
  528. @property (nonatomic,strong) AMapLocationManager * JOlocationManager;//手动定位
  529. @property (nonatomic, strong) Reachability *conn;//网络监控
  530. @property(nonatomic,strong)UIButton * uploadBtn;
  531. @property(weak,nonatomic)LYAlerterView *tishiView;
  532. /**
  533. 获取地址搜索关键字
  534. */
  535. @property(copy,nonatomic)NSString *keyWord;
  536. @property(assign,nonatomic)BOOL isPunchHand;
  537. /**
  538. 为了防止手动外勤对象提前释放后调用某个方法导致闪退
  539. */
  540. @property(strong,nonatomic)UASWorkManager *outManager;
  541. @end
  542. @implementation JOOutWorkPlanVC
  543. - (void)viewDidLoad
  544. {
  545. [super viewDidLoad];
  546. //1,初始化变量
  547. [self initQJBL];
  548. //2,设置导航栏
  549. [self setUpNavi];
  550. //3,设置tableView
  551. [self setUptableView];
  552. //4,获取外勤计划列表
  553. if (g_B2BUser)
  554. {
  555. [MBProgressHUD showMessage:@"" toView:self.view];
  556. [self b2bGetAlldataOfOutPlans];
  557. }else{
  558. [MBProgressHUD showMessage:@"" toView:self.view];
  559. [self getAlldataOfOutPlans];
  560. }
  561. //5,路线规划
  562. [self initRountSearch];
  563. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(initLocation) name:@"initLocatonWithClick" object:nil];
  564. //监听
  565. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
  566. self.conn = [Reachability reachabilityForInternetConnection];
  567. [self.conn startNotifier];
  568. NSString * str=[self getNetWorkStates];
  569. DLog(@"%@",str);
  570. if ([str isEqualToString:@"2G"]||[str isEqualToString:@"3G"])
  571. {
  572. [JOShowMessageFromNavi showDropViewWithMessage:@"当前网络环境不佳,建议切换到4G网络" ToNavi:self.navigationController withColor:nil];
  573. }
  574. }
  575. -(void)shouldRefreshData{
  576. if (g_B2BUser)
  577. {
  578. [self b2bGetAlldataOfOutPlans];
  579. }else{
  580. [self getAlldataOfOutPlans];
  581. }
  582. }
  583. - (void)viewWillAppear:(BOOL)animated
  584. {
  585. //DLog(@"哈哈哈哈哈哈哈哈");
  586. [MobClick beginEvent:@"OutWorkPlan"];
  587. [[NSNotificationCenter defaultCenter] postNotificationName:@"hideBottomView" object:nil];
  588. }
  589. -(void)viewWillDisappear:(BOOL)animated{
  590. //DLog(@"嘻嘻嘻嘻我嘻嘻嘻");
  591. [MobClick endEvent:@"OutWorkPlan"];
  592. }
  593. //1,初始化全局变量
  594. - (void)initQJBL
  595. {
  596. _cellTitleSource=[[NSArray alloc]initWithObjects:Localized(@"UU_work_OA_WorkOutsideSign_VisitingUnit"),Localized(@"UU_work_OA_WorkOutsideSign_VisitingAddress"),Localized(@"UU_work_OA_WorkOutsideSign_VisitingPurpose"),Localized(@"UU_work_OA_WorkOutsideSign_TimeInterval"),Localized(@"UU_work_OA_WorkOutsideSign_Distance"),Localized(@"UU_work_OA_WorkOutsideSign_CreateLocation"),Localized(@"UU_work_OA_WorkOutsideSign_CreateTime"),Localized(@"UU_work_OA_WorkOutsideSign_RealtimeDistance"),Localized(@"UU_work_OA_WorkOutsideSign_EstimatedTimeOfArrival"),Localized(@"UU_work_OA_WorkOutsideSign_ActualTimeOfArrival"),Localized(@"UU_work_OA_WorkOutsideSign_RecentRecordTime"), nil];
  597. _sectionSource=[[NSMutableArray alloc]init];
  598. _cellDataSource=[[NSMutableArray alloc]init];
  599. _yesOrNoEntingArr=[[NSMutableArray alloc]init];
  600. _idAndCodeArr=[[NSMutableArray alloc]init];
  601. _jingweiduArr=[[NSMutableArray alloc]init];
  602. self.isPunchHand = NO;
  603. }
  604. //2,设置导航栏
  605. - (void)setUpNavi
  606. {
  607. self.title =Localized(@"UU_work_OA_WorkOutPlan");
  608. // UIButton * right=[UIButton buttonWithType:UIButtonTypeCustom];
  609. // right.frame=CGRectMake(0, 0,20, 20);
  610. // [right setBackgroundImage:[UIImage imageNamed:@"oa_daka_alarm"] forState:UIControlStateNormal];
  611. // [right addTarget:self action:@selector(pushToSetting) forControlEvents:UIControlEventTouchUpInside];
  612. // UIBarButtonItem * rightBtn =[[UIBarButtonItem alloc]initWithCustomView:right];
  613. // self.navigationItem.rightBarButtonItem =rightBtn;
  614. UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeSystem];
  615. btn2.frame = CGRectMake(0, 5, 22, 22);
  616. UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, iOS11?5:0, 22, 22)];
  617. image.image = [UIImage imageNamed:@"icon_back_nor3"];
  618. [btn2 addSubview:image];
  619. [btn2 addTarget:self action:@selector(backView) forControlEvents:UIControlEventTouchUpInside];
  620. UIBarButtonItem *bbi2 = [[UIBarButtonItem alloc]initWithCustomView:btn2];
  621. UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithTitle:Localized(@"UU_work_OA_WorkOutPlanPunchByHand") style:UIBarButtonItemStylePlain target:self action:@selector(punchCard)];
  622. rightBtn.tintColor = [UIColor whiteColor];
  623. self.navigationItem.leftBarButtonItems = @[bbi2];
  624. self.navigationItem.rightBarButtonItem = rightBtn;
  625. self.view.backgroundColor = [UIColor colorWithRed:235/255.0 green:233/255.0 blue:233/255.0 alpha:1.0];
  626. }
  627. #pragma mark --- 手动签到第一步
  628. -(void)punchCard
  629. {
  630. if (self.faceGo.length != 0) {
  631. if ([self.faceGo isEqualToString:@"1"]) {
  632. [self FaceLoginJudgeMyself];
  633. }
  634. else if ([self.faceGo isEqualToString:@"fail"]) {
  635. //以防万一:工作台页面获取外勤设置接口失败时,重新获取外勤设置
  636. [MBProgressHUD showMessage:@""];
  637. NSString *url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",g_id,g_master,g_sessionUser,g_sessionId];
  638. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  639. UASNetworkManager *mannage = [UASNetworkManager shareManager];
  640. mannage.responseSerializer = [AFJSONResponseSerializer serializer];
  641. [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  642. [MBProgressHUD hideHUD];
  643. NSDictionary *rootDic = responseObject;
  644. if ([rootDic objectForKey:@"result"] == nil)
  645. {
  646. return ;
  647. }
  648. if ([[rootDic objectForKey:@"result"] isKindOfClass:[NSNull class]]) {
  649. return;
  650. }
  651. NSMutableArray * arr = [[NSMutableArray alloc]initWithArray:[NSDictionary changeType:[rootDic objectForKey:@"result"]]];
  652. if (arr.count == 0)
  653. {
  654. return;
  655. }
  656. for (id obj in rootDic[@"result"])
  657. {
  658. if ([[obj allKeys] containsObject:@"MO_FACESIGN"]) {
  659. NSString *faceSign = [NSString stringWithFormat:@"%@",obj[@"MO_FACESIGN"]];
  660. if ([faceSign isEqualToString:@"1"]) {
  661. self.faceGo = faceSign;
  662. }
  663. }
  664. }
  665. if ([self.faceGo isEqualToString:@"1"]) {
  666. [self FaceLoginJudgeMyself];
  667. }else{
  668. [self startPunchCard:nil];
  669. }
  670. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  671. [MBProgressHUD hideHUD];
  672. //万一此接口崩溃,还是要打卡的。
  673. [self startPunchCard:nil];
  674. }];
  675. }
  676. else{
  677. [self startPunchCard:nil];
  678. }
  679. }else{
  680. //其余公司无mo_facesign直接打卡
  681. [self startPunchCard:nil];
  682. }
  683. }
  684. #pragma mark --- 外勤打卡开始
  685. -(void)startPunchCard:(NSData *)imageData
  686. {
  687. self.isPunchHand = YES;
  688. //重新创建,防止数据错乱
  689. self.outManager = [UASWorkManager manager];
  690. @weakify(self)
  691. [self.outManager outWorkPunchByHandWithImageData:imageData Completed:^(BOOL success, NSString *str) {
  692. @strongify(self)
  693. if (success) {
  694. [self shouldRefreshData];
  695. }
  696. }];
  697. }
  698. #pragma mark --- 人脸识别开始
  699. -(void)FaceLoginJudgeMyself
  700. {
  701. // 设置鉴权
  702. NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
  703. NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
  704. [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
  705. [SVProgressHUD appearance].defaultStyle = SVProgressHUDStyleDark;
  706. [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
  707. __weak typeof(self) weakSelf = self;
  708. DetectionViewController *dvc = [[DetectionViewController alloc] init];
  709. dvc.completion = ^(NSDictionary* images, UIImage* originImage){
  710. if (images[@"bestImage"] != nil && [images[@"bestImage"] count] != 0) {
  711. NSData* data = [[NSData alloc] initWithBase64EncodedString:[images[@"bestImage"] lastObject] options:NSDataBase64DecodingIgnoreUnknownCharacters];
  712. UIImage* bestImage = [UIImage imageWithData:data];
  713. DLog(@"bestImage = %@",bestImage);
  714. NSString* bestImageStr = [[images[@"bestImage"] lastObject] copy];
  715. [weakSelf identify:bestImageStr originImage:images[@"cropImage"]?:originImage andViewController:dvc andImageData:data];
  716. }
  717. };
  718. [self presentViewController:dvc animated:YES completion:nil];
  719. }
  720. #pragma mark --- 人脸验证流程
  721. - (void)identify:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
  722. // 设置鉴权
  723. NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
  724. NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
  725. [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
  726. [SVProgressHUD appearance].defaultStyle = SVProgressHUDStyleDark;
  727. [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
  728. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  729. __weak typeof(self) weakSelf = self;
  730. [[NetAccessModel sharedInstance] identifyUserLivenessWithFaceImageStr:bestImageStr completion:^(NSError *error, id resultObject) {
  731. if (resultObject) {
  732. NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
  733. SLog(@"人脸识别数据:%@",dict);
  734. //先判断接口请求是否成功
  735. NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
  736. if ([success isEqualToString:@"SUCCESS"]) {
  737. //判断人脸库是否存在当前用户
  738. NSArray *userList = dict[@"result"][@"user_list"];
  739. if (userList.count == 0) {
  740. //无此用户走人脸注册流程
  741. [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  742. if (index == 2) {
  743. [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
  744. }
  745. if (index == 1) {
  746. [dvc dismissViewControllerAnimated:YES completion:nil];
  747. }
  748. }];
  749. }else{
  750. NSDictionary *userDic = userList[0];
  751. float score = [[userDic objectForKey:@"score"] floatValue];
  752. if (score > 85) {
  753. //是本人,走打卡流程
  754. [dvc dismissViewControllerAnimated:YES completion:nil];
  755. [self startPunchCard:imageData];
  756. }else{
  757. //不是本人
  758. [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  759. if (index == 2) {
  760. [IDLFaceDetectionManager.sharedInstance reset];
  761. [[IDLFaceDetectionManager sharedInstance] startInitial];
  762. dvc.hasFinished = NO;
  763. [dvc startCapture];
  764. }
  765. if (index == 1) {
  766. [dvc dismissViewControllerAnimated:YES completion:nil];
  767. }
  768. }];
  769. }
  770. }
  771. }
  772. else if ([success isEqualToString:@"liveness check fail"]){
  773. [UASAlertView showWithTitle:nil content:@"不能拿照片骗我哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  774. if (index == 2) {
  775. [IDLFaceDetectionManager.sharedInstance reset];
  776. [[IDLFaceDetectionManager sharedInstance] startInitial];
  777. dvc.hasFinished = NO;
  778. [dvc startCapture];
  779. }
  780. if (index == 1) {
  781. [dvc dismissViewControllerAnimated:YES completion:nil];
  782. }
  783. }];
  784. }
  785. else{
  786. if ([FORMAT(@"%@",[dict objectForKey:@"error_code"])isEqualToString:@"222207"]) {
  787. //无此用户走人脸注册流程,先到ERP看是否传过人脸
  788. [self getERPhaveFace:bestImageStr originImage:originImage andViewController:dvc andImageData:imageData];
  789. }else{
  790. [UASAlertView showWithTitle:nil content:success sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  791. if (index == 2) {
  792. [IDLFaceDetectionManager.sharedInstance reset];
  793. [[IDLFaceDetectionManager sharedInstance] startInitial];
  794. dvc.hasFinished = NO;
  795. [dvc startCapture];
  796. }
  797. if (index == 1) {
  798. [dvc dismissViewControllerAnimated:YES completion:nil];
  799. }
  800. }];
  801. }
  802. }
  803. }
  804. }];
  805. });
  806. }
  807. #pragma mark --- 勉强操作:百度会抽风,所以在ERP做是否传过人脸的标识
  808. - (void)getERPhaveFace:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
  809. __weak typeof(self) weakSelf = self;
  810. NSString *url = [NSString stringWithFormat:@"%@/mobile/getUploadPictureSign.action",g_id];
  811. NSDictionary *param = @{
  812. @"master":g_master,
  813. @"em_imid":g_server.myself.userId,
  814. @"emcode":g_emcode
  815. };
  816. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  817. UASNetworkManager *mannage = [UASNetworkManager shareManager];
  818. mannage.responseSerializer = [AFJSONResponseSerializer serializer];
  819. [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  820. NSString *faceStr = FORMAT(@"%@",responseObject[@"em_uploadsign"]);
  821. if ([faceStr isEqualToString:@"1"]) {
  822. [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  823. if (index == 2) {
  824. [IDLFaceDetectionManager.sharedInstance reset];
  825. [[IDLFaceDetectionManager sharedInstance] startInitial];
  826. dvc.hasFinished = NO;
  827. [dvc startCapture];
  828. }
  829. if (index == 1) {
  830. [dvc dismissViewControllerAnimated:YES completion:nil];
  831. }
  832. }];
  833. }else{
  834. //无此用户走人脸注册流程
  835. [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  836. if (index == 2) {
  837. [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
  838. }
  839. if (index == 1) {
  840. [dvc dismissViewControllerAnimated:YES completion:nil];
  841. }
  842. }];
  843. }
  844. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  845. [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  846. if (index == 2) {
  847. [IDLFaceDetectionManager.sharedInstance reset];
  848. [[IDLFaceDetectionManager sharedInstance] startInitial];
  849. dvc.hasFinished = NO;
  850. [dvc startCapture];
  851. }
  852. if (index == 1) {
  853. [dvc dismissViewControllerAnimated:YES completion:nil];
  854. }
  855. }];
  856. }];
  857. }
  858. #pragma mark --- 人脸注册
  859. -(void)RegisterUserFactToBaiduFaceListWithFaceImageString:(NSString*)bestImageStr andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData
  860. {
  861. // __weak typeof(self) weakSelf = self;
  862. [[NetAccessModel sharedInstance] registerFaceWithImageBaseString:bestImageStr completion:^(NSError *error, id resultObject) {
  863. NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
  864. SLog(@"人脸识别数据:%@",dict);
  865. //先判断接口请求是否成功
  866. NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
  867. if ([success isEqualToString:@"SUCCESS"]) {
  868. [dvc dismissViewControllerAnimated:YES completion:nil];
  869. //在ERP上做标识
  870. [self changeFaceStateToERP];
  871. //注册成功后,走打卡流程
  872. [self startPunchCard:imageData];
  873. }
  874. }];
  875. }
  876. #pragma mark --- 百度人脸注册成功后,在ERP上做个标识
  877. -(void)changeFaceStateToERP
  878. {
  879. NSString *url = [NSString stringWithFormat:@"%@/mobile/updateUploadPictureSign.action",g_id];
  880. NSDictionary *param = @{
  881. @"master":g_master,
  882. @"em_imid":g_server.myself.userId,
  883. @"emcode":g_emcode,
  884. @"em_uploadsign":@"1"
  885. };
  886. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  887. UASNetworkManager *mannage = [UASNetworkManager shareManager];
  888. mannage.responseSerializer = [AFJSONResponseSerializer serializer];
  889. [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  890. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  891. }];
  892. }
  893. //2.1导航栏右按钮--设置界面
  894. - (void)pushToSetting
  895. {
  896. OutWorkingSettingViewController * osv =[[OutWorkingSettingViewController alloc]init];
  897. [self.navigationController pushViewController:osv animated:YES];
  898. }
  899. //2.2导航栏左边按钮
  900. -(void)backView
  901. {
  902. /*JOOAViewController * ovc =[[JOOAViewController alloc]init];
  903. IndependentOAViewController * ivc = [[IndependentOAViewController alloc]init];
  904. UIViewController *target = nil;
  905. for (UIViewController * controller in self.navigationController.viewControllers)
  906. { //遍历
  907. if ([controller isKindOfClass:[ovc class]]||[controller isKindOfClass:[ivc class]]) { //这里判断是否为你想要跳转的页面
  908. target = controller;
  909. }
  910. }
  911. if (target) {
  912. [self.navigationController popToViewController:target animated:YES]; //跳转
  913. }*/
  914. [self.navigationController popViewControllerAnimated:YES];
  915. }
  916. //3,初始化tableView
  917. - (void)setUptableView
  918. {
  919. _tableView=[[UITableView alloc]initWithFrame:CGRectMake(0,0,self_width,self_height-64) style:UITableViewStyleGrouped];
  920. _tableView.delegate=self;
  921. _tableView.dataSource=self;
  922. _tableView.backgroundColor = [UIColor colorWithRed:235/255.0 green:233/255.0 blue:233/255.0 alpha:1.0];
  923. [self.view addSubview:_tableView];
  924. }
  925. //4,获取所有的外勤计划列表
  926. - (void)getAlldataOfOutPlans
  927. {
  928. NSString * emcode = [[NSUserDefaults standardUserDefaults] stringForKey:@"erpaccount"];
  929. NSString * ipStr = [[NSUserDefaults standardUserDefaults] stringForKey:@"ipAndPort"];
  930. NSString *sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
  931. NSString *url = [NSString stringWithFormat:@"%@mobile/mobileoutplan.action?master=%@&sessionUser=%@&emcode=%@&sessionId=%@",g_id,g_master,g_sessionUser,emcode,sessionId];
  932. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  933. UASNetworkManager *mannage = [UASNetworkManager shareManager];
  934. //拼接sessionID
  935. NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
  936. //设置cookie
  937. [mannage.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
  938. [mannage.requestSerializer setValue:FORMAT(@"%@",g_sessionUser) forHTTPHeaderField:@"sessionUser"];
  939. mannage.responseSerializer = [AFJSONResponseSerializer serializer];
  940. [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  941. self.isPunchHand = NO;
  942. [MBProgressHUD hideHUDForView:self.view];
  943. //1,获取数据
  944. NSMutableArray * allData = [[NSMutableArray alloc]init];
  945. for (id obj in responseObject[@"data"])
  946. {
  947. [allData addObject:obj];
  948. }
  949. allData =[NSDictionary changeType:allData];
  950. SLog(@"多少条:%@",allData);
  951. //更新时调用,如果有新的数据存入数据库
  952. if (_cellDataSource.count>_sectionSource.count)
  953. {
  954. [[TIFmdbManager shareManager] createOrOpenDatabasaWithDbName:WAIQINGJIHUA completed:^(BOOL result) {
  955. if (result) {
  956. [[TIFmdbManager shareManager] executeWithDb:WAIQINGJIHUA excuteBlock:^(FMDatabaseQueue *dbQueue) {
  957. [dbQueue inDatabase:^(FMDatabase *db) {
  958. NSDictionary *modelDic = [allData lastObject];
  959. NSString *states = [modelDic objectForKey:@"MPD_STATUS"];
  960. if (states == nil || states.length == 0) {
  961. states = @"0";
  962. }
  963. NSString *statesOne = @"0";
  964. //为了实现更换手机打卡,有记录时间,状态为1,不需要重新签到,>6防止出现<null>字段,
  965. if ([NSString stringWithFormat:@"%@",modelDic[@"MPD_ACTDATE"]].length > 6) {
  966. statesOne = [@"1" mutableCopy];
  967. }
  968. NSString *sql = [NSString stringWithFormat:@"INSERT INTO %@ (%@, %@,%@, %@, %@, %@, %@, %@, %@, %@,%@, %@, %@, %@, %@, %@,%@,%@,%@) VALUES ( ?, ?, ? ,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)",@"outWorkTable",
  969. @"MD_LATITUDE",
  970. @"MD_LONGITUDE",
  971. @"MPD_ACTDATE",
  972. @"MPD_ADDRESS",
  973. @"MPD_ARRIVEDATE",
  974. @"MPD_COMPANY",
  975. @"MPD_DISTANCE",
  976. @"MPD_ID",
  977. @"MPD_KIND",
  978. @"MPD_LOCATION",
  979. @"MPD_MPID",
  980. @"MPD_OUTDATE",
  981. @"MPD_RECORDDATE",
  982. @"MPD_REMARK",
  983. @"MPD_STATUS",
  984. @"MP_ID",
  985. @"JO_STATUS",
  986. @"JO_ZHANGTAO",
  987. @"JO_UUID"
  988. ];
  989. if (![db executeUpdate:sql,
  990. [modelDic objectForKey:@"MD_LATITUDE"],
  991. [modelDic objectForKey:@"MD_LONGITUDE"],
  992. [modelDic objectForKey:@"MPD_ACTDATE"],
  993. [modelDic objectForKey:@"MPD_ADDRESS"],
  994. [modelDic objectForKey:@"MPD_ARRIVEDATE"],
  995. [modelDic objectForKey:@"MPD_COMPANY"],
  996. [modelDic objectForKey:@"MPD_DISTANCE"],
  997. [modelDic objectForKey:@"MPD_ID"],
  998. [modelDic objectForKey:@"MPD_KIND"],
  999. [modelDic objectForKey:@"MPD_LOCATION"],
  1000. [modelDic objectForKey:@"MPD_MPID"],
  1001. [modelDic objectForKey:@"MPD_OUTDATE"],
  1002. [modelDic objectForKey:@"MPD_RECORDDATE"],
  1003. [modelDic objectForKey:@"MPD_REMARK"],
  1004. states,
  1005. [modelDic objectForKey:@"MP_ID"],
  1006. statesOne,
  1007. g_master,
  1008. g_emcode
  1009. ])
  1010. { }
  1011. }];
  1012. } completed:^{
  1013. OutWorkModel * model=[OutWorkModel mj_objectWithKeyValues:[allData lastObject]];
  1014. NSString *str = model.MPD_STATUS;
  1015. if (str == nil || str.length == 0) {
  1016. str = @"0";
  1017. }
  1018. NSString *statesOne = @"0";
  1019. //为了实现更换手机打卡,有记录时间,状态为1,不需要重新签到,>6防止出现<null>字段,
  1020. if ([NSString stringWithFormat:@"%@",model.MPD_ACTDATE].length > 6) {
  1021. statesOne = [@"1" mutableCopy];
  1022. }
  1023. [[TIFmdbManager shareManager] executeWithDb:WAIQINGJIHUA excuteBlock:^(FMDatabaseQueue *dbQueue) {
  1024. [dbQueue inDatabase:^(FMDatabase *db) {
  1025. [db executeUpdate:[@"" stringByAppendingFormat:@"UPDATE '%@' SET JO_STATUS='%@',JO_ZHANGTAO='%@',JO_UUID='%@' WHERE MPD_ID='%@'",@"outWorkTable",statesOne,g_master,emcode,model.MPD_ID]];
  1026. }];
  1027. } completed:^{
  1028. [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
  1029. }];
  1030. }];
  1031. }
  1032. }];
  1033. // [fmdb_obj isTableOK:@"outWorkTable"];
  1034. //
  1035. // [self InsetTableForOutWork:[allData lastObject]];
  1036. // OutWorkModel * model=[OutWorkModel mj_objectWithKeyValues:[allData lastObject]];
  1037. //
  1038. // NSString *str = model.MPD_STATUS;
  1039. // if (str == nil || str.length == 0) {
  1040. //
  1041. // str = @"0";
  1042. //
  1043. // }
  1044. //
  1045. // [self up_FMDB_DataWithTableName:[@"" stringByAppendingFormat:@"UPDATE '%@' SET JO_STATUS='%@',JO_ZHANGTAO='%@',JO_UUID='%@' WHERE MPD_ID='%@'",@"outWorkTable",str,g_master,emcode,model.MPD_ID]];
  1046. //
  1047. // [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
  1048. //
  1049. }
  1050. //清空数组
  1051. [_cellDataSource removeAllObjects];
  1052. [_sectionSource removeAllObjects];
  1053. [_yesOrNoEntingArr removeAllObjects];
  1054. for (int i=0; i<allData.count; i++)
  1055. {
  1056. OutWorkModel * model=[OutWorkModel mj_objectWithKeyValues:allData[i]];
  1057. [_sectionSource addObject:model];
  1058. }
  1059. //DLog(@"有多少个外勤计划:%@",_sectionSource);
  1060. if (_sectionSource.count!=0) {
  1061. //转模型
  1062. for (int i=0; i<_sectionSource.count; i++)
  1063. {
  1064. [_cellDataSource addObject:[self changgeModel:_sectionSource[i]]];
  1065. [_yesOrNoEntingArr addObject:@"no"];
  1066. }
  1067. if (self.BusinessAddOutWork == YES) {
  1068. // self.model = [[JOWQJHDATAModel alloc]init];
  1069. [self calculateTowPoint:self.model.Latitude With:self.model.Longetude];
  1070. self.model.CreateTime = [self getCurrentTime];
  1071. self.model.CreateAddress = [self getCurrentAddress];
  1072. self.model.Shiduan = @"半天";
  1073. self.model.ShijArriveTime=@"";
  1074. self.model.ShijLeaveTime=@"";
  1075. self.model.Juli = [self getGaoWithBaidu:self.model.Latitude with:self.model.Longetude];
  1076. self.model.ShiSjuli =[self getGaoWithBaidu:self.model.Latitude with:self.model.Longetude];
  1077. self.model.WhatLocation = @"中国百度";
  1078. [_cellDataSource addObject:self.model];
  1079. [_yesOrNoEntingArr addObject:@"yes"];
  1080. }
  1081. }
  1082. else{
  1083. if (self.BusinessAddOutWork == YES) {
  1084. // self.model = [[JOWQJHDATAModel alloc]init];
  1085. [self calculateTowPoint:self.model.Latitude With:self.model.Longetude];
  1086. self.model.CreateTime = [self getCurrentTime];
  1087. self.model.CreateAddress = [self getCurrentAddress];
  1088. self.model.Shiduan = @"半天";
  1089. self.model.ShijArriveTime=@"";
  1090. self.model.ShijLeaveTime=@"";
  1091. self.model.Juli = [self getGaoWithBaidu:self.model.Latitude with:self.model.Longetude];
  1092. self.model.ShiSjuli =[self getGaoWithBaidu:self.model.Latitude with:self.model.Longetude];
  1093. self.model.WhatLocation = @"中国百度";
  1094. [_cellDataSource addObject:self.model];
  1095. [_yesOrNoEntingArr addObject:@"yes"];
  1096. }else{
  1097. JOWQJHDATAModel * model=[[JOWQJHDATAModel alloc]init];
  1098. model.CreateTime=[self getCurrentTime];
  1099. model.CreateAddress=[self getCurrentAddress];
  1100. model.Shiduan=@"半天";//默认
  1101. model.ShijArriveTime=@"";
  1102. model.ShijLeaveTime=@"";
  1103. model.WhatLocation=@"";
  1104. [_cellDataSource addObject:model];
  1105. [_yesOrNoEntingArr addObject:@"yes"];
  1106. }
  1107. }
  1108. //刷新数据
  1109. [MBProgressHUD hideHUDForView:self.view];
  1110. [_tableView reloadData];
  1111. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1112. self.isPunchHand = NO;
  1113. [MBProgressHUD hideHUDForView:self.view];
  1114. if (error)
  1115. {
  1116. JOWQJHDATAModel * model=[[JOWQJHDATAModel alloc]init];
  1117. model.CreateTime=[self getCurrentTime];
  1118. model.CreateAddress=[self getCurrentAddress];
  1119. model.Shiduan=@"半天";//默认
  1120. model.ShijArriveTime=@"";
  1121. model.ShijLeaveTime=@"";
  1122. [_cellDataSource addObject:model];
  1123. [_yesOrNoEntingArr addObject:@"yes"];
  1124. [_tableView reloadData];
  1125. // [JOShowMessageFromNavi showDropViewWithMessage:@"请求失败,请检查网络" ToNavi:self.navigationController withColor:nil];
  1126. if (error.code==-1009)
  1127. {
  1128. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_custom_networkDisconnect") ToNavi:self.navigationController withColor:nil];
  1129. }else if (error.code==-1001)
  1130. {
  1131. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_custom_networkTimeOut") ToNavi:self.navigationController withColor:nil];
  1132. }
  1133. else{
  1134. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_custom_getDataFaild") ToNavi:self.navigationController withColor:nil];
  1135. }
  1136. }
  1137. }];
  1138. }
  1139. #pragma mark -- B2B接口
  1140. - (void)b2bGetAlldataOfOutPlans
  1141. {
  1142. NSString * emcode = [[NSUserDefaults standardUserDefaults] stringForKey:@"erpaccount"];
  1143. [B2BHTTPRequest Get:B2B_GET_OUTP_PLANDATA pageSize:0 condition:@"" Completion:^(id ObjectData, NSError *error) {
  1144. if (error==nil)
  1145. {
  1146. SLog(@"多少组%@",ObjectData);
  1147. self.isPunchHand = NO;
  1148. //1,获取数据
  1149. [MBProgressHUD hideHUDForView:self.view];
  1150. ObjectData=[NSDictionary changeType:ObjectData];
  1151. NSMutableArray * allData = [[NSMutableArray alloc]init];
  1152. for (id obj in ObjectData[@"data"])
  1153. {
  1154. [allData insertObject:obj atIndex:0];
  1155. }
  1156. //更新时调用,如果有新的数据存入数据库
  1157. if (_cellDataSource.count>_sectionSource.count)
  1158. {
  1159. OutWorkModel * model=[[OutWorkModel alloc]init];
  1160. /*
  1161. "md_latitude" = "22.54051796280508";
  1162. "md_longitude" = "113.953009331281";
  1163. "mp_firsttime" = 1491472413863;
  1164. "mp_id" = 810;
  1165. "mp_lasttime" = 1491472586565;
  1166. "mpd_address" = "\U6df1\U5733\U5e02\U5357\U5c71\U533a\U79d1\U6280\U5357\U4e94\U8def5\U53f7";
  1167. "mpd_arrivedate" = 1491472769000;
  1168. "mpd_company" = "\U82f1\U5510\U5927\U53a6";
  1169. "mpd_distance" = 67;
  1170. "mpd_id" = 849;
  1171. "mpd_kind" = "\U534a\U5929";
  1172. "mpd_location" = "\U5e7f\U4e1c\U7701\U6df1\U5733\U5e02\U5357\U5c71\U533a\U9ad8\U65b0\U5357\U56db\U9053\U9760\U8fd1\U82f1\U5510\U5927\U53a6";
  1173. "mpd_mpid" = 810;
  1174. "mpd_recorddate" = 1491472354621;
  1175. "mpd_remark" = "\U4e1a\U52a1\U5904\U7406";
  1176. "mpd_status" = "\U5728\U5f55\U5165";
  1177. */
  1178. model.MD_LATITUDE=FORMAT(@"%@",[[allData lastObject] objectForKey:@"md_latitude"]);
  1179. model.MD_LONGITUDE=FORMAT(@"%@",[[allData lastObject] objectForKey:@"md_longitude"]);
  1180. model.MP_ID=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mp_id"]);
  1181. model.MPD_ADDRESS=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_address"]);
  1182. model.MPD_ARRIVEDATE=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_arrivedate"]);
  1183. model.MPD_DISTANCE=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_distance"]);
  1184. model.MPD_ID=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_id"]);
  1185. model.MPD_KIND=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_kind"]);
  1186. model.MPD_LOCATION=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_location"]);
  1187. model.MPD_MPID=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_mpid"]);
  1188. model.MPD_RECORDDATE=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_recorddate"]);
  1189. model.MPD_REMARK=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_remark"]);
  1190. model.MPD_STATUS=FORMAT(@"%@",[[allData lastObject] objectForKey:@"mpd_status"]);
  1191. model.MPD_COMPANY=FORMAT(@"%@",[[allData lastObject] objectForKey: @"mpd_company"]);
  1192. model.MPD_OUTDATE=FORMAT(@"%@",[[allData lastObject] objectForKey: @"mp_lasttime"]);
  1193. model.MPD_ACTDATE=FORMAT(@"%@",[[allData lastObject] objectForKey: @"mp_firsttime"]);
  1194. [[TIFmdbManager shareManager] createOrOpenDatabasaWithDbName:WAIQINGJIHUA completed:^(BOOL result) {
  1195. if (result) {
  1196. [[TIFmdbManager shareManager] executeWithDb:WAIQINGJIHUA excuteBlock:^(FMDatabaseQueue *dbQueue) {
  1197. [dbQueue inDatabase:^(FMDatabase *db) {
  1198. NSString *states = model.MPD_STATUS;
  1199. if (states == nil || states.length == 0) {
  1200. states = @"0";
  1201. }
  1202. NSString *strOne = @"0";
  1203. if ([NSString stringWithFormat:@"%@",model.MPD_ACTDATE].length > 6) {
  1204. strOne = @"1";
  1205. }
  1206. NSString *sql = [NSString stringWithFormat:@"INSERT INTO %@ (%@, %@,%@, %@, %@, %@, %@, %@, %@, %@,%@, %@, %@, %@, %@, %@,%@,%@,%@) VALUES ( ?, ?, ? ,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)",@"outWorkTable",
  1207. @"MD_LATITUDE",
  1208. @"MD_LONGITUDE",
  1209. @"MPD_ACTDATE",
  1210. @"MPD_ADDRESS",
  1211. @"MPD_ARRIVEDATE",
  1212. @"MPD_COMPANY",
  1213. @"MPD_DISTANCE",
  1214. @"MPD_ID",
  1215. @"MPD_KIND",
  1216. @"MPD_LOCATION",
  1217. @"MPD_MPID",
  1218. @"MPD_OUTDATE",
  1219. @"MPD_RECORDDATE",
  1220. @"MPD_REMARK",
  1221. @"MPD_STATUS",
  1222. @"MP_ID",
  1223. @"JO_STATUS",
  1224. @"JO_ZHANGTAO",
  1225. @"JO_UUID"
  1226. ];
  1227. if (![db executeUpdate:sql,
  1228. model.MD_LATITUDE,
  1229. model.MD_LONGITUDE,
  1230. model.MPD_ACTDATE,
  1231. model.MPD_ADDRESS,
  1232. model.MPD_ARRIVEDATE,
  1233. model.MPD_COMPANY,
  1234. model.MPD_DISTANCE,
  1235. model.MPD_ID,
  1236. model.MPD_KIND,
  1237. model.MPD_LOCATION,
  1238. model.MPD_MPID,
  1239. model.MPD_OUTDATE,
  1240. model.MPD_RECORDDATE,
  1241. model.MPD_REMARK,
  1242. model.MPD_STATUS,
  1243. model.MP_ID,
  1244. strOne,
  1245. g_master,
  1246. g_emcode
  1247. ])
  1248. {
  1249. }
  1250. }];
  1251. } completed:^{
  1252. NSString *strOne = @"0";
  1253. if ([NSString stringWithFormat:@"%@",model.MPD_ACTDATE].length > 6) {
  1254. strOne = @"1";
  1255. }
  1256. [[TIFmdbManager shareManager] executeWithDb:WAIQINGJIHUA excuteBlock:^(FMDatabaseQueue *dbQueue) {
  1257. [dbQueue inDatabase:^(FMDatabase *db) {
  1258. [db executeUpdate:[@"" stringByAppendingFormat:@"UPDATE '%@' SET JO_STATUS='%@',JO_ZHANGTAO='%@',JO_UUID='%@' WHERE MPD_ID='%@'",@"outWorkTable",strOne,@"B2BMaster",emcode,model.MPD_ID]];
  1259. }];
  1260. } completed:^{
  1261. [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
  1262. }];
  1263. }];
  1264. }
  1265. }];
  1266. // [self B2BInsetTableForOutWork:model];
  1267. //
  1268. // [self up_FMDB_DataWithTableName:[@"" stringByAppendingFormat:@"UPDATE '%@' SET JO_STATUS='%@',JO_ZHANGTAO='%@',JO_UUID='%@' WHERE MPD_ID='%@'",@"outWorkTable",@"0",@"B2BMaster",emcode,model.MPD_ID]];
  1269. //
  1270. // [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
  1271. }
  1272. //清空数组
  1273. [_cellDataSource removeAllObjects];
  1274. [_sectionSource removeAllObjects];
  1275. [_yesOrNoEntingArr removeAllObjects];
  1276. for (int i=0; i<allData.count; i++)
  1277. {
  1278. /*
  1279. "md_latitude" = "22.61805489345343";
  1280. "md_longitude" = "114.1416624713691";
  1281. "mp_id" = 201;
  1282. "mpd_address" = "\U6df1\U60e0\U8def318\U53f7\U9644\U8fd1";
  1283. "mpd_arrivedate" = 1489830723000;
  1284. "mpd_company" = "\U597d\U4e45\U4e0d\U89c111";
  1285. "mpd_distance" = "21182.76";
  1286. "mpd_id" = 221;
  1287. "mpd_kind" = "\U534a\U5929";
  1288. "mpd_location" = "\U5728\U82f1\U5510\U5927\U53a6\U9644\U8fd1";
  1289. "mpd_mpid" = 201;
  1290. "mpd_recorddate" = 1489744861002;
  1291. "mpd_remark" = "\U5ba2\U60c5\U7ef4\U62a4";
  1292. "mpd_status" = "\U5728\U5f55\U5165";
  1293. */
  1294. OutWorkModel * model=[[OutWorkModel alloc]init];
  1295. model.MD_LATITUDE=FORMAT(@"%@",[allData[i] objectForKey:@"md_latitude"]);
  1296. model.MD_LONGITUDE=FORMAT(@"%@",[allData[i] objectForKey:@"md_longitude"]);
  1297. model.MP_ID=FORMAT(@"%@",[allData[i] objectForKey:@"mp_id"]);
  1298. model.MPD_ADDRESS=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_address"]);
  1299. model.MPD_ARRIVEDATE=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_arrivedate"]);
  1300. model.MPD_DISTANCE=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_distance"]);
  1301. model.MPD_ID=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_id"]);
  1302. model.MPD_KIND=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_kind"]);
  1303. model.MPD_LOCATION=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_location"]);
  1304. model.MPD_MPID=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_mpid"]);
  1305. model.MPD_RECORDDATE=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_recorddate"]);
  1306. model.MPD_REMARK=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_remark"]);
  1307. model.MPD_STATUS=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_status"]);
  1308. model.MPD_COMPANY=FORMAT(@"%@",[allData[i] objectForKey:@"mpd_company"]);
  1309. if ([[allData[i] allKeys] containsObject:@"mp_lasttime"])
  1310. {
  1311. model.MPD_OUTDATE=FORMAT(@"%@",[allData[i] objectForKey: @"mp_lasttime"]);
  1312. }else{
  1313. model.MPD_OUTDATE=@"";
  1314. }
  1315. if ([[allData[i] allKeys] containsObject:@"mp_firsttime"])
  1316. {
  1317. model.MPD_ACTDATE=FORMAT(@"%@",[allData[i] objectForKey: @"mp_firsttime"]);
  1318. }else{
  1319. model.MPD_ACTDATE=@"";
  1320. }
  1321. [_sectionSource addObject:model];
  1322. }
  1323. //DLog(@"有多少个外勤计划:%@",_sectionSource);
  1324. //转模型
  1325. for (int i=0; i<_sectionSource.count; i++)
  1326. {
  1327. [_cellDataSource addObject:[self changgeModel:_sectionSource[i]]];
  1328. [_yesOrNoEntingArr addObject:@"no"];
  1329. }
  1330. //如果为空,设置一个空数据模型
  1331. if (_sectionSource.count==0)
  1332. {
  1333. JOWQJHDATAModel * model=[[JOWQJHDATAModel alloc]init];
  1334. model.CreateTime=[self getCurrentTime];
  1335. model.CreateAddress=[self getCurrentAddress];
  1336. model.Shiduan=@"半天";//默认
  1337. model.ShijArriveTime=@"";
  1338. model.ShijLeaveTime=@"";
  1339. [_cellDataSource addObject:model];
  1340. [_yesOrNoEntingArr addObject:@"yes"];
  1341. }
  1342. //刷新数据
  1343. [_tableView reloadData];
  1344. }
  1345. else
  1346. {
  1347. DLog(@"%@",error);
  1348. self.isPunchHand = NO;
  1349. [MBProgressHUD hideHUDForView:self.view];
  1350. JOWQJHDATAModel * model=[[JOWQJHDATAModel alloc]init];
  1351. model.CreateTime=[self getCurrentTime];
  1352. model.CreateAddress=[self getCurrentAddress];
  1353. model.Shiduan=@"半天";//默认
  1354. model.ShijArriveTime=@"";
  1355. model.ShijLeaveTime=@"";
  1356. [_cellDataSource addObject:model];
  1357. [_yesOrNoEntingArr addObject:@"yes"];
  1358. [_tableView reloadData];
  1359. [MBProgressHUD hideHUDForView:self.view];
  1360. [JOShowMessageFromNavi showDropViewWithMessage:@"请求失败,请检查网络" ToNavi:self.navigationController withColor:nil];
  1361. }
  1362. [MBProgressHUD hideHUDForView:self.view];
  1363. }];
  1364. }
  1365. //5,初始化路线规划
  1366. -(void)initRountSearch
  1367. {
  1368. self.searchAPI = [[AMapSearchAPI alloc] init];
  1369. self.searchAPI.delegate = self;
  1370. }
  1371. //6,手动定位
  1372. - (void)initLocation
  1373. {
  1374. if (![UASUserInfo shareManager].inRegion) {//境外
  1375. [UASLocaManager getAddressWithWaitInteval:10 completed:^(CLLocation *location, NSString *address, NSError *error) {
  1376. if (error) {
  1377. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutPlanTitle") ToNavi:self.navigationController withColor:nil];
  1378. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1379. model.CreateAddress=@"";
  1380. [_tableView reloadData];
  1381. }else{
  1382. //将当前位子信息存入沙河
  1383. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  1384. [user setObject:address forKey:@"UUCurrentAddress"];
  1385. [user setObject:address forKey:@"UUCurrentCity"];
  1386. [user setObject:[NSString stringWithFormat:@"%f",location.coordinate.latitude] forKey:@"UUCurrentLati"];
  1387. [user setObject:[NSString stringWithFormat:@"%f",location.coordinate.longitude] forKey:@"UUCurrentLong"];
  1388. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1389. model.CreateAddress=address;
  1390. [_tableView reloadData];
  1391. }
  1392. }];
  1393. }else{
  1394. self.JOlocationManager=[[AMapLocationManager alloc]init];
  1395. // 带逆地理信息的一次定位(返回坐标和地址信息)
  1396. [self.JOlocationManager setDesiredAccuracy:kCLLocationAccuracyBest];
  1397. // 定位超时时间,最低2s,此处设置为10s
  1398. self.JOlocationManager.locationTimeout =10;
  1399. // 逆地理请求超时时间,最低2s,此处设置为10s
  1400. self.JOlocationManager.reGeocodeTimeout = 10;
  1401. // 带逆地理(返回坐标和地址信息)。将下面代码中的 YES 改成 NO ,则不会返回地址信息。
  1402. [self.JOlocationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
  1403. if (error)
  1404. {
  1405. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutPlanTitle") ToNavi:self.navigationController withColor:nil];
  1406. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1407. model.CreateAddress=@"";
  1408. [_tableView reloadData];
  1409. if (error.code == AMapLocationErrorLocateFailed)
  1410. {
  1411. return;
  1412. }
  1413. }
  1414. if (regeocode)
  1415. {
  1416. //将当前位子信息存入沙河
  1417. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  1418. [user setObject:regeocode.formattedAddress forKey:@"UUCurrentAddress"];
  1419. [user setObject:regeocode.city forKey:@"UUCurrentCity"];
  1420. [user setObject:[NSString stringWithFormat:@"%f",location.coordinate.latitude] forKey:@"UUCurrentLati"];
  1421. [user setObject:[NSString stringWithFormat:@"%f",location.coordinate.longitude] forKey:@"UUCurrentLong"];
  1422. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1423. model.CreateAddress=regeocode.formattedAddress;
  1424. [_tableView reloadData];
  1425. }
  1426. }];
  1427. }
  1428. }
  1429. #pragma mark -- 路线规划方法
  1430. /* 路径规划搜索回调. */
  1431. - (void)onRouteSearchDone:(AMapRouteSearchBaseRequest *)request response:(AMapRouteSearchResponse *)response
  1432. {
  1433. if (response.route == nil)
  1434. {
  1435. return;
  1436. }else{
  1437. AMapPath *path =response.route.paths[0];
  1438. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1439. model.YujiTime=[self timeFormatted:path.duration];
  1440. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:model];
  1441. [_tableView reloadData];
  1442. }
  1443. }
  1444. //获取预计到达时间
  1445. - (NSString *)timeFormatted:(int)totalSeconds
  1446. {
  1447. //获取当前时间的秒数
  1448. NSTimeInterval nowtime = [[NSDate date] timeIntervalSince1970];
  1449. long long theTime = [[NSNumber numberWithDouble:nowtime] longLongValue];
  1450. DLog(@"%lld",theTime);
  1451. //设置时间格式
  1452. NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
  1453. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  1454. //设置date数据
  1455. NSDate *date = [NSDate dateWithTimeIntervalSince1970:totalSeconds+theTime];
  1456. NSString * str=[formatter stringFromDate:date];
  1457. return str;
  1458. }
  1459. - (void)AMapSearchRequest:(id)request didFailWithError:(NSError *)error
  1460. {
  1461. [JOShowMessageFromNavi showDropViewWithMessage:@"计算预计到达时间失败,请手动输入" ToNavi:self.navigationController withColor:nil];
  1462. DLog(@"Error: %@", error);
  1463. }
  1464. - (void)calculateTowPoint:(NSString *)lat With:(NSString *)loo
  1465. {
  1466. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  1467. NSString * str1=[user objectForKey:@"UUCurrentLati"];
  1468. NSString * str2=[user objectForKey:@"UUCurrentLong"];
  1469. AMapDrivingRouteSearchRequest *navi = [[AMapDrivingRouteSearchRequest alloc] init];
  1470. navi.requireExtension = YES;
  1471. navi.strategy = 5;
  1472. /* 出发点. */
  1473. navi.origin = [AMapGeoPoint locationWithLatitude:[str1 doubleValue]
  1474. longitude:[str2 doubleValue]];
  1475. /* 目的地. */
  1476. navi.destination = [AMapGeoPoint locationWithLatitude:[lat doubleValue]
  1477. longitude:[loo doubleValue]];
  1478. [self.searchAPI AMapDrivingRouteSearch:navi];
  1479. }
  1480. #pragma mark -- 上传接口
  1481. //更新上传数据
  1482. - (void)uploadAction
  1483. {
  1484. //当没有新单据表时不予更新
  1485. if (_cellDataSource.count==_sectionSource.count)
  1486. {
  1487. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseCreateANewDocument") ToNavi:self.navigationController withColor:nil];
  1488. return;
  1489. }
  1490. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1491. //DLog(@"内容有哪些:%@ %@ %@ %@ %@ %@ %@ %@",model.CreateTime,model.CreateAddress,model.CFmudi,model.Shiduan,model.YujiTime,model.CFdanwei,model.CFdizhi,model.ShiSjuli);
  1492. //拦截,单据不完整不允许提交
  1493. if ((model.Latitude == nil || model.Latitude.length == 0) || (model.Longetude == nil || model.Longetude.length == 0)) {
  1494. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseFillinAgain") ToNavi:self.navigationController withColor:nil];
  1495. return;
  1496. }
  1497. if (model.CFdanwei==nil||[model.CFdanwei isEqualToString:@""])
  1498. {
  1499. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseVisitTheUnit") ToNavi:self.navigationController withColor:nil];
  1500. return;
  1501. }
  1502. if (model.CFdizhi==nil||[model.CFdizhi isEqualToString:@""])
  1503. {
  1504. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseSelectAddress") ToNavi:self.navigationController withColor:nil];
  1505. return;
  1506. }
  1507. if (model.CFmudi==nil||[model.CFmudi isEqualToString:@""])
  1508. {
  1509. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseEnterYourVisit") ToNavi:self.navigationController withColor:nil];
  1510. return;
  1511. }
  1512. if (model.YujiTime==nil||[model.YujiTime isEqualToString:@""])
  1513. {
  1514. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseEnterExpectedArrivalTime") ToNavi:self.navigationController withColor:nil];
  1515. return;
  1516. }
  1517. if (model.CreateAddress==nil||[model.CreateAddress isEqualToString:@""]||[model.CreateAddress isEqualToString:@"未获取到当前位置"])
  1518. {
  1519. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_InitialPositionAnomaly") ToNavi:self.navigationController withColor:nil];
  1520. return;
  1521. }
  1522. //4,获取外勤计划列表
  1523. if (g_B2BUser)
  1524. {
  1525. [self B2BpostOutWorkDataToServer];
  1526. }else{
  1527. //上传地址
  1528. _uploadBtn.enabled = NO;
  1529. [self postAddressToServer];
  1530. [self getCodeAndId];
  1531. }
  1532. }
  1533. #pragma mark -- 上传外勤计划
  1534. //1.B2B上传外勤计划列表
  1535. - (void)B2BpostOutWorkDataToServer
  1536. {
  1537. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1538. /*
  1539. @"mpd_distance":model.Juli,//距离
  1540. @"mpd_mpid":_idAndCodeArr[1],//mpid
  1541. @"mpd_kind":model.Shiduan,//类型,(全天,半天)
  1542. @"mpd_detno":@"1",//???
  1543. @"mpd_address":model.CFdizhi,//出访公司地址
  1544. @"mpd_remark":model.CFmudi,//出访目的
  1545. @"mpd_id":@"",//id
  1546. @"mpd_location":model.CreateAddress,//当前位子
  1547. @"mpd_arrivedate":model.YujiTime,//预计到达日期
  1548. @"mpd_company":model.CFdanwei,//出访公司
  1549. @"mpd_recorddate":model.CreateTime,//创建日期
  1550. */
  1551. NSArray * params;
  1552. params = @[@{
  1553. @"mpd_distance":FORMAT(@"%@",model.Juli),//距离
  1554. @"mpd_kind":FORMAT(@"%@",model.Shiduan),//类型,(全天,半天)
  1555. @"longitude":FORMAT(@"%@",model.Longetude),
  1556. @"latitude":FORMAT(@"%@",model.Latitude),
  1557. @"mpd_address":FORMAT(@"%@",model.CFdizhi),
  1558. @"mpd_remark":FORMAT(@"%@",model.CFmudi),
  1559. @"mpd_location":FORMAT(@"%@",model.CreateAddress),
  1560. @"mpd_arrivedate":FORMAT(@"%@",model.YujiTime),
  1561. @"mpd_company":FORMAT(@"%@",model.CFdanwei),
  1562. @"mpd_recorddate":FORMAT(@"%@",model.CreateTime),
  1563. @"enuu":FORMAT(@"%@",g_B2B_enuu),
  1564. @"emcode":FORMAT(@"%@",g_emcode)
  1565. },];
  1566. NSDictionary * formStore1;
  1567. formStore1=@{
  1568. @"mp_visittime":FORMAT(@"%@",model.YujiTime),
  1569. @"mp_address":FORMAT(@"%@",model.CreateAddress),
  1570. @"mp_recorder":@"独立版",
  1571. @"recorderCode":FORMAT(@"%@",g_emcode),
  1572. @"enuu":FORMAT(@"%@",g_B2B_enuu),
  1573. @"emcode":FORMAT(@"%@",g_emcode)
  1574. };
  1575. NSString *str1=[NSString dictionaryToJson:formStore1];
  1576. NSString *str2= [NSString dictionaryToJson:params];
  1577. NSDictionary *dic11 = [NSDictionary dictionaryWithObjectsAndKeys:str2,@"param",
  1578. str1,@"formStore",
  1579. nil];
  1580. [B2BHTTPRequest Post:B2B_POST_OUTP_SAVENEWPLAN pageSize:0 condictonOne:nil condictonTwo:dic11 Completion:^(id ObjectData, NSError *error) {
  1581. if (error==nil)
  1582. {
  1583. DLog(@"保存成功:%@",ObjectData);
  1584. [MBProgressHUD hideHUDForView:self.view];
  1585. [MBProgressHUD showSuccess:Localized(@"UU_custom_saveSuccess")];
  1586. if(self.scheduleBlock){
  1587. self.scheduleBlock();
  1588. }
  1589. [self B2BpostAddress];
  1590. }else{
  1591. DLog(@"失败原因%@",error);
  1592. [MBProgressHUD hideHUDForView:self.view];
  1593. [MBProgressHUD showError:Localized(@"UU_custom_saveFaild")];
  1594. }
  1595. }];
  1596. }
  1597. //2.b2b上传地址
  1598. -(void)B2BpostAddress
  1599. {
  1600. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1601. NSDictionary * formStore;
  1602. formStore=@{
  1603. @"Md_latitude":FORMAT(@"%@",model.Latitude),
  1604. @"Md_address":FORMAT(@"%@",model.CFdizhi),
  1605. @"Md_longitude":FORMAT(@"%@",model.Longetude),
  1606. @"Md_visitcount":@"1",
  1607. @"Md_visittime":FORMAT(@"%@",model.CreateTime),
  1608. @"company":FORMAT(@"%@",model.CFdanwei),
  1609. @"emcode":FORMAT(@"%@",g_emcode),
  1610. @"enuu":FORMAT(@"%@",g_B2B_enuu)
  1611. };
  1612. NSString *str = [NSString dictionaryToJson:formStore];
  1613. NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:
  1614. str,@"formStore",nil];
  1615. DLog(@"%@",formStore);
  1616. [B2BHTTPRequest Post:B2B_POST_OUTP_SAVEADDRESS pageSize:0 condictonOne:@"" condictonTwo:dic1 Completion:^(id ObjectData, NSError *error) {
  1617. if (error==nil)
  1618. {
  1619. DLog(@"上传地址%@",ObjectData);
  1620. }else{
  1621. [self b2bGetAlldataOfOutPlans];
  1622. }
  1623. }];
  1624. }
  1625. //1,单独上传地址
  1626. - (void)postAddressToServer
  1627. {
  1628. //NSString * emcode = [[NSUserDefaults standardUserDefaults] stringForKey:@"erpaccount"];
  1629. NSString * ipStr = [[NSUserDefaults standardUserDefaults] stringForKey:@"ipAndPort"];
  1630. NSString * sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
  1631. /*
  1632. url:http://218.17.158.219:8090/ERP/mobile/addOutAddress.action
  1633. parms:{master=UAS, sessionUser=U0736, sessionId=6C49764C9228E8B5200110015F803667, caller=lp, formStore={
  1634. "Md_latitude":22.544227600097656,
  1635. "Md_address":"南山区科技南路55号",
  1636. "Md_longitude":113.95539093017578,
  1637. "Md_visitcount":1,
  1638. "Md_visittime":"2017-01-04 09:23:08",
  1639. "Md_company":"中兴"
  1640. }}
  1641. */
  1642. NSString * str1=@"";
  1643. NSString * str2=@"";
  1644. NSString * str3=@"";
  1645. NSString * str4=@"";
  1646. //要转码
  1647. if (_jingweiduArr.count==4)
  1648. {
  1649. CLLocationCoordinate2D point=[JZLocationConverter gcj02ToBd09:CLLocationCoordinate2DMake([_jingweiduArr[0] doubleValue] ,[_jingweiduArr[1] doubleValue])];
  1650. str1=[NSString stringWithFormat:@"%f",point.latitude];
  1651. str2=[NSString stringWithFormat:@"%f",point.longitude];
  1652. str3=_jingweiduArr[2];
  1653. str4=_jingweiduArr[3];
  1654. }
  1655. //不用转码
  1656. if (_jingweiduArr.count==5)
  1657. {
  1658. str1=_jingweiduArr[0];
  1659. str2=_jingweiduArr[1];
  1660. str3=_jingweiduArr[2];
  1661. str4=_jingweiduArr[3];
  1662. }
  1663. if ((str1 == nil || str1.length == 0) || (str2 == nil ||str2.length == 0)) {
  1664. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseFillinAgain") ToNavi:self.navigationController withColor:nil];
  1665. return;
  1666. }
  1667. NSString * emcode = [[NSUserDefaults standardUserDefaults] stringForKey:@"erpaccount"];
  1668. NSDictionary * formStore;
  1669. formStore=@{
  1670. @"Md_latitude":str1,
  1671. @"Md_longitude":str2,
  1672. @"Md_address":str3,
  1673. @"Md_visitcount":@"1",
  1674. @"Md_visittime":[self getCurrentTime],
  1675. @"Md_company":str4,
  1676. @"Md_emcode":emcode
  1677. };
  1678. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:formStore options:NSJSONWritingPrettyPrinted error:nil];
  1679. NSString *gridStr=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  1680. DLog(@"%@",formStore);
  1681. NSString *url = [NSString stringWithFormat:@"%@mobile/addOutAddress.action?caller=OUTADDRESS&formStore=%@&master=%@&sessionUser=%@&sessionId=%@",ipStr,gridStr,g_master,g_sessionUser,sessionId];
  1682. url = [NSString stringWithFormat:@"%@mobile/addOutAddress.action",g_id];
  1683. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  1684. NSDictionary *param = [@{
  1685. @"master":g_master,
  1686. @"sessionId":sessionId,
  1687. @"caller":@"lp",
  1688. @"formStore": gridStr,
  1689. } mutableCopy];
  1690. UASNetworkManager *mannage = [UASNetworkManager shareManager];
  1691. //拼接sessionID
  1692. NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
  1693. //设置cookie
  1694. [mannage.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
  1695. [mannage.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
  1696. mannage.responseSerializer = [AFJSONResponseSerializer serializer];
  1697. [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1698. DLog(@"上传地址成功");
  1699. if ([responseObject[@"success"] boolValue]) {
  1700. [[NSUserDefaults standardUserDefaults] setObject:responseObject[@"sessionId"] forKey:@"sessionId"];
  1701. }
  1702. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1703. _uploadBtn.enabled = YES;
  1704. DLog(@"上传地址失败");
  1705. }];
  1706. }
  1707. //2,先获取新单据编号和单据id
  1708. - (void)getCodeAndId
  1709. {
  1710. [_idAndCodeArr removeAllObjects];
  1711. [MBProgressHUD showMessage:@"" toView:self.view];
  1712. NSString *ip = [UASUserInfo shareManager].urlIp;
  1713. NSString *sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
  1714. //caller =@"MOBILEOUTPLAN";
  1715. NSString *url = [NSString stringWithFormat:@"%@common/getCodeString.action?&caller=%@&sessionId=%@&type=2",g_id,@"MOBILEOUTPLAN",sessionId];
  1716. //DLog(@"各大单据获取编号URL:%@",url);
  1717. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  1718. UASNetworkManager *manager = [UASNetworkManager shareManager];
  1719. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  1720. //拼接sessionID
  1721. NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
  1722. //设置cookie
  1723. [manager.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
  1724. [manager request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1725. //DLog(@"单据编号是:%@",responseObject);
  1726. [_idAndCodeArr addObject:[NSString stringWithFormat:@"%@",responseObject[@"code"]]];
  1727. NSString *urlid = [NSString stringWithFormat:@"%@common/getId.action?seq=%@&sessionId=%@",g_id,@"MOBILE_OUTPLAN_SEQ",sessionId];
  1728. urlid = [urlid stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  1729. [manager request:urlid method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1730. DLog(@"Id是:%@",responseObject);
  1731. [_idAndCodeArr addObject:[NSString stringWithFormat:@"%@",responseObject[@"id"]]];
  1732. [self postOutWorkDataToServer:_idAndCodeArr];
  1733. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1734. [MBProgressHUD hideHUDForView:self.view];
  1735. [MBProgressHUD showError:@"获取编号ID失败"];
  1736. }];
  1737. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1738. _uploadBtn.enabled = YES;
  1739. [MBProgressHUD hideHUDForView:self.view];
  1740. [MBProgressHUD showError:@"获取编号失败"];
  1741. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  1742. [MBProgressHUD hideHUDForView:self.view];
  1743. });
  1744. }];
  1745. }
  1746. //3,上传外勤计划列表---上传成功后重新调用接口刷新界面
  1747. - (void)postOutWorkDataToServer:(NSMutableArray *)dataArr
  1748. {
  1749. /*
  1750. url:http://218.17.158.219:8090/ERP/mobile/addOutPlan.action
  1751. parms:{master=UAS, sessionUser=U0736, sessionId=DA4C26A6E80A99E488865EDF370718B1, caller=lp, param=[{
  1752. "mpd_distance":"85.91",
  1753. "mpd_mpid":111236,
  1754. "mpd_kind":"全天",
  1755. "mpd_detno":2131623952,
  1756. "mpd_address":"深圳市南山区高新南五道金证科技大楼8-9楼",
  1757. "mpd_remark":"下班那些年",
  1758. "mpd_id":"",
  1759. "mpd_location":"在英唐大厦附近",
  1760. "mpd_arrivedate":"2016-12-30 14:46:28",
  1761. "mpd_company":"金证股份",
  1762. "mpd_recorddate":"2016-12-30 14:43:59"
  1763. }],
  1764. formStore={
  1765. "mp_visittime":"2016-12-30 14:46:28",
  1766. "mp_address":"中国广东省深圳市南山区科技南五路5",
  1767. "mp_recorder":"龚鹏明",
  1768. "mp_recordercode":"U0736",
  1769. "mp_id":111236,
  1770. "mp_code":"2016128317"
  1771. }}
  1772. */
  1773. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  1774. NSString *sessionId=[[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
  1775. NSString *ip=[UASUserInfo shareManager].urlIp;
  1776. //NSString * userID=[[NSUserDefaults standardUserDefaults] objectForKey:@"erpaccount"];
  1777. //NSString *master=[[[NSUserDefaults standardUserDefaults] objectForKey:@"masterDic"]objectForKey:@"ma_user"];
  1778. if ((model.Latitude == nil || model.Latitude.length == 0) || (model.Longetude == nil || model.Longetude.length == 0)) {
  1779. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseFillinAgain") ToNavi:self.navigationController withColor:nil];
  1780. return;
  1781. }
  1782. NSDictionary * params;
  1783. params = @{
  1784. @"mpd_distance":model.Juli,//距离
  1785. @"mpd_mpid":_idAndCodeArr[1],//mpid
  1786. @"mpd_kind":model.Shiduan,//类型,(全天,半天)
  1787. @"mpd_detno":@"1",//???
  1788. @"mpd_address":model.CFdizhi,//出访公司地址
  1789. @"mpd_remark":model.CFmudi,//出访目的
  1790. @"mpd_id":@"",//id
  1791. @"mpd_location":model.CreateAddress,//当前位子
  1792. @"mpd_arrivedate":model.YujiTime,//预计到达日期
  1793. @"mpd_company":model.CFdanwei,//出访公司
  1794. @"mpd_recorddate":model.CreateTime,//创建日期
  1795. };
  1796. /*
  1797. 增加 mp_status 默认值【在录入】,mp_statuscode 默认值【ENTERING】
  1798. */
  1799. NSDictionary * formStore;
  1800. formStore=@{
  1801. @"mp_visittime":model.YujiTime,//预计到达日期,
  1802. @"mp_address":model.CreateAddress,//当前位子地址
  1803. @"mp_recorder":[[NSUserDefaults standardUserDefaults] stringForKey:@"personName"],
  1804. @"mp_recordercode":[[NSUserDefaults standardUserDefaults] objectForKey:@"erpaccount"],
  1805. @"mp_id":_idAndCodeArr[1],
  1806. @"mp_code":_idAndCodeArr[0],
  1807. @"mp_status":@"在录入",
  1808. @"mp_statuscode":@"ENTERING",
  1809. };
  1810. //DLog(@"两个字典分别是:%@ %@",params,formStore);
  1811. NSData *jsonData1 = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:nil];
  1812. NSString *str1=[[NSString alloc] initWithData:jsonData1 encoding:NSUTF8StringEncoding];
  1813. NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:formStore options:NSJSONWritingPrettyPrinted error:nil];
  1814. NSString *str2=[[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
  1815. NSString *url = [NSString stringWithFormat:@"%@mobile/addOutPlan.action?caller=lp&formStore=%@&param=[%@]&master=%@&sessionUser=%@&sessionId=%@",g_id,str2,str1,g_master,g_sessionUser,sessionId];
  1816. //DLog(@"URL%@",url);
  1817. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  1818. UASNetworkManager *manager = [UASNetworkManager shareManager];
  1819. //拼接sessionID
  1820. NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
  1821. //设置cookie
  1822. [manager.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
  1823. [manager.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
  1824. [manager request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1825. [MBProgressHUD hideHUDForView:self.view];
  1826. [MBProgressHUD showSuccess:Localized(@"UU_custom_submitSuccess")];
  1827. _uploadBtn.enabled = YES;
  1828. self.BusinessAddOutWork = NO;
  1829. [self getAlldataOfOutPlans];
  1830. if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"JOOUTisOrNoPostSPL"] isEqualToString:@"1"])
  1831. {
  1832. [self postSplToServer:_idAndCodeArr[1]];
  1833. }
  1834. // JOGetShenPiManVC * vc=[[JOGetShenPiManVC alloc]init];
  1835. // vc.seqCode=_idAndCodeArr[1];
  1836. // vc.caller = @"MOBILEOUTPLAN";
  1837. // [self.navigationController pushViewController:vc animated:YES];
  1838. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1839. [MBProgressHUD hideHUDForView:self.view];
  1840. _uploadBtn.enabled = YES;
  1841. NSData *returnData = [[error userInfo] objectForKey:@"com.alamofire.serialization.response.error.data"];
  1842. if (returnData) {
  1843. NSDictionary *content = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];
  1844. // 转换数据格式
  1845. NSString *errorStr = [NSString stringWithFormat:@"%@",[content objectForKey:@"exceptionInfo"]];
  1846. DLog(@"错误的原因:%@",errorStr);
  1847. [JOShowMessageFromNavi showDropViewWithMessage:errorStr ToNavi:self.navigationController withColor:nil];
  1848. }
  1849. else{
  1850. [JOShowMessageFromNavi showDropViewWithMessage:@"请检查网络情况" ToNavi:self.navigationController withColor:nil];
  1851. }
  1852. }];
  1853. }
  1854. - (void)postSplToServer:(NSString *)code
  1855. {
  1856. //1,创建一个网络请求管理对象
  1857. UASNetworkManager *manager1 = [UASNetworkManager shareManager];
  1858. manager1.responseSerializer=[AFHTTPResponseSerializer serializer];
  1859. //2,取出sessionID和IP
  1860. NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
  1861. NSString *sessionId=[userDefault stringForKey:@"sessionId"];
  1862. NSString * ips=[UASUserInfo shareManager].urlIp;
  1863. NSString * userID=[[NSUserDefaults standardUserDefaults] objectForKey:@"erpaccount"];
  1864. NSString *master=[[[NSUserDefaults standardUserDefaults] objectForKey:@"masterDic"]objectForKey:@"ma_user"];
  1865. //3.拼接sessionID
  1866. NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
  1867. //4.设置cookie
  1868. [manager1.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
  1869. //5,接口
  1870. NSString * urlAddress1=@"/common/submitCommon.action";
  1871. //6,Caller
  1872. NSString * caller=@"MOBILEOUTPLAN";
  1873. //url
  1874. NSString * url2=[@"" stringByAppendingFormat:@"%@%@?caller=%@&id=%@&sessionId=%@&master=%@&sessionUser=%@",g_id,urlAddress1,caller,code,sessionId,master,userID];
  1875. DLog(@"审批流%@",url2);
  1876. [manager1 request:url2 method:GET parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1877. NSData *data=responseObject;
  1878. id rootDic =[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  1879. SLog(@"这个返回的是ID吗:%@",rootDic);
  1880. //[MBProgressHUD showSuccess:@"审批流提交成功"];
  1881. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1882. SLog(@"请求失败%@",error);
  1883. //[MBProgressHUD showError:@"审批流未开通"];
  1884. }];
  1885. }
  1886. -(void)getAddressDetailFromServer{
  1887. NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
  1888. NSString * ips=[UASUserInfo shareManager].urlIp;
  1889. NSString *urlAdd = [NSString stringWithFormat:@"/mobile/crm/searchCustomer.action"];
  1890. if (self.keyWord == nil) {
  1891. self.keyWord = @"";
  1892. }
  1893. NSString *url = [NSString stringWithFormat:@"%@%@?likestr=%@&page=1&pageSize=20",g_id,urlAdd,self.keyWord];
  1894. UASNetworkManager *manager = [UASNetworkManager shareManager];
  1895. url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  1896. [manager request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  1897. NSDictionary *dict = nil;
  1898. if ([responseObject isKindOfClass:[NSData class]]) {
  1899. dict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
  1900. }else{
  1901. dict = responseObject;
  1902. }
  1903. dict = [NSDictionary changeType:dict];
  1904. NSString *sessionId = dict[@"sessionId"];
  1905. if (sessionId.length > 0) {
  1906. [[NSUserDefaults standardUserDefaults] setObject:sessionId forKey:@"sessionId"];
  1907. }
  1908. if ([dict[@"success"] boolValue]) {
  1909. NSMutableArray *dataArr = dict[@"datas"];
  1910. UASChooseAddDetailVc *detailVc = [UASChooseAddDetailVc new];
  1911. detailVc.dataArr = dataArr;
  1912. detailVc.callBack = ^(NSString *address) {
  1913. self.tishiView.unitNameTextField.text = address;
  1914. };
  1915. [self.navigationController pushViewController:detailVc animated:YES];
  1916. }
  1917. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  1918. }];
  1919. }
  1920. #pragma mark - tableView
  1921. //headerView
  1922. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
  1923. {
  1924. UIView *headerView = [[UIView alloc] init];
  1925. headerView.userInteractionEnabled = YES;
  1926. headerView.backgroundColor = [UIColor clearColor];
  1927. // headerView.backgroundColor = [UIColor redColor];
  1928. UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 4, SCREEN_WIDTH, 40)];
  1929. lbl.text =[NSString stringWithFormat:@" 目的地 %ld",(long)section+1];
  1930. lbl.backgroundColor = Color(250, 249, 249, 1);
  1931. lbl.textColor = Color(250, 85, 4, 1);
  1932. lbl.font = FONT_SIZE(13);
  1933. // [headerView addSubview:lbl];
  1934. if (section>=_sectionSource.count&&section!=0)
  1935. {
  1936. UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  1937. deleteBtn.frame = CGRectMake(SCREEN_WIDTH-60, 4, 60, 40);
  1938. deleteBtn.tag = section;
  1939. [deleteBtn addTarget:self action:@selector(deleteWQlist:) forControlEvents:UIControlEventTouchUpInside];
  1940. deleteBtn.tag=section;
  1941. [headerView addSubview:deleteBtn];
  1942. UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, 25)];
  1943. lbl.text = Localized(@"UU_custom_delete");
  1944. // lbl.backgroundColor = Color(250, 249, 249, 1);
  1945. lbl.textColor = Color(47, 149, 221, 1);
  1946. lbl.textAlignment = NSTextAlignmentCenter;
  1947. lbl.font = FONT_SIZE(12);
  1948. [deleteBtn addSubview:lbl];
  1949. }
  1950. return headerView;
  1951. }
  1952. //删除外勤列表
  1953. - (void)deleteWQlist:(UIButton *)btn
  1954. {
  1955. [UASAlertView showWithTitle:nil content:Localized(@"UU_custom_deleteData") sureTitle:Localized(@"UU_custom_sure") cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
  1956. if (index == 2) {
  1957. [_cellDataSource removeObjectAtIndex:btn.tag];
  1958. [_yesOrNoEntingArr removeObjectAtIndex:btn.tag];
  1959. [_tableView reloadData];
  1960. }
  1961. }];
  1962. }
  1963. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
  1964. {
  1965. if (buttonIndex==0)
  1966. {
  1967. }else if (buttonIndex==1)
  1968. {
  1969. [_cellDataSource removeObjectAtIndex:alertView.tag];
  1970. [_yesOrNoEntingArr removeObjectAtIndex:alertView.tag];
  1971. [_tableView reloadData];
  1972. }
  1973. }
  1974. //FooterView
  1975. - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
  1976. {
  1977. if (section == _cellDataSource.count-1)
  1978. {
  1979. UIView *footerView = [[UIView alloc]init];
  1980. footerView.userInteractionEnabled = YES;
  1981. footerView.backgroundColor = [UIColor clearColor];
  1982. UIButton *addBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  1983. addBtn.frame = CGRectMake(0, 0, SCREEN_WIDTH, 40);
  1984. [addBtn addTarget:self action:@selector(addMoreWQlist) forControlEvents:UIControlEventTouchUpInside];
  1985. [footerView addSubview:addBtn];
  1986. UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 40)];
  1987. lbl.text = Localized(@"UU_work_OA_WorkOutsideSign_newFieldPlan");
  1988. lbl.backgroundColor = Color(250, 249, 249, 1);
  1989. lbl.textColor = Color(47, 149, 221, 1);
  1990. lbl.textAlignment = NSTextAlignmentCenter;
  1991. lbl.font = FONT_SIZE(14);
  1992. [addBtn addSubview:lbl];
  1993. UIButton *uploadBtn = [UIButton sureButtonWithTitle:Localized(@"UU_custom_submit")];
  1994. uploadBtn.frame = CGRectMake(35, CGRectGetMaxY(addBtn.frame)+15, SCREEN_WIDTH - 70, 30);
  1995. [uploadBtn addTarget:self action:@selector(uploadAction) forControlEvents:UIControlEventTouchUpInside];
  1996. self.uploadBtn = uploadBtn;
  1997. [footerView addSubview:uploadBtn];
  1998. [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  1999. make.left.equalTo(footerView).offset(20);
  2000. make.right.equalTo(footerView).offset(-20);
  2001. make.top.equalTo(addBtn.mas_bottom).offset(15);
  2002. make.height.mas_equalTo(40);
  2003. }];
  2004. return footerView;
  2005. }
  2006. else{
  2007. return nil;
  2008. }
  2009. }
  2010. //添加外勤计划列表
  2011. - (void)addMoreWQlist
  2012. {
  2013. //一次只能编辑一个
  2014. if ([[_yesOrNoEntingArr lastObject] isEqualToString:@"yes"])
  2015. {
  2016. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseUpdateListEditNewDocuments") ToNavi:self.navigationController withColor:nil];
  2017. return;
  2018. }
  2019. JOWQJHDATAModel * model=[[JOWQJHDATAModel alloc]init];
  2020. model.CreateTime=[self getCurrentTime];
  2021. model.CreateAddress=[self getCurrentAddress];
  2022. model.Shiduan=@"半天";//默认
  2023. model.ShijArriveTime=@"";
  2024. model.ShijLeaveTime=@"";
  2025. model.WhatLocation=@"";
  2026. [_cellDataSource addObject:model];
  2027. [_yesOrNoEntingArr addObject:@"yes"];
  2028. [_tableView reloadData];
  2029. }
  2030. //cell初始化
  2031. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  2032. {
  2033. //1.cell初始化
  2034. static NSString *identifier = @"cell";
  2035. JOCell * cell=[[JOCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
  2036. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  2037. cell.backgroundColor=Color(250, 249, 249, 1);
  2038. //标题
  2039. cell.nameString=_cellTitleSource[indexPath.row];
  2040. JOWQJHDATAModel * model=_cellDataSource[indexPath.section];
  2041. if (g_B2BUser)
  2042. {
  2043. [cell B2BsetModel:model withIndex:indexPath.row canUserEnditing:[_yesOrNoEntingArr[indexPath.section] boolValue]];
  2044. }else{
  2045. [cell setModel:model withIndex:indexPath.row canUserEnditing:[_yesOrNoEntingArr[indexPath.section] boolValue]];
  2046. }
  2047. if (indexPath.row==3)
  2048. {
  2049. UISegmentedControl * segment = [[UISegmentedControl alloc]initWithItems:@[@"半天",@"全天"]];
  2050. segment.frame =CGRectMake(SCREEN_WIDTH-70, 10, 65, 20);
  2051. [segment addTarget:self action:@selector(clickSegment:) forControlEvents:UIControlEventValueChanged];
  2052. segment.tag=indexPath.section;
  2053. if ([model.Shiduan isEqualToString:@"全天"])
  2054. {
  2055. segment.selectedSegmentIndex=1;
  2056. }else {
  2057. segment.selectedSegmentIndex=0;
  2058. }
  2059. [cell.contentView addSubview:segment];
  2060. }else if (indexPath.row==7)
  2061. {
  2062. UIButton * btn=[UIButton buttonWithType:UIButtonTypeCustom];
  2063. btn.frame=CGRectMake(SCREEN_WIDTH-60,0,60,40);
  2064. //[btn setImage:[UIImage imageNamed:@"JO_naviRoad"] forState:UIControlStateNormal];
  2065. [btn setTitle:@"" forState:UIControlStateNormal];
  2066. btn.tag=indexPath.section;
  2067. [btn addTarget:self action:@selector(roadNavi:) forControlEvents:UIControlEventTouchUpInside];
  2068. [cell.contentView addSubview:btn];
  2069. UILabel * label=[[UILabel alloc]init];
  2070. label.text=Localized(@"UU_work_OA_WorkOutsideSign_Navigation");
  2071. label.frame=CGRectMake(SCREEN_WIDTH-70,10,50,20);
  2072. label.font=FONT_SIZE(12);
  2073. label.textColor=Color(17,76,160,1.0);
  2074. [cell.contentView addSubview:label];
  2075. UIImageView * image=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"JO_naviRoad"]];
  2076. image.frame=CGRectMake(SCREEN_WIDTH-20,12,16,16);
  2077. [cell.contentView addSubview:image];
  2078. }
  2079. return cell;
  2080. }
  2081. //点击选择cell
  2082. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  2083. {
  2084. // DLog(@"第%ld组 第%ld行 被点击了",(long)indexPath.section,(long)indexPath.row);
  2085. //点击拜访单位
  2086. if (indexPath.row==0)
  2087. {
  2088. JOOAOutSelectAddressVC * vc=[[JOOAOutSelectAddressVC alloc]init];
  2089. vc.titleStr = Localized(@"UU_work_OA_WorkOutsideSign_SelectDestination");
  2090. vc.backAddress=^(JOOutAddressModel * model){
  2091. [_jingweiduArr removeAllObjects];
  2092. JOWQJHDATAModel * models=[_cellDataSource lastObject];
  2093. LYAlerterView *tishiView = [[LYAlerterView alloc] initWithFrame:self.view.bounds];
  2094. self.tishiView = tishiView;
  2095. @weakify(self)
  2096. tishiView.chooseAddress = ^{
  2097. @strongify(self)
  2098. [self getAddressDetailFromServer];
  2099. };
  2100. tishiView.tag = 91821;
  2101. NSString *str = model.MD_COMPANY;
  2102. self.keyWord = [str mutableCopy];
  2103. NSInteger bb = (str.length +6)/20;
  2104. NSInteger cc = (str.length+6) % 20;
  2105. if (bb != 0 && cc == 0) {
  2106. tishiView.aa = 20 *bb-20;
  2107. }else if (bb != 0 && cc != 0)
  2108. {
  2109. tishiView.aa = 20 *bb;
  2110. }else{
  2111. tishiView.aa = 0;
  2112. }
  2113. [tishiView sendUintName:model.MD_COMPANY detailAddress:model.MD_ADDRESS];
  2114. tishiView.delegate = self;
  2115. [tishiView setBlock:^(NSString *set) {
  2116. DLog(@"说句:%@",set);
  2117. if ([set isEqualToString:@"skipTheStep"]) {
  2118. models.CFdanwei=model.MD_COMPANY;
  2119. }else{
  2120. models.CFdanwei=set;
  2121. }
  2122. models.CFdizhi=model.MD_ADDRESS;
  2123. NSString * dis=[self getGaoWithBaidu:model.MD_LATITUDE with:model.MD_LONGITUDE];
  2124. models.Juli=dis;
  2125. models.ShiSjuli=dis;
  2126. models.Latitude=FORMAT(@"%@",model.MD_LATITUDE);
  2127. models.Longetude=FORMAT(@"%@",model.MD_LONGITUDE);
  2128. models.WhatLocation=@"中国百度";
  2129. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:models];
  2130. [_tableView reloadData];
  2131. //装进数组
  2132. [_jingweiduArr addObject:model.MD_LATITUDE];
  2133. [_jingweiduArr addObject:model.MD_LONGITUDE];
  2134. [_jingweiduArr addObject:model.MD_ADDRESS];
  2135. [_jingweiduArr addObject:set];
  2136. [_jingweiduArr addObject:@""];
  2137. //计算时间
  2138. [self calculateTowPoint:model.MD_LATITUDE With:model.MD_LONGITUDE];
  2139. }];
  2140. [self.view addSubview:tishiView];
  2141. //这个是高德API模型
  2142. //这个模型的经纬度是百度的
  2143. };
  2144. vc.backNewAddress=^(AMapPOI * model){
  2145. [_jingweiduArr removeAllObjects];
  2146. JOWQJHDATAModel * models=[_cellDataSource lastObject];
  2147. LYAlerterView *tishiView = [[LYAlerterView alloc] initWithFrame:self.view.bounds];
  2148. tishiView.tag = 91821;
  2149. NSString *str = model.address;
  2150. models.CFdanwei=model.name;
  2151. NSInteger bb = (str.length +6)/20;
  2152. NSInteger cc = (str.length+6) % 20;
  2153. if (bb != 0 && cc == 0) {
  2154. tishiView.aa = 20 *bb-20;
  2155. }else if (bb != 0 && cc != 0)
  2156. {
  2157. tishiView.aa = 20 *bb;
  2158. }else{
  2159. tishiView.aa = 0;
  2160. }
  2161. [tishiView sendUintName:model.name detailAddress:model.address];
  2162. tishiView.delegate = self;
  2163. [tishiView setBlock:^(NSString *set) {
  2164. DLog(@"说句:%@",set);
  2165. if ([set isEqualToString:@"skipTheStep"]) {
  2166. models.CFdanwei=model.name;
  2167. }else{
  2168. models.CFdanwei=set;
  2169. }
  2170. //DLog(@"说句:%@",models.CFdanwei);
  2171. models.CFdizhi=FORMAT(@"%@%@%@%@",model.province,model.city,model.district,model.address);
  2172. NSString * dis=[self getDistanceNoChanges:[NSString stringWithFormat:@"%f",model.location.latitude] with:[NSString stringWithFormat:@"%f",model.location.longitude]];
  2173. models.Juli=dis;
  2174. models.ShiSjuli=dis;
  2175. //装进数组
  2176. [_jingweiduArr addObject:[NSString stringWithFormat:@"%f",model.location.latitude]];
  2177. [_jingweiduArr addObject:[NSString stringWithFormat:@"%f",model.location.longitude]];
  2178. [_jingweiduArr addObject:model.address];
  2179. [_jingweiduArr addObject:set]; // 这个你要改的
  2180. CLLocationCoordinate2D point=[JZLocationConverter gcj02ToBd09:CLLocationCoordinate2DMake([_jingweiduArr[0] doubleValue] ,[_jingweiduArr[1] doubleValue])];
  2181. models.Latitude=FORMAT(@"%f",point.latitude);
  2182. models.Longetude=FORMAT(@"%f",point.longitude);
  2183. models.WhatLocation=@"中国高德";
  2184. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:models];
  2185. [_tableView reloadData];
  2186. //计算时间
  2187. [self calculateTowPoint:[NSString stringWithFormat:@"%f",model.location.latitude] With:[NSString stringWithFormat:@"%f",model.location.longitude]];
  2188. }];
  2189. [self.view addSubview:tishiView];
  2190. //这个是高德API模型
  2191. };
  2192. [self.navigationController pushViewController:vc animated:YES];
  2193. }
  2194. //点击选择出访目的
  2195. if (indexPath.row==2)
  2196. {
  2197. JOOAEmergencyViewController * vc=[[JOOAEmergencyViewController alloc]init];
  2198. NSMutableArray * arr=[[NSMutableArray alloc]initWithObjects:Localized(@"UU_work_OA_WorkOutsideSign_CustomerMaintenance"),Localized(@"UU_work_OA_WorkOutsideSign_BusinessProcess"),Localized(@"UU_work_OA_WorkOutsideSign_OtherVisit"), nil];
  2199. vc.dataArray=arr;
  2200. vc.naviColor=Color(215,145,71,1.0);
  2201. JONavigationController * navi=[[JONavigationController alloc]initWithRootViewController:vc];
  2202. [self presentViewController:navi animated:YES completion:^{
  2203. [vc backAddressName:^(NSString *degree) {
  2204. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  2205. model.CFmudi=degree;
  2206. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:model];
  2207. [_tableView reloadData];
  2208. }];
  2209. }];
  2210. }
  2211. //点击选择时间
  2212. else if (indexPath.row==8)
  2213. {
  2214. _dayPickerViewController = [[ZQDayPickerViewController alloc] initWithNibName:NSStringFromClass([ZQDayPickerViewController class]) bundle:nil];
  2215. _dayPickerViewController.selectedColor = [UIColor blackColor];
  2216. _dayPickerViewController.hintTitle = @"请选择";
  2217. _dayPickerViewController.delegate = self;
  2218. [self presentViewController:_dayPickerViewController animated:YES completion:nil];
  2219. }
  2220. }
  2221. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  2222. {
  2223. //固定个数
  2224. return _cellTitleSource.count;
  2225. }
  2226. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  2227. {
  2228. //新增和获取外勤计划列表时,默认为1
  2229. return _cellDataSource.count;
  2230. }
  2231. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  2232. {
  2233. return 40;
  2234. }
  2235. - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
  2236. {
  2237. if (section == 0) {
  2238. return CGFLOAT_MIN;
  2239. }else
  2240. return 25;
  2241. }
  2242. - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
  2243. {
  2244. if (section==(_cellDataSource.count-1))
  2245. {
  2246. return 100;
  2247. }
  2248. else{
  2249. return CGFLOAT_MIN;
  2250. }
  2251. }
  2252. //点击选择拜访类型(半天或者全天)
  2253. - (void)clickSegment:(UISegmentedControl *)seg
  2254. {
  2255. NSString *str=@"";
  2256. if (seg.selectedSegmentIndex==0)
  2257. {
  2258. str=@"半天";
  2259. }else if(seg.selectedSegmentIndex==1)
  2260. {
  2261. str=@"全天";
  2262. }
  2263. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  2264. model.Shiduan=str;
  2265. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:model];
  2266. [_tableView reloadData];
  2267. }
  2268. #pragma mark -- 导航按钮
  2269. - (void)roadNavi:(UIButton *)seg
  2270. {
  2271. JOWQJHDATAModel * model=_cellDataSource[seg.tag];
  2272. NSString * latStr = FORMAT(@"%@",model.Latitude);
  2273. if ([latStr isEqualToString:@"(null)"]||latStr==nil||[latStr isEqualToString:@""])
  2274. {
  2275. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_PleaseSelectAddressField") ToNavi:self.navigationController withColor:nil];
  2276. return;
  2277. }
  2278. // JORouteNaviVC * vc=[[JORouteNaviVC alloc]init];
  2279. //
  2280. // vc.locationArr=[NSArray arrayWithObjects:model.Latitude,model.Longetude,nil];
  2281. //
  2282. // [self.navigationController pushViewController:vc animated:YES];
  2283. if ([model.WhatLocation isEqualToString:@""]||model.WhatLocation==nil)
  2284. {
  2285. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_STAINTDOLALN") ToNavi:self.navigationController withColor:nil];
  2286. return;
  2287. }
  2288. CLLocationCoordinate2D Location1;
  2289. CLLocationCoordinate2D location2;
  2290. CLLocationCoordinate2D location3;
  2291. if ([model.WhatLocation isEqualToString:@"中国高德"])
  2292. {
  2293. //百度坐标
  2294. Location1=[JZLocationConverter gcj02ToBd09:CLLocationCoordinate2DMake([model.Latitude doubleValue], [model.Longetude doubleValue])];
  2295. //高德国际
  2296. location2 = [JZLocationConverter gcj02ToWgs84:CLLocationCoordinate2DMake([model.Latitude doubleValue] ,[model.Longetude doubleValue])];
  2297. //高德坐标
  2298. location3 =CLLocationCoordinate2DMake([model.Latitude doubleValue] ,[model.Longetude doubleValue]);
  2299. }else if ([model.WhatLocation isEqualToString:@"中国百度"])
  2300. {
  2301. //百度坐标
  2302. Location1=CLLocationCoordinate2DMake([model.Latitude doubleValue], [model.Longetude doubleValue]);
  2303. //高德国际
  2304. location2 = [JZLocationConverter bd09ToWgs84:CLLocationCoordinate2DMake([model.Latitude doubleValue] ,[model.Longetude doubleValue])];
  2305. //高德坐标
  2306. location3 = [JZLocationConverter changeBaiduCoordinateToCOMMON:CLLocationCoordinate2DMake([model.Latitude doubleValue] ,[model.Longetude doubleValue])];
  2307. }
  2308. // DLog(@"原始:%f,%f",[model.Latitude doubleValue],[model.Longetude doubleValue]);
  2309. // DLog(@"百度:%f,%f",Location1.latitude,Location1.longitude);
  2310. // DLog(@"高国际:%f,%f",location2.latitude,location2.longitude);
  2311. // DLog(@"高中国:%f,%f",location3.latitude,location3.longitude);
  2312. /*
  2313. 2017-03-29 15:19:37.034609 shiku_im[16068:6289701] 原始:22.576816,113.876476
  2314. 2017-03-29 15:19:37.034876 shiku_im[16068:6289701] 百度:22.583136,113.882932
  2315. 2017-03-29 15:19:37.035077 shiku_im[16068:6289701] 高国际:22.579853,113.871577
  2316. 2017-03-29 15:19:37.035271 shiku_im[16068:6289701] 高中国:22.576816,113.876476
  2317. */
  2318. //系统版本高于8.0,使用UIAlertController
  2319. if (IS_SystemVersionGreaterThanEight)
  2320. {
  2321. UIAlertController * alertController = [UIAlertController alertControllerWithTitle:Localized(@"UU_work_OA_WorkOutsideSign_NavigationToDevice") message:nil preferredStyle:UIAlertControllerStyleActionSheet];
  2322. //自带地图
  2323. [alertController addAction:[UIAlertAction actionWithTitle:Localized(@"UU_work_OA_WorkOutsideSign_AppleMap") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  2324. //使用自带地图导航
  2325. MKMapItem * currentLocation =[MKMapItem mapItemForCurrentLocation];
  2326. MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:location2 addressDictionary:nil]];
  2327. [MKMapItem openMapsWithItems:@[currentLocation,toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
  2328. MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];
  2329. }]];
  2330. //判断是否安装了高德地图,如果安装了高德地图,则使用高德地图导航
  2331. if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
  2332. [alertController addAction:[UIAlertAction actionWithTitle:Localized(@"UU_work_OA_WorkOutsideSign_gaodeMaps") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  2333. DLog(@"alertController -- 高德地图");
  2334. NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication=UU互联&backScheme=IOSJOBOR &lat=%f&lon=%f&dev=0&style=2",location3.latitude,location3.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  2335. [[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlsting]];
  2336. }]];
  2337. }
  2338. //判断是否安装了百度地图,如果安装了百度地图,则使用百度地图导航
  2339. if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {
  2340. [alertController addAction:[UIAlertAction actionWithTitle:Localized(@"UU_work_OA_WorkOutsideSign_BaiduMaps") style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  2341. DLog(@"alertController -- 百度地图");
  2342. NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",Location1.latitude,Location1.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  2343. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];
  2344. }]];
  2345. }
  2346. //添加取消选项
  2347. [alertController addAction:[UIAlertAction actionWithTitle:Localized(@"UU_custom_cancle") style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
  2348. [alertController dismissViewControllerAnimated:YES completion:nil];
  2349. }]];
  2350. //显示alertController
  2351. [self presentViewController:alertController animated:YES completion:nil];
  2352. }
  2353. else{
  2354. [JOShowMessageFromNavi showDropViewWithMessage:@"抱歉,手机系统版本太低无法打开" ToNavi:self.navigationController withColor:nil];
  2355. }
  2356. }
  2357. #pragma mark -- textViewDelegate 暂时没用到
  2358. - (void)HypTextView:(HypTextView *)HypTextView textDidEnd:(NSString *)text
  2359. {
  2360. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  2361. model.CFmudi=text;
  2362. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:model];
  2363. [_tableView reloadData];
  2364. DLog(@"输入的字符:%@",text);
  2365. }
  2366. - (void)HypTextView:(HypTextView *)HypTextView textDidChanged:(NSString *)text
  2367. {
  2368. if (HypTextView.text.length>30)
  2369. {
  2370. HypTextView.text=[HypTextView.text substringToIndex:30];
  2371. [self.view endEditing:YES];
  2372. [KPromptBox showKPromptBoxWithMassage:Localized(@"UU_work_OA_WorkOutsideSign_WordLimit")];
  2373. }
  2374. }
  2375. - (BOOL)textView:(HypTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
  2376. {
  2377. return YES;
  2378. }
  2379. - (BOOL)textViewShouldBeginEditing:(HypTextView *)textView
  2380. {
  2381. return YES;
  2382. }
  2383. - (void)textViewDidEndEditing:(HypTextView *)textView
  2384. {
  2385. }
  2386. //日历选择时间
  2387. - (void)dayPickerViewControllerChoosedDate:(ZQDayPickerViewController *)dayPickerViewController
  2388. {
  2389. NSString * str = [self dateStringFromDate:dayPickerViewController.date];
  2390. JOWQJHDATAModel * model=[_cellDataSource lastObject];
  2391. model.YujiTime=str;
  2392. [_cellDataSource replaceObjectAtIndex:_cellDataSource.count-1 withObject:model];
  2393. [_tableView reloadData];
  2394. DLog(@"选了时间是:%@",str);
  2395. }
  2396. //设置返回时间的格式
  2397. - (NSString *)dateStringFromDate:(NSDate *)date
  2398. {
  2399. NSDateFormatter *formatter = [NSDateFormatter new];
  2400. formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
  2401. return [formatter stringFromDate:date];
  2402. }
  2403. //获取当前位子
  2404. - (NSString *)getCurrentAddress
  2405. {
  2406. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  2407. NSString * weizi=[user objectForKey:@"UUCurrentAddress"];
  2408. //DLog(@"当前位子:%@",weizi);
  2409. //weizi=@"";
  2410. if (weizi.length==0||weizi==nil)
  2411. {
  2412. [JOShowMessageFromNavi showDropViewWithMessage:Localized(@"UU_work_OA_WorkOutsideSign_NoAccessToCurrentPosition") ToNavi:self.navigationController withColor:nil];
  2413. return Localized(@"UU_work_OA_WorkOutsideSign_NoAccessToCurrentPosition");
  2414. }
  2415. return weizi;
  2416. }
  2417. //获取当前时间
  2418. -(NSString *)getCurrentTime
  2419. {
  2420. NSDateFormatter * dataFormatter = [[NSDateFormatter alloc]init];
  2421. [dataFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  2422. NSString * dateStr =[dataFormatter stringFromDate:[NSDate date]];
  2423. DLog(@"%@",dateStr);
  2424. return dateStr;
  2425. }
  2426. //模型转模型
  2427. - (JOWQJHDATAModel *)changgeModel:(OutWorkModel *)model
  2428. {
  2429. JOWQJHDATAModel * models=[[JOWQJHDATAModel alloc]init];
  2430. models.CreateAddress=model.MPD_LOCATION;
  2431. models.CreateTime=model.MPD_RECORDDATE;
  2432. models.CFdanwei=model.MPD_COMPANY;
  2433. models.CFdizhi=model.MPD_ADDRESS;
  2434. models.CFmudi=model.MPD_REMARK;
  2435. models.Shiduan=model.MPD_KIND;
  2436. models.Juli=model.MPD_DISTANCE;
  2437. models.ShiSjuli=[self getGaoWithBaidu:model.MD_LATITUDE with:model.MD_LONGITUDE];
  2438. models.YujiTime=model.MPD_ARRIVEDATE;
  2439. models.ShijArriveTime=model.MPD_ACTDATE;
  2440. models.ShijLeaveTime=model.MPD_OUTDATE;
  2441. models.Latitude=model.MD_LATITUDE;
  2442. models.Longetude=model.MD_LONGITUDE;
  2443. models.WhatLocation=@"中国百度";
  2444. return models;
  2445. }
  2446. //计算本地高德世界与百度坐标距离
  2447. -(NSString * )getGaoWithBaidu:(NSString * )lat with:(NSString * )loo
  2448. {
  2449. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  2450. NSString * str1=[user objectForKey:@"UUCurrentLati"];
  2451. NSString * str2=[user objectForKey:@"UUCurrentLong"];
  2452. //DLog(@"本地%@,%@",str1,str2);
  2453. //DLog(@"服务器 %@,%@",lat,loo);
  2454. //高德世界转火星
  2455. //MAMapPoint point1 = MAMapPointForCoordinate([JZLocationConverter wgs84ToGcj02:CLLocationCoordinate2DMake([str1 doubleValue],[str2 doubleValue])]);
  2456. MAMapPoint point1 = MAMapPointForCoordinate(CLLocationCoordinate2DMake([str1 doubleValue],[str2 doubleValue]));
  2457. //百度转火星
  2458. MAMapPoint point2 = MAMapPointForCoordinate([JZLocationConverter changeBaiduCoordinateToCOMMON:CLLocationCoordinate2DMake([lat doubleValue] ,[loo doubleValue])]);
  2459. //MAMapPoint point2 =MAMapPointForCoordinate(CLLocationCoordinate2DMake([lat doubleValue], [loo doubleValue]));
  2460. // CLLocationCoordinate2D in1=[JZLocationConverter wgs84ToGcj02:CLLocationCoordinate2DMake([str1 doubleValue],[str2 doubleValue])];
  2461. //
  2462. // CLLocationCoordinate2D in2=[JZLocationConverter changeBaiduCoordinateToCOMMON:CLLocationCoordinate2DMake([lat doubleValue] ,[loo doubleValue])];
  2463. //
  2464. // DLog(@"本地转火星%f,%f",in1.latitude,in1.longitude);
  2465. // DLog(@"百度转火星%f,%f",in2.latitude,in2.longitude);
  2466. CLLocationDistance distance = MAMetersBetweenMapPoints(point1,point2);
  2467. NSString * dis = [NSString stringWithFormat:@"%.f",distance];
  2468. // DLog(@"%@",dis);
  2469. return dis;
  2470. }
  2471. //计算两点距离
  2472. - (NSString * )getDistanceNoChanges:(NSString * )lats with:(NSString * )loos
  2473. {
  2474. NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
  2475. NSString * str1=[user objectForKey:@"UUCurrentLati"];
  2476. NSString * str2=[user objectForKey:@"UUCurrentLong"];
  2477. //当前经纬度,转火星坐标
  2478. MAMapPoint point1 = MAMapPointForCoordinate(CLLocationCoordinate2DMake([str1 doubleValue],[str2 doubleValue]));
  2479. //MAMapPoint point1 = MAMapPointForCoordinate([JZLocationConverter wgs84ToGcj02:CLLocationCoordinate2DMake([str1 doubleValue],[str2 doubleValue])]);
  2480. //搜索出来的高德坐标
  2481. MAMapPoint point2=MAMapPointForCoordinate(CLLocationCoordinate2DMake([lats doubleValue],[loos doubleValue]));
  2482. CLLocationDistance distance = MAMetersBetweenMapPoints(point1,point2);
  2483. NSString * dis = [NSString stringWithFormat:@"%.f",distance];
  2484. return dis;
  2485. }
  2486. #pragma makr -LYAlerterViewDelegate
  2487. -(void)LypTextField:(UITextField *)LYTextField textDidChanged:(NSString *)text
  2488. {
  2489. LYAlerterView *aa = (LYAlerterView *)[self.view viewWithTag:91821];
  2490. self.keyWord = [text mutableCopy];
  2491. if (text.length == 0) {
  2492. [aa.SkipThisStepbtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
  2493. }else{
  2494. [aa.SkipThisStepbtn setTitleColor:Color(59, 174, 255, 1.0) forState:UIControlStateNormal];
  2495. }
  2496. }
  2497. - (void)LypTextField:(UITextField *)LYTextField textDidEnd:(NSString *)text
  2498. {
  2499. LYAlerterView *aa = (LYAlerterView *)[self.view viewWithTag:91821];
  2500. self.keyWord = [text mutableCopy];
  2501. if (text.length == 0) {
  2502. [aa.SkipThisStepbtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
  2503. }else{
  2504. [aa.SkipThisStepbtn setTitleColor:Color(59, 174, 255, 1.0) forState:UIControlStateNormal];
  2505. }
  2506. }
  2507. #pragma mark -- 网络监控
  2508. -(void)dealloc
  2509. {
  2510. [self.conn stopNotifier];
  2511. [[NSNotificationCenter defaultCenter] removeObserver:self];
  2512. }
  2513. - (void)networkStateChange
  2514. {
  2515. [self checkNetworkState];
  2516. }
  2517. - (void)checkNetworkState
  2518. {
  2519. // 1.检测wifi状态
  2520. Reachability *wifi = [Reachability reachabilityForLocalWiFi];
  2521. // 2.检测手机是否能上网络(WIFI\3G\2.5G)
  2522. Reachability *conn = [Reachability reachabilityForInternetConnection];
  2523. // 3.判断网络状态
  2524. if ([wifi currentReachabilityStatus] != NotReachable)
  2525. { // 有wifi
  2526. NSString * str=[self getNetWorkStates];
  2527. DLog(@"%@",str);
  2528. if ([str isEqualToString:@"2G"]||[str isEqualToString:@"3G"])
  2529. {
  2530. [JOShowMessageFromNavi showDropViewWithMessage:@"当前网络环境不佳,建议切换到4G网络" ToNavi:self.navigationController withColor:nil];
  2531. }
  2532. } else if ([conn currentReachabilityStatus] != NotReachable)
  2533. { // 没有使用wifi, 使用手机自带网络进行上网
  2534. NSString * str=[self getNetWorkStates];
  2535. DLog(@"%@",str);
  2536. if ([str isEqualToString:@"2G"]||[str isEqualToString:@"3G"])
  2537. {
  2538. [JOShowMessageFromNavi showDropViewWithMessage:@"当前网络环境不佳,建议切换到4G网络" ToNavi:self.navigationController withColor:nil];
  2539. }
  2540. } else{ // 没有网络
  2541. // [KPromptBox showKPromptBoxWithMassage:@"网络已断开,请检查网络"];
  2542. }
  2543. }
  2544. - (NSString *)getNetWorkStates
  2545. {
  2546. if (statusX) {
  2547. return @"4G";
  2548. }
  2549. if (iOS13) {
  2550. return @"4G";
  2551. }
  2552. UIApplication *app = [UIApplication sharedApplication];
  2553. NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
  2554. NSString *state = [[NSString alloc]init];
  2555. int netType = 0;
  2556. //获取到网络返回码
  2557. for (id child in children) {
  2558. if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
  2559. //获取到状态栏
  2560. netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];
  2561. switch (netType) {
  2562. case 0:
  2563. state = @"无网络";
  2564. //无网模式
  2565. break;
  2566. case 1:
  2567. state = @"2G";
  2568. break;
  2569. case 2:
  2570. state = @"3G";
  2571. break;
  2572. case 3:
  2573. state = @"4G";
  2574. break;
  2575. case 5:
  2576. {
  2577. state = @"wifi";
  2578. break;
  2579. default:
  2580. break;
  2581. }
  2582. }
  2583. }
  2584. //根据状态选择
  2585. }
  2586. return state;
  2587. }
  2588. @end