AmsSaleOrderServiceImpl.java 197 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.druid.support.json.JSONUtils;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.steerinfo.dil.feign.*;
  6. import com.steerinfo.dil.mapper.*;
  7. import com.steerinfo.dil.model.*;
  8. import com.steerinfo.dil.service.IAmsSaleOrderService;
  9. import com.steerinfo.dil.util.*;
  10. import com.steerinfo.framework.utils.base.StringUtils;
  11. import io.swagger.annotations.ApiOperation;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import javax.annotation.Resource;
  17. import java.io.IOException;
  18. import java.math.BigDecimal;
  19. import java.text.ParseException;
  20. import java.text.SimpleDateFormat;
  21. import java.util.*;
  22. /**
  23. * AmsSaleOrder服务实现:
  24. *
  25. * @author generator
  26. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  27. * 类描述
  28. * 修订历史:
  29. * 日期:2021-09-06
  30. * 作者:generator
  31. * 参考:
  32. * 描述:AmsSaleOrder服务实现
  33. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  34. * @see null
  35. */
  36. @Service(value = "amsSaleOrderService")
  37. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  38. @Autowired
  39. private AmsSaleOrderMapper amsSaleOrderMapper;
  40. @Autowired
  41. private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  42. @Autowired
  43. private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
  44. @Autowired
  45. TmstruckLoadResult tmstruckLoadResult;
  46. @Autowired
  47. TmstruckWeightResult tmstruckWeightResult;
  48. @Autowired
  49. TmstruckWeightResultMapper tmstruckWeightResultMapper;
  50. @Autowired
  51. TmstruckLoadResultMapper tmstruckLoadResultMapper;
  52. @Autowired
  53. AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
  54. @Autowired
  55. AmsSaleMaterialMapper amsSaleMaterialMapper;
  56. @Autowired
  57. AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
  58. @Autowired
  59. RmsReceivePlaceMapper rmsReceivePlaceMapper;
  60. @Autowired
  61. JoinFeign joinFeign;
  62. @Autowired
  63. OmstruckOrderMapper omstruckOrderMapper;
  64. @Autowired
  65. OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  66. @Autowired
  67. AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
  68. @Autowired
  69. TmsTruckFeign tmsTruckFeign;
  70. @Autowired
  71. EASUtil easUtil;
  72. @Autowired
  73. EASDeleteUtil easDeleteUtil;
  74. @Autowired
  75. EASSaleOrderUtil easSaleOrderUtil;
  76. @Autowired
  77. EASTestUtil easTestUtil;
  78. @Autowired
  79. EASDeleteTestUtil easDeleteTestUtil;
  80. @Autowired
  81. EASDeleteApproveUtil easDeleteApproveUtil;
  82. @Autowired
  83. RmsMaterialMapper rmsMaterialMapper;
  84. @Autowired
  85. TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
  86. @Autowired
  87. WmspOutboundResultMaterialMapper wmspOutboundResultMaterialMapper;
  88. @Resource
  89. EasSaleOrderStatusUtil easSaleOrderStatusUtil;
  90. @Autowired
  91. OtmsFeign otmsFeign;
  92. @Autowired
  93. RmsFeign rmsFeign;
  94. @Autowired
  95. EasFluMakeDateUtil easFluMakeDateUtil;
  96. @Autowired
  97. EASCapacityTestUtil easCapacityTestUtil;
  98. @Autowired
  99. BmstruckFeign bmstruckFeign;
  100. @Autowired
  101. SaleLogUtil saleLogUtil;
  102. private static final List<Integer> dazhouLineIds = Arrays.asList(189982, 189983, 189984, 189985, 189986);
  103. private static final List<Integer> zhuanxianLineIds = Arrays.asList(189987,189988, 189989, 189990, 189991);
  104. @Override
  105. public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
  106. return amsSaleOrderMapper.getSaleOrderInfo(map);
  107. }
  108. @Override
  109. public List<Map<String, Object>> getSaleOrderReported(Map<String, Object> map) {
  110. return amsSaleOrderMapper.getSaleOrderReported(map);
  111. }
  112. @Override
  113. public List<Map<String, Object>> getSaleOrderDetail(Map<String, Object> map) {
  114. return amsSaleOrderMapper.getSaleOrderDetail(map);
  115. }
  116. @Override
  117. public List<Map<String, Object>> getSalePlanName() {
  118. return amsSaleOrderMapper.getSalePlanName();
  119. }
  120. @Override
  121. public List<Map<String, Object>> getShipperName() {
  122. return amsSaleOrderMapper.getShipperName();
  123. }
  124. @Override
  125. public List<Map<String, Object>> getConsigneeCompanyName() {
  126. return amsSaleOrderMapper.getConsigneeCompanyName();
  127. }
  128. @Override
  129. /**
  130. * map存放为前端获取的amsSaleOrder基础数据以及selectionList物资信息
  131. * map1为基础数据包括,收货地址,收货人等
  132. * map2存放的从selectionList取出的数据,包括物资id,物资名称等。
  133. */
  134. public int addAmsSaleOrder(Map<String, Object> map) throws ParseException {
  135. //获取前端传过来的map,
  136. int i = 0;
  137. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  138. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  139. Integer id = (amsSaleOrderMapper.selectMaxId()).intValue();
  140. //生成主键id
  141. amsSaleOrder.setSaleOrderId(new BigDecimal(id));
  142. //WXSDD-年月日-8位数的顺序号
  143. String wxsdd = DataChange.generateEightDigitsNumber("WXSDD", id);
  144. amsSaleOrder.setSaleNumber(wxsdd);
  145. //获得是否自提
  146. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  147. //获取收货地址id
  148. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("receiveId")));
  149. //获取发货单位id
  150. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  151. //获取备注
  152. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  153. //设置销售订单状态
  154. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  155. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  156. amsSaleOrder.setSaleOrderTax("13%");
  157. amsSaleOrder.setInsertUsername("admin");
  158. amsSaleOrder.setInsertTime(new Date());
  159. amsSaleOrder.setUpdateUsername("admin");
  160. amsSaleOrder.setUpdateTime(new Date());
  161. amsSaleOrder.setInsertUpdateRemark("无");
  162. amsSaleOrder.setDeleted(new BigDecimal(0));
  163. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  164. //设置收款客户
  165. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReceiveCustomer"));
  166. i += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  167. //获取车序号和物资信息进行新增车序号与物资中间表
  168. //一个销售订单对应多个车序号
  169. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  170. for (Map<String, Object> map2 : selectionList) {
  171. BigDecimal materialId = DataChange.dataToBigDecimal(map2.get("materialId"));
  172. Integer cxh = (Integer) map2.get("cxh");
  173. //生成车序号与物资实体
  174. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  175. //生成主键
  176. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  177. amsSaleOrderMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
  178. // 生成定向派单
  179. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  180. amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId());
  181. amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  182. //获取收货地址
  183. Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId");
  184. amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId));
  185. //根据收货地址查询承运商
  186. Map<String,Object> map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId);
  187. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4);
  188. //获取收货方电话号码
  189. amsDispatchSaleOrder.setCarrierId(carrierId);
  190. amsDispatchSaleOrder.setDispatchTime(new Date());
  191. //设置成交类型
  192. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  193. //设置下发状态为未下发
  194. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(1));
  195. amsDispatchSaleOrder.setInsertTime(new Date());
  196. amsDispatchSaleOrder.setInsertUsername("admin");
  197. amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  198. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map2.get("saleOrderConsigneeTel").toString());
  199. //获取收货日期
  200. String saleDateOfReceipt =(String) map2.get("saleDateOfReceipt");
  201. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  202. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  203. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  204. //获取收货方姓名
  205. amsSaleOrderMaterial.setSaleOrderConsignee((String) map2.get("saleOrderConsignee"));
  206. //设置车序号
  207. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  208. //设置删除状态
  209. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  210. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  211. //新增车序号与物资中间表
  212. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  213. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  214. //设置物资id
  215. trucknoMaterial.setMaterialId(materialId);
  216. //获取车序号物资id
  217. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  218. Integer orderPlanWeight = (Integer) map2.get("orderPlanWeight");
  219. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  220. //获取物资理重
  221. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map2.get("materialTheoreticalWeight"));
  222. //判断是否有物资理重
  223. if (materialTheoreticalWeight.intValue() != 0) {
  224. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  225. }
  226. //新增车序号与物资中间表
  227. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  228. }
  229. return i;
  230. }
  231. @Transactional(rollbackFor = Exception.class)
  232. @Override
  233. public int uploadSaleOrder(BigDecimal saleOrderId) throws Exception {
  234. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  235. // 调用金蝶接口,将销售订单推送到金蝶系统
  236. Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
  237. Map<String, Object> head = (Map<String, Object>) input.get("head");
  238. head.put("status","");
  239. // 获得金蝶接口配置:正式
  240. Map<String, Object> totalMap = new HashMap<>();
  241. totalMap.putAll(easUtil.getTotalMap());
  242. // 获得金蝶接口配置:测试
  243. //totalMap.putAll(easSaleOrderUtil.getTotalMap());
  244. //Map<String, Object> totalMap = easSaleOrderUtil.getTotalMap();
  245. // 组装报文
  246. totalMap.put("input",input);
  247. System.out.println(totalMap);
  248. String json = JSONUtils.toJSONString(totalMap);
  249. System.out.println(json);
  250. // 得到金蝶返回结果
  251. Map<String,Object> s = joinFeign.pushSaleOrderToEas(totalMap);
  252. try {
  253. newFileTool.newFile("pushSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  254. }catch (Exception e){
  255. e.printStackTrace();
  256. }
  257. if (s == null || s.size() == 0) {
  258. throw new Exception(amsSaleOrder.getSaleNumber() + "登录金蝶失败!");
  259. }else {
  260. try {
  261. JSONObject result1 = new JSONObject(s);
  262. //如果status不为1,抛出异常
  263. if (!result1.getJSONObject("res").getString("status").equals("1")) {
  264. throw new Exception(amsSaleOrder.getSaleNumber() + "上传金蝶失败!");
  265. }
  266. } catch (Exception e) {
  267. e.printStackTrace();
  268. //只抛出自定义异常
  269. throw new Exception(amsSaleOrder.getSaleNumber() + "上传金蝶失败!");
  270. }
  271. }
  272. amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
  273. try {
  274. saleLogUtil.logSaleOrder(saleOrderId,"物流上传销售订单至金蝶" ,"物流" ,SaleLogUtil.UPDATE);
  275. } catch (Exception e) {
  276. e.printStackTrace();
  277. }
  278. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  279. }
  280. @Override
  281. public List<Map<String, Object>> selectBySaleOrderId(BigDecimal saleOrderId) {
  282. return amsSaleOrderMapper.selectBySaleOrderId(saleOrderId);
  283. }
  284. /**
  285. * 修改订单信息、车序号表、车序号物资中间表
  286. *
  287. * @param map
  288. * @return
  289. */
  290. @Override
  291. @Transactional
  292. public int updateAmsSaleOrder(Map<String, Object> map) throws ParseException {
  293. int i = 0;
  294. int j = 0;
  295. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  296. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  297. //修改销售订单表 更新销售订单基础信息
  298. amsSaleOrder.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  299. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  300. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("reciveId")));
  301. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  302. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReciveCustomer"));
  303. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  304. amsSaleOrder.setUpdateTime(new Date());
  305. i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  306. //根据销售订单id查找销售车序号和车序号与物资中间表主键
  307. List<Map<String, Object>> map2 = amsSaleOrderMapper.selectSaleOrderMaterialIdBySaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  308. for (Map<String,Object> Id:map2){
  309. BigDecimal truckNoMaterialId =(BigDecimal) Id.get("TruckNoMaterialId");
  310. BigDecimal saleOrderMaterialId=(BigDecimal) Id.get("saleOrderMaterialId");
  311. //删除对应的车序号表与车序号与物资中间表
  312. j+=amsSaleOrderMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId);
  313. j+=trucknoMaterialMapper.deleteByPrimaryKey(truckNoMaterialId);
  314. }
  315. //新增车序号和物资中间表
  316. //获取车序号和物资信息进行新增车序号与物资中间表
  317. //一个销售订单对应多个车序号
  318. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  319. for (Map<String, Object> map3 : selectionList) {
  320. BigDecimal materialId = DataChange.dataToBigDecimal(map3.get("materialId"));
  321. Integer cxh = (Integer) map3.get("cxh");
  322. //生成车序号与物资实体
  323. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  324. //生成主键
  325. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  326. amsSaleOrderMaterial.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  327. //获取收货地址
  328. amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map3.get("saleShipperAddressId")));
  329. //获取收货方电话号码
  330. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map3.get("saleOrderConsigneeTel").toString());
  331. //获取收货日期
  332. String saleDateOfReceipt =(String) map3.get("saleDateOfReceipt");
  333. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  334. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  335. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  336. //获取收货方姓名
  337. amsSaleOrderMaterial.setSaleOrderConsignee((String) map3.get("saleOrderConsignee"));
  338. //设置车序号
  339. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  340. //设置删除状态
  341. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  342. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  343. // 生成定向派单
  344. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  345. amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId());
  346. amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  347. //获取收货地址
  348. Integer saleShipperAddressId =(Integer) map3.get("saleShipperAddressId");
  349. amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId));
  350. //根据收货地址查询承运商
  351. Map<String,Object> map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId);
  352. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4);
  353. //获取收货方电话号码
  354. amsDispatchSaleOrder.setCarrierId(carrierId);
  355. amsDispatchSaleOrder.setDispatchTime(new Date());
  356. //设置成交类型
  357. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  358. //设置下发状态为已下发
  359. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  360. amsDispatchSaleOrder.setInsertTime(new Date());
  361. amsDispatchSaleOrder.setInsertUsername("admin");
  362. //新增车序号与物资中间表
  363. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  364. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  365. //设置物资id
  366. trucknoMaterial.setMaterialId(materialId);
  367. //获取车序号物资id
  368. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  369. Integer orderPlanWeight = (Integer) map3.get("orderPlanWeight");
  370. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  371. //获取物资理重
  372. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map3.get("materialTheoreticalWeight"));
  373. //判断是否有物资理重
  374. if (materialTheoreticalWeight.intValue() != 0) {
  375. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  376. }
  377. //新增车序号与物资中间表
  378. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  379. }
  380. // List<Map<String, Object>> mapList = (List<Map<String, Object>>) map.get("mapList");
  381. // ArrayList<Integer> list = new ArrayList<>();
  382. // for (Map<String, Object> truckMesMap : mapList) {
  383. // //修改车序号表
  384. // BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(truckMesMap.get("saleOrderMaterialId"));
  385. // if (!list.contains(saleOrderMaterialId.intValue())) {
  386. // //车序号表专用字段
  387. // BigDecimal saleShipperAddressId = DataChange.dataToBigDecimal(truckMesMap.get("saleShipperAddressId"));
  388. // String saleDateOfReceipt =(String) truckMesMap.get("saleDateOfReceipt");
  389. // SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  390. // Date date = simpleDateFormat.parse(saleDateOfReceipt);
  391. // String saleOrderConsignee = (String) truckMesMap.get("saleOrderConsignee");
  392. // String saleOrderConsigneeTel = (String) truckMesMap.get("saleOrderConsigneeTel");
  393. // AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  394. // amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  395. // amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(DataChange.dataToBigDecimal(truckMesMap.get("cxh")));
  396. // amsSaleOrderMaterial.setSaleShippingAddressId(saleShipperAddressId);
  397. // amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  398. // amsSaleOrderMaterial.setSaleOrderConsignee(saleOrderConsignee);
  399. // amsSaleOrderMaterial.setSaleOrderConsigneeTel(saleOrderConsigneeTel);
  400. // i += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  401. // list.add(saleOrderMaterialId.intValue());
  402. // }
  403. // //修改车车序号物资表
  404. // AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  405. // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("trucknoMaterialId")));
  406. // amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(truckMesMap.get("orderPlanWeight")));
  407. // amsSaleTrucknoMaterial.setMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("materialId")));
  408. // i += trucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
  409. // }
  410. return i;
  411. }
  412. @Override
  413. public int deleteAmsSaleOrderBySaleOrderId(BigDecimal saleOrderId) {
  414. //删除所有从表信息
  415. //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId);
  416. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  417. if(amsSaleOrder.getSaleOrderStatus().compareTo(new BigDecimal(0)) == 0) {
  418. amsSaleOrder.setDeleted(new BigDecimal(2));
  419. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  420. }else{
  421. return -1;
  422. }
  423. }
  424. @Override
  425. public List<Map<String, Object>> getSaleOrderUpdateLog(Map<String, Object> map) {
  426. return amsSaleOrderMapper.getSaleOrderUpdateLog(map);
  427. }
  428. /**
  429. * 销售公司查询已审核的订单
  430. * @param map
  431. * @return
  432. */
  433. @Override
  434. public List<Map<String, Object>> getSaleOrderListBySaleCompany(Map<String, Object> map) {
  435. return amsSaleOrderMapper.getSaleOrderListBySaleCompany(map);
  436. }
  437. @Override
  438. public List<Map<String, Object>> getAmsSaleOrderApproved(Map<String, Object> map) {
  439. return amsSaleOrderMapper.getAmsSaleOrderApproved(map);
  440. }
  441. @Override
  442. public List<Map<String, Object>> getSaleOrderList(Map<String, Object> mapValue) {
  443. return amsSaleOrderMapper.getSaleOrderList(mapValue);
  444. }
  445. public Map<String, Object> getCarrier(Integer addressId) {
  446. return amsSaleOrderMapper.selectProvince(addressId);
  447. }
  448. /**
  449. * 根据销售订单id查找信息
  450. */
  451. @Override
  452. public Map<String, Object> selectInfoBySaleOrderId(BigDecimal saleOrderId) {
  453. return amsSaleOrderMapper.selectInfoBySaleOrderId(saleOrderId);
  454. }
  455. /**
  456. * 根据销售订单id查找物资信息
  457. *
  458. * @param saleOrderId
  459. * @return
  460. */
  461. @Override
  462. public List<Map<String, Object>> selectMaterialInfoBySaleOrderId(BigDecimal saleOrderId) {
  463. return amsSaleOrderMapper.selectMaterialInfoBySaleOrderId(saleOrderId);
  464. }
  465. @Override
  466. public int addAmsDispatchSaleOrder(List<Map<String, Object>> mapValue) {
  467. int result = 0;
  468. for (Map<String,Object> map : mapValue) {
  469. Integer dispatchId = (Integer)map.get("dispatchId");
  470. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(new BigDecimal(dispatchId));
  471. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  472. result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  473. }
  474. return result;
  475. }
  476. @Override
  477. public List<Map<String, Object>> getSaleOrderInfoes(Map<String, Object> map) {
  478. return amsSaleOrderMapper.getSaleOrderInfoes(map);
  479. }
  480. @Override
  481. public List<Map<String, Object>> getSaleOrderReportedes(Map<String, Object> map) {
  482. return amsSaleOrderMapper.getSaleOrderReportedes(map);
  483. }
  484. @Override
  485. public List<Map<String, Object>> getSaleOrderListBySaleCompanyes(Map<String, Object> map) {
  486. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map);
  487. return resultList;
  488. }
  489. @Override
  490. public List<Map<String, Object>> getAmsSaleOrderApprovedes(Map<String, Object> map) {
  491. List<Map<String,Object>> resultList = amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
  492. return resultList;
  493. }
  494. /*
  495. * 根据销售订单主键展示销售基本信息、物资信息
  496. * */
  497. @Override
  498. public List<Map<String, Object>> getSaleOrderAndMaterialById(Map<String,Object> mapValue) {
  499. List<Map<String, Object>> mapList=amsSaleOrderMapper.getSaleOrderAndMaterialById(mapValue);
  500. BigDecimal maxCxh = null;
  501. if(mapValue.get("saleOrderId") != null) {
  502. //如果销售订单存在,那么去获取该销售订单下最大的车序号
  503. maxCxh = amsSaleOrderMaterialMapper.getMaxCxh(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
  504. }
  505. for (Map<String, Object> map : mapList) {
  506. map.put("maxCxh",maxCxh);
  507. BigDecimal number;
  508. BigDecimal materialNumber = (BigDecimal) map.get("materialNumber");
  509. BigDecimal materialWeight = (BigDecimal) map.get("materialWeight");
  510. String materialName =(String) map.get("materialName");
  511. if (materialNumber != null && materialNumber.toString().length() != 0 && !materialName.equals("钒渣")) {
  512. number = materialNumber;
  513. }
  514. else {
  515. number = materialWeight;
  516. }
  517. map.put("number",number);
  518. }
  519. return mapList;
  520. }
  521. /**
  522. * 销售焦炭订单
  523. * @param mapValue
  524. * @return
  525. */
  526. @Override
  527. public List<Map<String, Object>> getCokeSaleOrderList(Map<String, Object> mapValue) {
  528. List<Map<String,Object>> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue);
  529. for (Map<String, Object> resultMap : mapList) {
  530. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  531. BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
  532. BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
  533. resultMap.put("netWeight",netWeight);
  534. resultMap.put("carNum",carNum);
  535. }
  536. return mapList;
  537. }
  538. /**
  539. * 新增钢材销售订单
  540. * @param mapValue
  541. * @return
  542. */
  543. @Override
  544. @Transactional(rollbackFor = Exception.class)
  545. public int addSteelSaleOrder(Map<String, Object> mapValue) throws Exception {
  546. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  547. // 得到发货单位
  548. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  549. // 收货单位
  550. BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
  551. if (receiveId == null || receiveId.intValue() == 0) {
  552. receiveId = amsSaleOrderMapper.findReceiveId(mapValue.get("receiveName"));
  553. if (receiveId == null) {
  554. //if(mapValue.get("receiveName")!=null){
  555. // //自动注册收货客户
  556. // Map<String, Object> res = joinFeign.registerConsignee(mapValue);
  557. // if("succeed".equals(res.get("status"))){
  558. // receiveId=DataChange.dataToBigDecimal(res.get("data"));
  559. // }else{
  560. // System.out.println(res);
  561. // throw new Exception("注册收货客户失败!请手动注册!");
  562. // }
  563. //}else{
  564. //
  565. //}
  566. throw new Exception("下单客户不存在!!!");
  567. }
  568. //判断该收货客户有没有绑定片区
  569. BigDecimal saleAreaId = amsSaleOrderMapper.selectSaleAreaId(receiveId);
  570. if(saleAreaId == null){
  571. //如果片区为null,则绑定片区
  572. //根据片区名称去查找片区ID
  573. if(mapValue.get("saleArea") != null){
  574. String saleAreaName = (String) mapValue.get("saleArea");
  575. saleAreaId = amsSaleOrderMapper.selectSaleAreaIdByName(saleAreaName);
  576. if(saleAreaId == null){
  577. throw new Exception("您输入的销售片区:" + mapValue.get("saleArea") +"不存在!!");
  578. }else{
  579. //更新收货客户下的销售片区
  580. amsSaleOrderMapper.bindSaleArea(receiveId,saleAreaId);
  581. }
  582. }
  583. }
  584. }
  585. // 是否自提
  586. String isSelfMention = (String) mapValue.get("isSelfMention");
  587. // 备注
  588. String saleRemark = (String) mapValue.get("saleRemark");
  589. String saleGroupCode = null;
  590. Object splitStr = StringUtils.substringBetween(saleRemark,"钢材","组");
  591. if(splitStr == null || "".equals(splitStr)) {
  592. throw new Exception("您输入的摘要格式不正确,请检查后再导入!!,例:钢材某某组");
  593. }
  594. saleGroupCode = "钢" + StringUtils.substringBetween(saleRemark,"钢","组") + "组";
  595. // 收款客户
  596. String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
  597. // 业务员
  598. BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
  599. if (salerId == null || salerId.intValue() == 0) {
  600. if(mapValue.get("salerName") == null) {
  601. throw new Exception("您输入的业务员为空,请检查后再导入!!");
  602. }
  603. salerId = amsSaleOrderMapper.findSalerId(mapValue.get("salerName"));
  604. if (salerId == null) {
  605. throw new Exception("您输入的业务员:" + mapValue.get("salerName") +"不存在!!");
  606. }
  607. }
  608. BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
  609. int result = 0;
  610. // 销售订单
  611. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  612. amsSaleOrder.setReceiveId(receiveId);
  613. amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
  614. amsSaleOrder.setShipperId(shipperId);
  615. amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
  616. amsSaleOrder.setSaleOrderId(saleOrderId);
  617. amsSaleOrder.setSalerId(salerId);
  618. // 设置钢材订单
  619. amsSaleOrder.setSaleType(new BigDecimal(1));
  620. amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
  621. amsSaleOrder.setInsertTime(new Date());
  622. amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
  623. amsSaleOrder.setInsertUsername("物流");
  624. amsSaleOrder.setUpdateTime(new Date());
  625. amsSaleOrder.setDeleted(new BigDecimal(0));
  626. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  627. amsSaleOrder.setBusinessDate(new Date());
  628. // 税率默认13%
  629. amsSaleOrder.setSaleOrderTax("13%");
  630. // 含税单价某人4000
  631. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  632. // 收款客户
  633. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  634. // 销售订单物资表
  635. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  636. // 车序号物资表
  637. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  638. // 遍历每一行
  639. for (Map<String, Object> map : mapList) {
  640. /*
  641. 车序号表
  642. */
  643. // 得到车序号
  644. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  645. Map<String,Object> saleMap = new HashMap<>();
  646. saleMap.put("saleOrderId",saleOrderId);
  647. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  648. // 检测销售订单下的车序号是否已存在
  649. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  650. // 车序号表
  651. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  652. if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
  653. // 车序号主键
  654. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  655. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
  656. if (shippingAddressId == null || shippingAddressId.intValue() == 0) {
  657. String province = (String) map.get("province");
  658. String district = (String) map.get("district");
  659. String town = (String) map.get("town");
  660. Map<String,Object> addressMap = new HashMap<>();
  661. addressMap.put("province",province);
  662. addressMap.put("district",district);
  663. addressMap.put("town",town);
  664. shippingAddressId = amsSaleOrderMapper.findAddressId(addressMap);
  665. if (shippingAddressId == null) {
  666. throw new Exception("您输入的:" + province + district + town + "地址不存在!!");
  667. }
  668. }
  669. // 车号备注
  670. String truckRemark = (String) (map.get("truckRemark"));
  671. String place = (String) (map.get("place"));
  672. if (place != null && !"null".equals(place)) {
  673. String addressType = rmsReceivePlaceMapper.getAddressType(shippingAddressId);
  674. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  675. if (placeIdList == null || placeIdList.size() == 0) {
  676. if ("厂外库".equals(addressType)) {
  677. throw new Exception("您输入的具体库房名称,不存在!请去维护");
  678. }
  679. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  680. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  681. rmsReceivePlace.setAddressId(shippingAddressId);
  682. rmsReceivePlace.setAddressDeliveryAddress(place);
  683. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  684. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  685. } else {
  686. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  687. }
  688. }
  689. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否") && DataChange.dataToBigDecimal(map.get("carrierId")).intValue() == 0) {
  690. // 自动匹配承运商
  691. List<Map<String, Object>> carrierList = getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId());
  692. BigDecimal carrierCount = null;
  693. if(place != null && !"null".equals(place)){
  694. carrierCount = amsSaleOrderMapper.getMoreCarrier(place);
  695. }
  696. //根据收货地址id查询备注,判断是否需要匹配承运商
  697. String addressRemark = amsSaleOrderMaterialMapper.getAddressRemark(shippingAddressId);
  698. // 单一承运商才进行匹配
  699. if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null && carrierCount.intValue() == 0 && addressRemark == null) {
  700. List<Map<String, Object>> list = new ArrayList<>();
  701. Map<String, Object> map1 = carrierList.get(0);
  702. // 传入车序号主键和承运商id
  703. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  704. list.add(map1);
  705. dispatchToCarrier(list);
  706. }
  707. }
  708. if (isSelfMention.equals("是")) {
  709. BigDecimal carrierId = null;
  710. // 根据收货单位id查询出收货单位名称
  711. if (place != null && place.contains("欧冶")) {
  712. String placeRemark = amsSaleOrderMapper.selectPlaceRemark(place);
  713. carrierId = amsSaleOrderMapper.selectCarrierId(placeRemark);
  714. }else{
  715. String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
  716. carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
  717. }
  718. // 根据收货单位名称查询承运商id
  719. List<Map<String, Object>> list = new ArrayList<>();
  720. Map<String,Object> map1 = new HashMap<>();
  721. // 传入车序号主键和承运商id
  722. if (carrierId != null) {
  723. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  724. map1.put("carrierId", carrierId);
  725. list.add(map1);
  726. dispatchToCarrier(list);
  727. }
  728. }
  729. if (isSelfMention.equals("否") && DataChange.dataToBigDecimal(map.get("carrierId")).intValue() != 0) {
  730. //说明有承运商
  731. List<Map<String, Object>> list = new ArrayList<>();
  732. Map<String, Object> carrierMap = new HashMap<>();
  733. carrierMap.put("carrierId",map.get("carrierId"));
  734. carrierMap.put("saleOrderMaterialId",saleOrderMaterialId);
  735. list.add(carrierMap);
  736. dispatchToCarrier(list);
  737. }
  738. // 收货方姓名
  739. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  740. // 收货方电话
  741. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  742. // 截止日期
  743. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  744. SimpleDateFormat dateOfReceiptFormat = new SimpleDateFormat("yyyy-MM-dd");
  745. Calendar calendar = Calendar.getInstance();
  746. calendar.setTime(new Date());
  747. calendar.add(Calendar.DATE,1);
  748. String dateOfReceiptDateStr = dateOfReceiptFormat.format(calendar.getTime()) + " 07:59:59";
  749. SimpleDateFormat dateOfReceiptFormatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  750. Date dateOfReceiptDateNew = dateOfReceiptFormatTime.parse(dateOfReceiptDateStr);
  751. Date dateOfReceipt = null;
  752. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  753. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  754. }
  755. if (dateOfReceiptDateNew != null) {
  756. dateOfReceipt = dateOfReceiptDateNew;
  757. }
  758. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  759. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  760. amsSaleOrderMaterial.setTruckRemark(truckRemark);
  761. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  762. if(map.get("orderNo") != null) {
  763. amsSaleOrderMaterial.setPreviousOrderNumber((String) map.get("orderNo"));
  764. }
  765. if (consigneeName != null && !consigneeName.equals("null")) {
  766. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  767. }
  768. if (consigneeTel != null && !consigneeTel.equals("null")) {
  769. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  770. }
  771. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  772. amsSaleOrderMaterial.setInsertTime(new Date());
  773. amsSaleOrderMaterial.setUpdateTime(new Date());
  774. amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
  775. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  776. }
  777. else {
  778. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  779. }
  780. /*
  781. 销售订单物资表
  782. */
  783. // 物资
  784. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  785. if (materialId == null || materialId.intValue() == 0) {
  786. String name = (String) map.get("materialName");
  787. String specification = (String) map.get("materialSpecification");
  788. String model = (String) map.get("materialModel");
  789. Map<String,Object> materialMap = new HashMap<>();
  790. materialMap.put("name",name);
  791. materialMap.put("specification",specification);
  792. if (model == null || model.equals("") || model.equals("null")) {
  793. model = null;
  794. }
  795. materialMap.put("model",model);
  796. materialId = amsSaleOrderMapper.findMaterialId(materialMap);
  797. if (materialId == null) {
  798. throw new Exception("您输入的物资:" + name + specification + model + "不存在!!");
  799. }
  800. }
  801. Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
  802. RmsMaterial rmsMaterial = new RmsMaterial();
  803. rmsMaterial.setMaterialId(materialId);
  804. if (materialCount == null) {
  805. materialCount = new Integer(0);
  806. }
  807. rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
  808. rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
  809. // 物资件数
  810. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  811. // 物资名称
  812. Object materialName = map.get("materialName");
  813. // 钢材米数
  814. BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
  815. // 判断物资是否是盘螺或盘元/盘圆
  816. if (materialName != null && (materialName.toString().contains("盘螺") || materialName.toString().contains("盘元") || materialName.toString().contains("盘圆"))) {
  817. amsSaleMaterial.setSteelMeter(null);
  818. }
  819. else {
  820. amsSaleMaterial.setSteelMeter(steelMeters);
  821. }
  822. // 是否磅重销售(0:磅重;1:理重)
  823. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
  824. // 销售订单物资表主键
  825. BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
  826. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  827. amsSaleMaterial.setSaleOrderId(saleOrderId);
  828. amsSaleMaterial.setMaterialId(materialId);
  829. amsSaleMaterial.setMaterialNumber(materialNumber);
  830. amsSaleMaterial.setMaterialPlanNumber(materialNumber);
  831. amsSaleMaterial.setSaleNo(amsSaleOrder.getSaleNumber());
  832. try {
  833. amsSaleMaterial.setTransferInOfWarehouse(saleRemark);
  834. } catch (Exception e) {
  835. e.printStackTrace();
  836. }
  837. if(saleGroupCode != null) {
  838. amsSaleMaterial.setTransferOutOfWarehouse(saleGroupCode);
  839. }
  840. amsSaleMaterial.setInsertTime(new Date());
  841. amsSaleMaterial.setUpdateTime(new Date());
  842. amsSaleMaterial.setIsPoundSale(isPoundSale);
  843. amsSaleMaterial.setInsertUpdateRemark("物流新增");
  844. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  845. /*
  846. 车序号物资表
  847. */
  848. // 车序号物资表主键
  849. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  850. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  851. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  852. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  853. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  854. amsSaleTrucknoMaterial.setInsertTime(new Date());
  855. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  856. amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
  857. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  858. }
  859. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  860. return saleOrderId.intValue();
  861. }
  862. /**
  863. * 展示销售订单下的车序号和物资
  864. * @param saleOrderId
  865. * @return
  866. */
  867. @Override
  868. public List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId) {
  869. HashMap<String,Object> mapValue = new HashMap<>();
  870. mapValue.put("saleOrderId",saleOrderId);
  871. List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(mapValue);
  872. for (Map<String,Object> map : mapList) {
  873. BigDecimal placeId = (BigDecimal) map.get("placeId");
  874. if (placeId != null) {
  875. List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
  876. map.put("carrierAndPriceList", carrierAndPriceList);
  877. }
  878. }
  879. return mapList;
  880. }
  881. /**
  882. * 销售钢材派车
  883. * @param mapList
  884. * @return
  885. */
  886. @Transactional(rollbackFor = Exception.class)
  887. @Override
  888. public int dispatchSteelOrder(List<Map<String, Object>> mapList) throws Exception {
  889. Map<String, Object> stringObjectMap = mapList.get(0);
  890. Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
  891. Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
  892. String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
  893. //如果这个车序号下面有运单,则证明已经派了
  894. Map<String,Object> orderMap = amsSaleOrderMapper.getSteelOrderMap(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
  895. //判断该车序号对应的分录是否全部关闭
  896. Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
  897. if(flCount == 0 && !"取消".equals(stringObjectMap.get("capacityNumber")) && !"待定".equals(stringObjectMap.get("capacityNumber"))) {
  898. throw new Exception("该运单下所有分录被关闭,无法派车");
  899. }
  900. if (orderMap != null) {
  901. throw new Exception("该订单已派发,无法重复派车");
  902. }
  903. if (saleStatus == 1) {
  904. throw new Exception("订单未审核,无法派车!");
  905. }
  906. int result = 0;
  907. // 遍历每一行
  908. for (Map<String,Object> map : mapList) {
  909. //得到此次是否校验GPS
  910. boolean onceCheck = true;
  911. try{
  912. onceCheck = (boolean) map.get("isCheckGPS");
  913. }catch (Exception e){
  914. //取值失败不处理,默认校验GPS
  915. }
  916. // 得到车牌号
  917. String capacityNumber = (String) map.get("capacityNumber");
  918. // 得到运力id
  919. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  920. //Map<String,Object> details = amsSaleOrderMapper.getOrderIdByCapacity(map);
  921. //if(details!=null && details.get("orderId")!=null){
  922. // if(details.get("isEn")==null){
  923. // throw new Exception(capacityNumber+"有未进厂的运输订单任务,无法派单");
  924. // }else if(details.get("isLeave")==null){
  925. // throw new Exception(capacityNumber+"有未出厂的运输订单任务,无法派单");
  926. // }else if(details.get("isArrival")==null){
  927. // throw new Exception(capacityNumber+"有未抵达的运输订单任务,无法派单");
  928. // }else if(details.get("isReceipt")==null){
  929. // throw new Exception(capacityNumber+"有未签收的运输订单任务,无法派单");
  930. // }
  931. // throw new Exception(capacityNumber+"有未完成的运输订单任务,无法派单");
  932. //}
  933. //校验该车是否存在手机号
  934. String tel=omstruckOrderMapper.getTelByCapacityId(capacityId);//数据库的手机号
  935. String driverTel = (String) map.get("driverTel");//填写的手机号
  936. if(tel==null || "".equals(tel)){
  937. throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
  938. }
  939. //查询车牌号是否是黑名单
  940. if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
  941. throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
  942. }
  943. // 得到车序号表主键
  944. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  945. //判断是欧冶
  946. String placeAddress = amsSaleOrderMapper.getPlaceAddress(saleOrderMaterialId);
  947. //非自提,单次校验且全局校验,且车不允许无GPS
  948. int isGPS = amsSaleOrderMapper.isGPS(capacityNumber);
  949. if (placeAddress != null && placeAddress.contains("欧冶") && onceCheck && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0) {
  950. Map<String,Object> data=null;
  951. try{
  952. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNumber).getData();
  953. }catch (Exception e){
  954. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  955. }
  956. if(data==null || !"1001".equals(""+data.get("status"))){
  957. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  958. }
  959. }
  960. if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
  961. Map<String,Object> data=null;
  962. try{
  963. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNumber).getData();
  964. }catch (Exception e){
  965. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  966. }
  967. if(data==null || !"1001".equals(""+data.get("status"))){
  968. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  969. }
  970. }
  971. //校验结束,上传金蝶
  972. if(!map.containsKey("oYeFlag")) {
  973. //不是欧冶库的可直接同步车号
  974. if(placeAddress == null || !placeAddress.contains("欧冶")){
  975. pushCarNumberToEas(map);
  976. }
  977. }
  978. // 得到承运商
  979. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  980. // 查询到车序号的单价
  981. BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
  982. // 得到详细地址id
  983. BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId);
  984. // 如果已经设置单价则不覆盖,详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
  985. if (priceId == null && placeId != null && selfMention.equals("否")) {
  986. priceId = amsSaleOrderMapper.getPriceIdByPlaceId(placeId);
  987. }
  988. // 运输线路id
  989. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  990. if(map.containsKey("oYeFlag")) {
  991. lineId = null;
  992. }
  993. BigDecimal isSteel = new BigDecimal(1);
  994. //try{
  995. // //不为空且为新手机号,则修改电话号码
  996. // if(driverTel!=null && !"".equals(driverTel) && !driverTel.equals(tel)){
  997. // Map<String,Object> map1=new HashMap<>();
  998. // map1.put("capacityNumber",capacityNumber);
  999. // map1.put("capacityTel",driverTel);
  1000. // //在得到司机电话后给运力添加电话号码(通过车牌号)
  1001. // rmsFeign.updateCapacity(map1);
  1002. // }
  1003. //}catch (Exception e){
  1004. // e.printStackTrace();
  1005. //}
  1006. if (capacityId == null) {
  1007. return 0;
  1008. }
  1009. List<Map<String, Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
  1010. /*
  1011. 定向派单表
  1012. */
  1013. // 通过车序号主键确认定向派单是否已存在
  1014. BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
  1015. if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
  1016. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  1017. // 主键
  1018. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  1019. amsDispatchSaleOrder.setDispatchId(dispatchId);
  1020. // 车序号表id
  1021. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  1022. // 承运商id
  1023. amsDispatchSaleOrder.setCarrierId(carrierId);
  1024. // 派单时间和成交时间
  1025. amsDispatchSaleOrder.setDispatchTime(new Date());
  1026. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  1027. // 成交类型
  1028. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  1029. // 车序号状态
  1030. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  1031. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  1032. }
  1033. // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
  1034. else {
  1035. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
  1036. amsDispatchSaleOrder.setCarrierId(carrierId);
  1037. result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  1038. }
  1039. /*
  1040. 运输订单
  1041. */
  1042. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1043. Map<String, Object> map1 = new HashMap<>();
  1044. map1.put("orderType", new BigDecimal(2));
  1045. map1.put("orderPlanId", saleOrderMaterialId);
  1046. List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
  1047. if (omstruckOrders == null || omstruckOrders.size() == 0) {
  1048. // 运输订单主键
  1049. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1050. omstruckOrder.setOrderId(orderId);
  1051. // 车序号主键
  1052. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  1053. //添加承运商ID 和 运价ID
  1054. // Object priceId = map.get("priceId");
  1055. if (priceId != null) {
  1056. omstruckOrder.setPriceId(priceId);
  1057. } else {
  1058. omstruckOrder.setPriceId(new BigDecimal(0));
  1059. }
  1060. omstruckOrder.setCarrierId(carrierId);
  1061. // 运输订单号
  1062. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
  1063. // 运力id
  1064. omstruckOrder.setCapacityId(capacityId);
  1065. // 承运商
  1066. omstruckOrder.setCarrierId(carrierId);
  1067. // 是否可作业
  1068. omstruckOrder.setCanWork(new BigDecimal(0));
  1069. // 下发时间
  1070. omstruckOrder.setOrderIssueTime(new Date());
  1071. // 运单状态
  1072. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1073. // 司机电话
  1074. if(tel != null && !"".equals(tel)){
  1075. omstruckOrder.setDriverTel(tel);
  1076. }
  1077. BigDecimal status;
  1078. // 钢材
  1079. status = new BigDecimal(1);
  1080. // 订单类型
  1081. omstruckOrder.setOrderType(status);
  1082. // 运输线路id
  1083. omstruckOrder.setLineId(lineId);
  1084. omstruckOrder.setInsertTime(new Date());
  1085. omstruckOrder.setInsertUsername("");
  1086. if(map.containsKey("oYeFlag")) {
  1087. omstruckOrder.setArrivalFlag(new BigDecimal(1));
  1088. }
  1089. //如果这个车序号下面有运单,则证明已经派了
  1090. Map<String,Object> orderMap1 = amsSaleOrderMapper.getSteelOrderMap(saleOrderMaterialId);
  1091. if (orderMap1 != null) {
  1092. continue;
  1093. }
  1094. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  1095. //插入日志
  1096. saleLogUtil.logOrder(orderId,"普通派单,派车号:" + capacityNumber,map,SaleLogUtil.INSERT);
  1097. } else {
  1098. omstruckOrder = omstruckOrders.get(0);
  1099. }
  1100. for (Map<String, Object> materialMap : materialList) {
  1101. BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
  1102. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1103. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1104. BigDecimal saleMaterialId = (BigDecimal) materialMap.get("saleMaterialId");
  1105. /*
  1106. 运输订单物资子表
  1107. */
  1108. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1109. // 主键
  1110. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1111. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1112. // 运输订单id
  1113. omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
  1114. // 物资id
  1115. omstruckOrderMaterial.setMaterialId(materialId);
  1116. // 物资重量
  1117. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1118. // 物资件数
  1119. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1120. omstruckOrderMaterial.setSaleMaterialId(saleMaterialId);
  1121. if(map.containsKey("oYeFlag")) {
  1122. //查询装货地点
  1123. BigDecimal warehouseId = amsSaleMaterialMapper.selectWarehouseId(saleMaterialId);
  1124. if (warehouseId != null) {
  1125. omstruckOrderMaterial.setMaterialPriority(warehouseId);
  1126. }
  1127. }
  1128. try {
  1129. BigDecimal deleted = (BigDecimal) materialMap.get("DELETED");
  1130. if(deleted != null) {
  1131. omstruckOrderMaterial.setMaterialPriority(new BigDecimal(71));
  1132. }
  1133. } catch (Exception e) {
  1134. e.printStackTrace();
  1135. }
  1136. // 新增运输订单子表
  1137. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1138. }
  1139. // 调用websocket
  1140. Map<String, Object> orderIdMap = new HashMap<>();
  1141. orderIdMap.put("orderId", omstruckOrder.getOrderId());
  1142. try {
  1143. amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
  1144. } catch (Exception e) {
  1145. e.printStackTrace();
  1146. }
  1147. // 生成运输执行总实绩
  1148. result += tmsTruckFeign.addTotalResult(orderIdMap);
  1149. }
  1150. return result;
  1151. }
  1152. /**
  1153. * 钢材批量派车或改车
  1154. * @param mapList
  1155. * @return
  1156. * @throws Exception
  1157. */
  1158. @Override
  1159. @Transactional(rollbackFor = Exception.class)
  1160. public int batchUpdateCapacity(List<Map<String, Object>> mapList) throws Exception {
  1161. //先派车
  1162. for(Map<String, Object> item:mapList){
  1163. String capacityIds=""+item.get("capacityIds");
  1164. if(capacityIds.equals("0")){
  1165. //钢材派车
  1166. dispatchSteelOrderNotPush(item);
  1167. }else{
  1168. //钢材改车
  1169. updateSteelOrderNotPush(item);
  1170. }
  1171. }
  1172. //再上传金蝶
  1173. batchPushCarNumberToEas(mapList);
  1174. return 0;
  1175. }
  1176. @Override
  1177. public int updateSaleOrderRemark(List<Map<String, Object>> list) {
  1178. int i = 0;
  1179. for(Map<String,Object> map :list) {
  1180. BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId"));
  1181. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  1182. amsSaleOrder.setInsertUpdateRemark("重新设置继续装");
  1183. i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  1184. }
  1185. return i;
  1186. }
  1187. @Override
  1188. public int continueSteelOrder(List<Map<String, Object>> mapList) throws Exception {
  1189. int result = 0;
  1190. // 遍历每一行
  1191. for (Map<String,Object> map : mapList) {
  1192. List<OmstruckOrder> orders=omstruckOrderMapper.selectByParameters(map);
  1193. if(orders==null || orders.size()<=0){
  1194. if(map.get("deleteFlag") != null) {
  1195. orders = (List<OmstruckOrder>) map.get("previousOrders");
  1196. if(orders==null || orders.size()<=0) {
  1197. throw new Exception("没有对应的运输订单");
  1198. }
  1199. }else{
  1200. throw new Exception("没有对应的运输订单");
  1201. }
  1202. }
  1203. OmstruckOrder omstruckOrder=orders.get(0);
  1204. // 得到车序号表主键
  1205. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  1206. // 得到承运商
  1207. BigDecimal carrierId = omstruckOrder.getCarrierId();
  1208. //查询车序号表物资
  1209. List<Map<String, Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
  1210. if(materialList==null||materialList.size()<=0){
  1211. throw new Exception("车序号没有剩余物资");
  1212. }
  1213. // 程序根据剩余多少拼生成运输线路id 110001 到 110010(单拼到十拼)
  1214. BigDecimal lineId = DataChange.dataToBigDecimal(110000+materialList.size());
  1215. if(omstruckOrder.getOrderType() != null && omstruckOrder.getOrderType().intValue() == 4) {
  1216. //如果是内转钢材的,那么需要切换路线,判断是到专线还是到达州站
  1217. if(zhuanxianLineIds.contains(omstruckOrder.getLineId().intValue())){
  1218. lineId = DataChange.dataToBigDecimal(zhuanxianLineIds.get(materialList.size() - 1));
  1219. }else{
  1220. lineId = DataChange.dataToBigDecimal(dazhouLineIds.get(materialList.size() - 1));
  1221. }
  1222. }
  1223. /*
  1224. 定向派单表
  1225. */
  1226. // 通过车序号主键确认定向派单是否已存在
  1227. BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
  1228. if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
  1229. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  1230. // 主键
  1231. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  1232. amsDispatchSaleOrder.setDispatchId(dispatchId);
  1233. // 车序号表id
  1234. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  1235. // 承运商id
  1236. amsDispatchSaleOrder.setCarrierId(carrierId);
  1237. // 派单时间和成交时间
  1238. amsDispatchSaleOrder.setDispatchTime(new Date());
  1239. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  1240. // 成交类型
  1241. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  1242. // 车序号状态
  1243. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  1244. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  1245. }
  1246. // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
  1247. else {
  1248. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
  1249. amsDispatchSaleOrder.setCarrierId(carrierId);
  1250. result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  1251. }
  1252. /*
  1253. 运输订单
  1254. */
  1255. // 运输订单主键
  1256. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1257. omstruckOrder.setOrderId(orderId);
  1258. // 车序号主键
  1259. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  1260. // 是否可作业
  1261. omstruckOrder.setCanWork(new BigDecimal(0));
  1262. // 下发时间
  1263. omstruckOrder.setOrderIssueTime(new Date());
  1264. //如果该订单已有出厂实绩,不允许生成继续装
  1265. // 运单状态
  1266. if(omstruckOrder.getOrderReceiveRefuseTime()!=null){
  1267. omstruckOrder.setOrderStatus(new BigDecimal(7));
  1268. }else{
  1269. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1270. }
  1271. //路段顺序号
  1272. //omstruckOrder.setOrderLineSequence(new BigDecimal(2));
  1273. // 运输线路id
  1274. omstruckOrder.setLineId(lineId);
  1275. omstruckOrder.setInsertTime(new Date());
  1276. omstruckOrder.setInsertUsername("continue");
  1277. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  1278. //插入日志
  1279. saleLogUtil.logOrder(orderId,"继续装派单",map,SaleLogUtil.INSERT);
  1280. for (Map<String, Object> materialMap : materialList) {
  1281. BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
  1282. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1283. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1284. BigDecimal saleMaterialId = (BigDecimal) materialMap.get("saleMaterialId");
  1285. /*
  1286. 运输订单物资子表
  1287. */
  1288. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1289. // 主键
  1290. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1291. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1292. // 运输订单id
  1293. omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
  1294. // 物资id
  1295. omstruckOrderMaterial.setMaterialId(materialId);
  1296. // 物资重量
  1297. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1298. // 物资件数
  1299. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1300. omstruckOrderMaterial.setSaleMaterialId(saleMaterialId);
  1301. try {
  1302. BigDecimal deleted = (BigDecimal) materialMap.get("DELETED");
  1303. if(deleted != null) {
  1304. omstruckOrderMaterial.setMaterialPriority(new BigDecimal(71));
  1305. }
  1306. } catch (Exception e) {
  1307. e.printStackTrace();
  1308. }
  1309. // 新增运输订单子表
  1310. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1311. }
  1312. // 调用websocket
  1313. Map<String, Object> orderIdMap = new HashMap<>();
  1314. orderIdMap.put("orderId", omstruckOrder.getOrderId());
  1315. amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
  1316. orderIdMap.put("orderIdOld", map.get("orderId"));
  1317. orderIdMap.put("resultTotalIdOld",map.get("resultTotalId"));
  1318. // 生成所有实绩
  1319. result += tmsTruckFeign.copyAllResult(orderIdMap);
  1320. }
  1321. return result;
  1322. }
  1323. /**
  1324. * 根据详细地址匹配承运商
  1325. * @param placeId
  1326. * @return
  1327. */
  1328. @Override
  1329. public synchronized List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId) {
  1330. BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
  1331. List<Map<String,Object>> mapList = amsSaleOrderMapper.getCarrierByPlace(placeId);
  1332. return mapList;
  1333. }
  1334. /**
  1335. * 根据省市县匹配承运商
  1336. * @param placeId
  1337. * @return
  1338. */
  1339. public synchronized List<Map<String,Object>> getCarrierByAddress(BigDecimal placeId) {
  1340. BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
  1341. List<Map<String,Object>> mapList = amsSaleOrderMapper.getCarrierByAddress(addressId);
  1342. try {
  1343. if(mapList != null && mapList.size() != 1) {
  1344. mapList = amsSaleOrderMapper.getNextCarrier(addressId.intValue());
  1345. }
  1346. } catch (Exception e) {
  1347. e.printStackTrace();
  1348. }
  1349. return mapList;
  1350. }
  1351. /**
  1352. * 根据详细地址和承运商匹配单价
  1353. * @param mapValue
  1354. * @return
  1355. */
  1356. @Override
  1357. public Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue) {
  1358. Map<String,Object> map = amsSaleOrderMapper.getPriceByCarrierAndPlace(mapValue);
  1359. return map;
  1360. }
  1361. /**
  1362. * 将车序号下发给承运商
  1363. * @param mapList
  1364. * @return
  1365. */
  1366. @Override
  1367. public int dispatchToCarrier(List<Map<String,Object>> mapList) {
  1368. int result = 0;
  1369. // 遍历每一行
  1370. for (Map<String, Object> map : mapList) {
  1371. // 得到承运商
  1372. BigDecimal carrierId =DataChange.dataToBigDecimal(map.get("carrierId"));
  1373. // 得到车序号表主键
  1374. BigDecimal saleOrderMaterialId =DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  1375. //判断该车序号有没有被授权
  1376. List<BigDecimal> dispatchCarriers = amsDispatchSaleOrderMapper.getDispatchCarriers(saleOrderMaterialId);
  1377. //如果有的话删除授权,重新新增
  1378. for(BigDecimal dispatchId : dispatchCarriers) {
  1379. amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchId);
  1380. }
  1381. //判断该车序号有没有被授权
  1382. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  1383. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  1384. amsDispatchSaleOrder.setDispatchId(dispatchId);
  1385. amsDispatchSaleOrder.setCarrierId(carrierId);
  1386. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  1387. amsDispatchSaleOrder.setInsertTime(new Date());
  1388. amsDispatchSaleOrder.setInsertUpdateRemark("授权承运商");
  1389. // 派单时间和成交时间
  1390. amsDispatchSaleOrder.setDispatchTime(new Date());
  1391. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  1392. // 成交类型
  1393. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  1394. // 车序号状态
  1395. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  1396. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  1397. //判断有没有运输订单
  1398. int countOrder = amsSaleOrderMaterialMapper.getOrderCount(saleOrderMaterialId);
  1399. if (countOrder > 0) {
  1400. amsSaleOrderMaterialMapper.updateOrderCarrier(saleOrderMaterialId,carrierId);
  1401. }
  1402. }
  1403. return result;
  1404. }
  1405. @Override
  1406. public List<Map<String, Object>> getSaleOrderListToCarrier(Map<String, Object> map) {
  1407. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListToCarrier(map);
  1408. if (resultList.isEmpty()){
  1409. }else {
  1410. for (Map<String, Object> stringObjectMap : resultList) {
  1411. try {
  1412. BigDecimal saleShippingAddressId = (BigDecimal) stringObjectMap.get("saleShippingAddressId");
  1413. if (saleShippingAddressId!=null&&!("".equals(saleShippingAddressId))){
  1414. String address = amsSaleOrderMapper.getshippingAddress(saleShippingAddressId);
  1415. stringObjectMap.put("saleShippingAddress",address);
  1416. }
  1417. }catch (Exception e){
  1418. System.out.println("e"+e.getMessage());
  1419. stringObjectMap.put("saleShippingAddress","");
  1420. }
  1421. }
  1422. }
  1423. return resultList;
  1424. }
  1425. @Override
  1426. public List<Map<String, Object>> getSaleOrderListByCarrierSsoId(Map<String, Object> map) {
  1427. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListByCarrierSsoId(map);
  1428. return resultList;
  1429. }
  1430. /**
  1431. * 同步金蝶删除
  1432. * @param saleOrderId
  1433. * @return
  1434. */
  1435. @Override
  1436. public int deleteSaleOrderById(BigDecimal saleOrderId) {
  1437. int result = 0;
  1438. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  1439. amsSaleOrder.setSaleOrderId(saleOrderId);
  1440. amsSaleOrder.setDeleted(new BigDecimal(2));
  1441. // 如果是已经上传金蝶的销售订单,则同步删除
  1442. AmsSaleOrder amsSaleOrder1 = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  1443. if (amsSaleOrder1.getSaleOrderStatus().intValue() == 4) {
  1444. String reason = "修改物资关闭上一条销售订单";
  1445. String number = amsSaleOrder1.getSaleNumber();
  1446. String wholeOrder = "1";
  1447. String status = "close";
  1448. Map<String,Object> head = new HashMap<>();
  1449. head.put("number",number);
  1450. head.put("reason",reason);
  1451. head.put("wholeOrder",wholeOrder);
  1452. head.put("status",status);
  1453. Map<String,Object> input = new HashMap<>();
  1454. Map<String, Object> totalMap = easDeleteApproveUtil.getTotalMap();
  1455. input.put("head",head);
  1456. totalMap.put("input",input);
  1457. // 调用金蝶关闭接口
  1458. String json = JSONUtils.toJSONString(totalMap);
  1459. System.out.println(json);
  1460. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  1461. try {
  1462. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  1463. }catch (Exception e){
  1464. e.printStackTrace();
  1465. }
  1466. System.out.println(resultMap);
  1467. }else if(amsSaleOrder1.getSaleOrderStatus().intValue() == 1 || amsSaleOrder1.getSaleOrderStatus().intValue() == 2){
  1468. String reason = "修改物资关闭上一条销售订单";
  1469. String number = amsSaleOrder1.getSaleNumber();
  1470. Map<String, Object> deleteMap = new HashMap<>();
  1471. deleteMap.put("saleOrderId",saleOrderId);
  1472. deleteMap.put("reason",reason);
  1473. deleteMap.put("number",number);
  1474. deleteSaleOrderSame(deleteMap);
  1475. }
  1476. // 如果是副产品订单则关闭时同步关闭未进厂的运单
  1477. Map<String,Object> map = new HashMap<>();
  1478. map.put("saleOrderId",saleOrderId);
  1479. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(map);
  1480. if (amsSaleMaterials != null && amsSaleMaterials.get(0).getSaleWarehouse() != null && amsSaleMaterials.get(0).getSaleWarehouse().equals("副产品库")) {
  1481. result += amsSaleOrderMapper.closeOrderNotIn(saleOrderId);
  1482. }
  1483. try {
  1484. saleLogUtil.logSaleOrder(saleOrderId,"物流删除/关闭销售订单" ,"物流" ,SaleLogUtil.CLOSE);
  1485. } catch (Exception e) {
  1486. e.printStackTrace();
  1487. }
  1488. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  1489. return result;
  1490. }
  1491. /**
  1492. * 查询出销售订单下的所有数据
  1493. * @param saleOrderId
  1494. * @return
  1495. */
  1496. @Override
  1497. public Map<String, Object> getAllSaleMessages(BigDecimal saleOrderId) {
  1498. Map<String,Object> saleMap = amsSaleOrderMapper.getSaleMapMessages(saleOrderId);
  1499. List<Map<String,Object>> mapList = amsSaleOrderMapper.getSaleListMessages(saleOrderId);
  1500. saleMap.put("mapList",mapList);
  1501. return saleMap;
  1502. }
  1503. /**
  1504. * 修改承运商授权
  1505. * @param mapValue
  1506. * @return
  1507. */
  1508. @Override
  1509. public int updateTruckNoCarrier(Map<String, Object> mapValue) {
  1510. BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId"));
  1511. mapValue.remove("carrierId");
  1512. List<AmsDispatchSaleOrder> amsDispatchSaleOrders = amsDispatchSaleOrderMapper.selectByParameters(mapValue);
  1513. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrders.get(0);
  1514. amsDispatchSaleOrder.setCarrierId(carrierId);
  1515. int countOrder = amsSaleOrderMaterialMapper.getOrderCount(amsDispatchSaleOrder.getSaleOrderMaterialId());
  1516. if (countOrder > 0) {
  1517. amsSaleOrderMaterialMapper.updateOrderCarrier(amsDispatchSaleOrder.getSaleOrderMaterialId(),carrierId);
  1518. }
  1519. int result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  1520. return result;
  1521. }
  1522. /**
  1523. * 批量上传销售订单至金蝶
  1524. * @param saleOrderIdList
  1525. * @return
  1526. */
  1527. @Transactional(rollbackFor = Exception.class)
  1528. @Override
  1529. public int uploadSaleOrderList(List<Map<String, Object>> saleOrderIdList) {
  1530. int result = 0;
  1531. for (Map<String, Object> map : saleOrderIdList) {
  1532. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  1533. BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId"));
  1534. // 调用金蝶接口,将销售订单推送到金蝶系统
  1535. Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
  1536. Map<String, Object> head = (Map<String, Object>) input.get("head");
  1537. head.put("status","");
  1538. // 获得金蝶接口配置:正式
  1539. // Map<String, Object> totalMap = easUtil.getTotalMap();
  1540. Map<String, Object> totalMap = new HashMap<>();
  1541. totalMap.putAll(easUtil.getTotalMap());
  1542. // 组装报文
  1543. totalMap.put("input",input);
  1544. System.out.println(totalMap);
  1545. String json = JSONUtils.toJSONString(totalMap);
  1546. System.out.println(json);
  1547. Map<String,Object> s = joinFeign.pushSaleOrderToEas(totalMap);
  1548. try {
  1549. newFileTool.newFile("pushSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  1550. }catch (Exception e){
  1551. e.printStackTrace();
  1552. }
  1553. if (s == null || s.size() == 0) {
  1554. continue;
  1555. }else {
  1556. try {
  1557. JSONObject result1 = new JSONObject(s);
  1558. //如果status不为1,抛出异常
  1559. if (!result1.getJSONObject("res").getString("status").equals("1")) {
  1560. continue;
  1561. }
  1562. } catch (Exception e) {
  1563. e.printStackTrace();
  1564. //只抛出自定义异常
  1565. continue;
  1566. }
  1567. }
  1568. amsSaleOrder.setSaleOrderId(saleOrderId);
  1569. amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
  1570. try {
  1571. saleLogUtil.logSaleOrder(saleOrderId,"物流上传销售订单至金蝶" ,"物流" ,SaleLogUtil.UPDATE);
  1572. } catch (Exception e) {
  1573. e.printStackTrace();
  1574. }
  1575. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  1576. }
  1577. return result;
  1578. }
  1579. /**
  1580. * 新增钒渣销售订单
  1581. * @param mapValue
  1582. * @return
  1583. */
  1584. @Override
  1585. public int addVanadiumSaleOrder(Map<String, Object> mapValue) {
  1586. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1587. // 得到发货单位
  1588. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  1589. // 收货单位
  1590. BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
  1591. // 是否自提
  1592. String isSelfMention = (String) mapValue.get("isSelfMention");
  1593. // 备注
  1594. String saleRemark = (String) mapValue.get("saleRemark");
  1595. // 收款客户
  1596. String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
  1597. // 业务员
  1598. BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
  1599. BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
  1600. int result = 0;
  1601. // 销售订单
  1602. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  1603. amsSaleOrder.setReceiveId(receiveId);
  1604. amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
  1605. amsSaleOrder.setShipperId(shipperId);
  1606. amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
  1607. amsSaleOrder.setSaleOrderId(saleOrderId);
  1608. amsSaleOrder.setSalerId(salerId);
  1609. // 设置钒渣订单
  1610. amsSaleOrder.setSaleType(new BigDecimal(2));
  1611. amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
  1612. amsSaleOrder.setInsertTime(new Date());
  1613. amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
  1614. amsSaleOrder.setInsertUsername("物流");
  1615. amsSaleOrder.setUpdateTime(new Date());
  1616. amsSaleOrder.setDeleted(new BigDecimal(0));
  1617. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  1618. // 税率默认13%
  1619. amsSaleOrder.setSaleOrderTax("13%");
  1620. // 含税单价某人4000
  1621. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  1622. // 收款客户
  1623. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  1624. // 销售订单物资表
  1625. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  1626. // 车序号物资表
  1627. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  1628. // 遍历每一行
  1629. for (Map<String, Object> map : mapList) {
  1630. /*
  1631. 车序号表
  1632. */
  1633. // 得到车序号
  1634. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  1635. Map<String,Object> saleMap = new HashMap<>();
  1636. saleMap.put("saleOrderId",saleOrderId);
  1637. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  1638. // 检测销售订单下的车序号是否已存在
  1639. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  1640. // 车序号表
  1641. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  1642. if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
  1643. // 车序号主键
  1644. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  1645. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
  1646. // 车号备注
  1647. String truckRemark = (String) (map.get("truckRemark"));
  1648. String place = (String) (map.get("place"));
  1649. if (place != null && !"null".equals(place)) {
  1650. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  1651. if (placeIdList == null || placeIdList.size() == 0) {
  1652. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  1653. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  1654. rmsReceivePlace.setAddressId(shippingAddressId);
  1655. rmsReceivePlace.setAddressDeliveryAddress(place);
  1656. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  1657. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  1658. } else {
  1659. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  1660. }
  1661. }
  1662. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
  1663. // 自动匹配承运商
  1664. List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
  1665. // 单一承运商才进行匹配
  1666. if (carrierList != null && carrierList.size() == 1) {
  1667. List<Map<String, Object>> list = new ArrayList<>();
  1668. Map<String, Object> map1 = carrierList.get(0);
  1669. // 传入车序号主键和承运商id
  1670. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  1671. map1.put("carrierId", map1.get("value"));
  1672. list.add(map1);
  1673. dispatchToCarrier(list);
  1674. }
  1675. }
  1676. if (isSelfMention.equals("是")) {
  1677. // 根据收货单位id查询出收货单位名称
  1678. String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
  1679. // 根据收货单位名称查询承运商id
  1680. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
  1681. List<Map<String, Object>> list = new ArrayList<>();
  1682. Map<String,Object> map1 = new HashMap<>();
  1683. // 传入车序号主键和承运商id
  1684. if (carrierId != null) {
  1685. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  1686. map1.put("carrierId", carrierId);
  1687. list.add(map1);
  1688. dispatchToCarrier(list);
  1689. }
  1690. }
  1691. // 收货方姓名
  1692. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  1693. // 收货方电话
  1694. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  1695. // 截止日期
  1696. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  1697. Date dateOfReceipt = null;
  1698. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  1699. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  1700. }
  1701. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  1702. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  1703. amsSaleOrderMaterial.setTruckRemark(truckRemark);
  1704. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  1705. if (consigneeName != null && !consigneeName.equals("null")) {
  1706. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  1707. }
  1708. if (consigneeTel != null && !consigneeTel.equals("null")) {
  1709. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  1710. }
  1711. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  1712. amsSaleOrderMaterial.setInsertTime(new Date());
  1713. amsSaleOrderMaterial.setUpdateTime(new Date());
  1714. amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
  1715. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  1716. }
  1717. else {
  1718. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  1719. }
  1720. /*
  1721. 销售订单物资表
  1722. */
  1723. // 物资
  1724. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  1725. // 物资件数
  1726. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  1727. // 钢材米数
  1728. BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
  1729. // 是否磅重销售(0:磅重;1:理重)
  1730. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
  1731. // 销售订单物资表主键
  1732. BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
  1733. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  1734. amsSaleMaterial.setSaleOrderId(saleOrderId);
  1735. amsSaleMaterial.setMaterialId(materialId);
  1736. amsSaleMaterial.setMaterialNumber(materialNumber);
  1737. amsSaleMaterial.setInsertTime(new Date());
  1738. amsSaleMaterial.setUpdateTime(new Date());
  1739. if (steelMeters != null && !steelMeters.toString().equals("0")) {
  1740. amsSaleMaterial.setSteelMeter(steelMeters);
  1741. }
  1742. amsSaleMaterial.setIsPoundSale(isPoundSale);
  1743. amsSaleMaterial.setInsertUpdateRemark("物流新增");
  1744. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  1745. /*
  1746. 车序号物资表
  1747. */
  1748. // 车序号物资表主键
  1749. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  1750. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  1751. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  1752. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  1753. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  1754. amsSaleTrucknoMaterial.setInsertTime(new Date());
  1755. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  1756. amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
  1757. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  1758. }
  1759. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  1760. return result;
  1761. }
  1762. /**
  1763. * 自动匹配出最近的一个地址
  1764. * @param receiveId
  1765. * @return
  1766. */
  1767. @Override
  1768. public List<Map<String, Object>> matchingAddressRecently(BigDecimal receiveId) {
  1769. List<Map<String,Object>> mapList = amsSaleOrderMapper.matchingAddressRecently(receiveId);
  1770. List<Map<String,Object>> salerList = amsSaleOrderMapper.getSalerByReceiveId(receiveId);
  1771. if (mapList != null && mapList.size() != 0) {
  1772. if (salerList != null && salerList.size() !=0) {
  1773. Map<String, Object> salerMap = salerList.get(0);
  1774. for (Map<String, Object> map : mapList) {
  1775. map.putAll(salerMap);
  1776. }
  1777. }
  1778. }
  1779. return mapList;
  1780. }
  1781. /**
  1782. * 自动匹配上一条运单的司机电话
  1783. * @param capacityNumber
  1784. * @return
  1785. */
  1786. @Override
  1787. public String matchingDriverTelRecently(String capacityNumber) {
  1788. String driverTel = amsSaleOrderMapper.matchingDriverTelRecently(capacityNumber);
  1789. return driverTel;
  1790. }
  1791. /**
  1792. * 查询内转焦炭订单
  1793. * @param mapValue
  1794. * @return
  1795. */
  1796. @Override
  1797. public List<Map<String, Object>> getCokeInwardOrderList(Map<String, Object> mapValue) {
  1798. return amsSaleOrderMapper.getCokeInwardOrderList(mapValue);
  1799. }
  1800. /**
  1801. * 修改收货地址
  1802. * @param mapValue
  1803. * @return
  1804. */
  1805. @Transactional(rollbackFor = Exception.class)
  1806. @Override
  1807. public int updateCarAddress(Map<String, Object> mapValue) {
  1808. // 判断是否需要删除金蝶分录
  1809. Integer isCloseEas = (Integer) mapValue.get("isCloseEas");
  1810. String operateName = (String) mapValue.get("operateName");
  1811. int result = 0;
  1812. // 运输订单id
  1813. BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId"));
  1814. // 车序号id
  1815. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
  1816. // 是
  1817. if (isCloseEas == 0 && orderId != null && orderId.intValue() != 0) {
  1818. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1819. omstruckOrder.setOrderId(orderId);
  1820. omstruckOrder.setOrderStatus(new BigDecimal(7));
  1821. omstruckOrder.setInsertUpdateRemark("修改收货地址将状态改为7");
  1822. if(operateName != null){
  1823. omstruckOrder.setOptionerCode(operateName);
  1824. }
  1825. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1826. //插入日志
  1827. saleLogUtil.logOrder(orderId,"关闭分录,同步关闭运单",mapValue,SaleLogUtil.UPDATE);
  1828. // 得到销售订单物资表主键
  1829. List<Map<String,Object>> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId);
  1830. for (Map<String, Object> map : saleMaterialIdList) {
  1831. // 关闭销售订单物资子表
  1832. BigDecimal saleMaterialId = (BigDecimal) map.get("saleMaterialId");
  1833. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  1834. amsSaleMaterial.setDeleted(new BigDecimal(0));
  1835. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  1836. amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  1837. }
  1838. return 0;
  1839. }
  1840. //插入日志
  1841. saleLogUtil.logOrder(orderId,"修改收货地址",mapValue,SaleLogUtil.UPDATE);
  1842. // 判断是否需要修改派车
  1843. Object isNewCar = mapValue.get("isNewCar");
  1844. // 省市县ID
  1845. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(mapValue.get("shipperAddressId"));
  1846. // 具体地址
  1847. String place = (String) mapValue.get("place");
  1848. Integer addressid1= (Integer) mapValue.get("placeId");
  1849. BigDecimal addressid2 =BigDecimal.ZERO;
  1850. AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(saleOrderMaterialId);
  1851. if (place != null && !("".equals(place))) {
  1852. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  1853. if (placeIdList == null || placeIdList.size() == 0) {
  1854. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  1855. BigDecimal placeId = rmsReceivePlaceMapper.selectMaxId();
  1856. rmsReceivePlace.setPlaceId(placeId);
  1857. rmsReceivePlace.setAddressId(shippingAddressId);
  1858. rmsReceivePlace.setAddressDeliveryAddress(place);
  1859. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  1860. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  1861. addressid2 = placeId;
  1862. } else {
  1863. addressid2 =(BigDecimal) placeIdList.get(0).get("placeId");
  1864. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  1865. }
  1866. }
  1867. try{
  1868. //修改单价
  1869. Map<String,Object> data=new HashMap<>();
  1870. List<Map<String,Object>> mapList = new ArrayList<>();
  1871. mapValue.put("priceId",DataChange.dataToBigDecimal(amsSaleOrderMaterialMapper.getPriceByPlace(addressid2)));
  1872. mapList.add(mapValue);
  1873. data.put("mapList",mapList);
  1874. bmstruckFeign.updateBatchDetailsOrder(data);
  1875. }catch (Exception e){
  1876. e.printStackTrace();
  1877. }
  1878. String addressids="";
  1879. addressids =addressid1+","+addressid2;
  1880. amsSaleOrderMaterial.setShippingAddressIds(addressids);
  1881. amsSaleOrderMaterialMapper.setHistoryAddressId(mapValue);//修改历史地址
  1882. result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  1883. //给改了收货地址的车换单价
  1884. try {
  1885. if(orderId != null && orderId.intValue() != 0){
  1886. //1.查看地址是否存在单价
  1887. BigDecimal priceId = amsSaleOrderMaterialMapper.getPriceIdForUpdate(addressid2);
  1888. if (priceId!=null){
  1889. //把当前的单价给修改进运输单中
  1890. amsSaleOrderMaterialMapper.updateOmstruckOrder(priceId,orderId);
  1891. }else {
  1892. //把0存入运输单中
  1893. priceId=BigDecimal.ZERO;
  1894. amsSaleOrderMaterialMapper.updateOmstruckOrder(priceId,orderId);
  1895. }
  1896. }
  1897. }catch (Exception e){
  1898. e.printStackTrace();
  1899. System.out.println("e"+e.getMessage());
  1900. }
  1901. // 需要换车
  1902. if (isNewCar != null && (Integer) isNewCar == 0) {
  1903. // 根据车序号得到定向派单表主键
  1904. BigDecimal dispatchId = amsSaleOrderMapper.getDispatchId(saleOrderMaterialId);
  1905. if (dispatchId != null) {
  1906. amsDispatchSaleOrderMapper.deleteByPrimaryKey(dispatchId);
  1907. }
  1908. if (orderId != null) {
  1909. omstruckOrderMapper.deleteByPrimaryKey(orderId);
  1910. }
  1911. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null) {
  1912. // 自动匹配承运商
  1913. List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
  1914. // 单一承运商才进行匹配
  1915. if (carrierList != null && carrierList.size() == 1) {
  1916. List<Map<String, Object>> list = new ArrayList<>();
  1917. Map<String, Object> map1 = carrierList.get(0);
  1918. // 传入车序号主键和承运商id
  1919. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  1920. map1.put("carrierId", map1.get("value"));
  1921. list.add(map1);
  1922. dispatchToCarrier(list);
  1923. }
  1924. }
  1925. }
  1926. return result;
  1927. }
  1928. /**
  1929. * 展示未匹配承运商的车序号
  1930. * @param mapValue
  1931. * @return
  1932. */
  1933. @Override
  1934. public List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue) {
  1935. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSteelTruckNoList(mapValue);
  1936. return resultList;
  1937. }
  1938. /**
  1939. * 展示车序号的详情
  1940. * @param saleOrderMaterialId
  1941. * @return
  1942. */
  1943. @Override
  1944. public List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId) {
  1945. List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoMaterialAndCarrier(saleOrderMaterialId);
  1946. for (Map<String,Object> map : mapList) {
  1947. BigDecimal placeId = (BigDecimal) map.get("placeId");
  1948. if (placeId != null) {
  1949. List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
  1950. map.put("carrierAndPriceList", carrierAndPriceList);
  1951. }
  1952. }
  1953. return mapList;
  1954. }
  1955. /**
  1956. * 展示已分配承运商但未派车的车序号
  1957. * @param mapValue
  1958. * @return
  1959. */
  1960. @Override
  1961. public List<Map<String, Object>> getNoCarTruckNoList(Map<String, Object> mapValue) {
  1962. List<Map<String, Object>> resultList = amsSaleOrderMapper.getCarrierTruckNoList(mapValue);
  1963. return resultList;
  1964. }
  1965. /**
  1966. * 展示已派车的车序号
  1967. * @param mapValue
  1968. * @return
  1969. */
  1970. @Override
  1971. public List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue) {
  1972. List<Map<String, Object>> resultList = amsSaleOrderMapper.getHaveCarTruckNoList(mapValue);
  1973. return resultList;
  1974. }
  1975. /**
  1976. * 修改销售订单中的物资
  1977. * @param mapValue
  1978. * @return
  1979. */
  1980. @Transactional(rollbackFor = Exception.class)
  1981. @Override
  1982. public int updateAllMaterialInSale(Map<String, Object> mapValue) {
  1983. int result = 0;
  1984. // 得到销售订单主键
  1985. BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
  1986. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
  1987. BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId"));
  1988. // 将车辆改为不可作业状态
  1989. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1990. omstruckOrder.setOrderId(orderId);
  1991. omstruckOrder.setCanWork(new BigDecimal(1));
  1992. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1993. //插入日志
  1994. saleLogUtil.logOrder(orderId,"修改销售订单中的物资:改为不可作业",mapValue,SaleLogUtil.UPDATE);
  1995. // 得到运单中的物资
  1996. List<Map<String, Object>> oldList = omstruckOrderMaterialMapper.getMaterialList(orderId);
  1997. Map<String, Object> toTmsMap = new HashMap<>();
  1998. Map<String, Object> truckNoMap = new HashMap<>();
  1999. truckNoMap.put("saleOrderMaterialId",saleOrderMaterialId);
  2000. toTmsMap.put("orderId", orderId);
  2001. toTmsMap.put("oldMaterialMapList", oldList);
  2002. // 得到所有的物资
  2003. List<Map<String, Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  2004. /*
  2005. 删除三个物资表数据
  2006. */
  2007. List<AmsSaleTrucknoMaterial> amsSaleTrucknoMaterials = amsSaleTrucknoMaterialMapper.selectByParameters(truckNoMap);
  2008. for (AmsSaleTrucknoMaterial amsSaleTrucknoMaterial : amsSaleTrucknoMaterials) {
  2009. // 销售订单物资子表
  2010. amsSaleMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getMaterialId());
  2011. // 车序号子表
  2012. amsSaleTrucknoMaterialMapper.deleteByPrimaryKey(amsSaleTrucknoMaterial.getTrucknoMaterialId());
  2013. }
  2014. // 运输订单物资子表
  2015. List<OmstruckOrderMaterial> omstruckOrderMaterials = omstruckOrderMaterialMapper.selectByParameters(toTmsMap);
  2016. for (OmstruckOrderMaterial omstruckOrderMaterial : omstruckOrderMaterials) {
  2017. omstruckOrderMaterialMapper.deleteByPrimaryKey(omstruckOrderMaterial.getOrderMaterialId());
  2018. }
  2019. /*
  2020. 重新新增三个表
  2021. */
  2022. for (Map<String, Object> map : mapList) {
  2023. Object saleMaterialId = map.get("saleMaterialId");
  2024. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  2025. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
  2026. Object trucknoMaterialId = map.get("trucknoMaterialId");
  2027. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound"));
  2028. Object materialWeight = map.get("materialWeight");
  2029. Object steelMeter = map.get("meterNumber");
  2030. Object easId = map.get("easId");
  2031. Object warehouse = map.get("warehouse");
  2032. // 销售订单分录表
  2033. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  2034. // 车序号子表
  2035. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  2036. // 运输订单子表
  2037. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  2038. // if (saleMaterialId != null) {
  2039. // amsSaleMaterial.setSaleMaterialId(DataChange.dataToBigDecimal(saleMaterialId));
  2040. // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(trucknoMaterialId));
  2041. // }
  2042. // if (saleMaterialId == null){
  2043. amsSaleMaterial.setSaleMaterialId(amsSaleMaterialMapper.selectMaxId());
  2044. amsSaleTrucknoMaterial.setTrucknoMaterialId(amsSaleTrucknoMaterialMapper.selectMaxId());
  2045. // }
  2046. if (easId != null) {
  2047. amsSaleMaterial.setEasPrimaryId(easId.toString());
  2048. }
  2049. if (warehouse != null) {
  2050. amsSaleMaterial.setSaleWarehouse(warehouse.toString());
  2051. }
  2052. if (steelMeter != null) {
  2053. amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(steelMeter));
  2054. }
  2055. if (materialWeight != null) {
  2056. amsSaleMaterial.setMaterialWeight(DataChange.dataToBigDecimal(materialWeight));
  2057. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(materialWeight));
  2058. }
  2059. amsSaleMaterial.setSaleOrderId(saleOrderId);
  2060. amsSaleMaterial.setIsPoundSale(isPoundSale);
  2061. amsSaleMaterial.setMaterialId(materialId);
  2062. amsSaleMaterial.setDeleted(new BigDecimal(0));
  2063. amsSaleMaterial.setMaterialNumber(materialNumber);
  2064. amsSaleMaterial.setUpdateTime(new Date());
  2065. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  2066. // 车序号子表
  2067. amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  2068. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  2069. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  2070. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  2071. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  2072. // 运输订单子表
  2073. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  2074. omstruckOrderMaterial.setOrderId(orderId);
  2075. omstruckOrderMaterial.setMaterialId(materialId);
  2076. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  2077. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  2078. }
  2079. // 得到运单中的物资
  2080. List<Map<String, Object>> newList = omstruckOrderMaterialMapper.getMaterialList(orderId);
  2081. toTmsMap.put("newMaterialMapList", newList);
  2082. // 修改实绩结果
  2083. Map<String, Object> updateResult = tmsTruckFeign.update(toTmsMap);
  2084. System.out.println(updateResult);
  2085. return result;
  2086. }
  2087. /**
  2088. * 副产品订单
  2089. * @param map
  2090. * @return
  2091. */
  2092. @Override
  2093. public List<Map<String, Object>> getFuSaleOrderList(Map<String, Object> map) {
  2094. List<Map<String, Object>> resultList = amsSaleOrderMapper.getFuSaleOrderList(map);
  2095. return resultList;
  2096. }
  2097. /**
  2098. * 同步关闭金蝶销售订单
  2099. * @param mapValue
  2100. * @return
  2101. */
  2102. @Override
  2103. public int deleteSaleOrderSame(Map<String, Object> mapValue) {
  2104. int result = 0;
  2105. BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
  2106. String reason = (String) mapValue.get("reason");
  2107. String number = (String) mapValue.get("number");
  2108. Map<String,Object> head = new HashMap<>();
  2109. Map<String,Object> input = new HashMap<>();
  2110. // 销售订单号
  2111. input.put("number",number);
  2112. Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
  2113. totalMap.put("input",input);
  2114. // 调用金蝶关闭接口
  2115. String json = JSONUtils.toJSONString(totalMap);
  2116. System.out.println(json);
  2117. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2118. try {
  2119. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2120. }catch (Exception e){
  2121. e.printStackTrace();
  2122. }
  2123. System.out.println(resultMap);
  2124. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  2125. amsSaleOrder.setSaleOrderId(saleOrderId);
  2126. amsSaleOrder.setDeleted(new BigDecimal(2));
  2127. amsSaleOrder.setInsertUpdateRemark(reason);
  2128. saleLogUtil.logSaleOrder(saleOrderId,"删除销售订单",mapValue.get("userName") + "",SaleLogUtil.DELETE);
  2129. result += amsSaleOrderMapper.closeOrderNotIn(saleOrderId);
  2130. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  2131. return result;
  2132. }
  2133. /**
  2134. * 展示反审批的钢材订单
  2135. * @param mapValue
  2136. * @return
  2137. */
  2138. @Override
  2139. public List<Map<String, Object>> getSteelOrderDeletedList(Map<String, Object> mapValue) {
  2140. List<Map<String, Object>> mapList = amsSaleOrderMapper.getSteelOrderDeletedList(mapValue);
  2141. return mapList;
  2142. }
  2143. /**
  2144. * 展示所有状态销售订单列表
  2145. * @param mapValue
  2146. * @return
  2147. */
  2148. @Override
  2149. public List<Map<String, Object>> getAllSteelSaleOrderList(Map<String, Object> mapValue) {
  2150. return amsSaleOrderMapper.getAllSteelSaleOrderList(mapValue);
  2151. }
  2152. /**
  2153. * 修改厂内未装货车辆的运单车牌号
  2154. * @param mapValue
  2155. * @return
  2156. */
  2157. @Override
  2158. public Map<String, Object> updateCapacityNumberInFactory(Map<String, Object> mapValue) throws Exception {
  2159. Object lineSequence = mapValue.get("lineSequence");
  2160. Object carStatus = mapValue.get("carStatus");
  2161. if(carStatus == null) {
  2162. carStatus = omstruckOrderMapper.getOrderStatus(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2163. }
  2164. BigDecimal orderTypee = omstruckOrderMapper.getOrderType(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2165. if(orderTypee.compareTo(new BigDecimal(4)) == 0) {
  2166. mapValue.put("driverTel",mapValue.get("mapValue") + "");
  2167. mapValue.put("isCheckGPS",false);
  2168. }
  2169. int result = 0;
  2170. if (mapValue.get("orderId") == null) {
  2171. throw new Exception("还未派车,不允许修改车牌号");
  2172. }
  2173. //收货客户
  2174. String addressPlace = omstruckOrderMapper.getAddressPlace(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2175. //判断该车序号对应的分录是否全部关闭
  2176. if(mapValue.get("saleOrderMaterialId") != null && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
  2177. Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
  2178. if(flCount == 0) {
  2179. throw new Exception("该运单下所有分录被关闭,无法派车");
  2180. }
  2181. }
  2182. //查询输入进来的车牌号是否与原有车牌号一致,如果一致则退出
  2183. BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2184. String oldCapacityNumber = omstruckOrderMapper.getOldCapacityNumber(oldCapacityId);
  2185. mapValue.put("updateFlag",1);
  2186. mapValue.put("oldCapacityNumber",oldCapacityNumber);
  2187. if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0) {
  2188. mapValue.put("result",1);
  2189. //已接单或者不是欧冶库的可直接同步车号
  2190. if(addressPlace == null || !addressPlace.contains("欧冶") || "5".equals(carStatus.toString())) {
  2191. pushCarNumberToEas(mapValue);
  2192. }
  2193. return mapValue;
  2194. }
  2195. //校验该车是否存在手机号
  2196. String tel=omstruckOrderMapper.getTelByCapacityId(DataChange.dataToBigDecimal(mapValue.get("capacityId")));
  2197. String driverTel = (String) mapValue.get("driverTel");//填写的手机号
  2198. if(tel==null || "".equals(tel)){
  2199. throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
  2200. }
  2201. Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
  2202. String capacityNo = (String) mapValue.get("capacityNo");
  2203. //得到此次是否校验GPS
  2204. boolean onceCheck = true;
  2205. //查询是否自提
  2206. String selfMention = "否";
  2207. try{
  2208. selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
  2209. onceCheck = (boolean) mapValue.get("isCheckGPS");
  2210. }catch (Exception e){
  2211. //取值失败不处理,取默认值
  2212. }
  2213. //查询车牌号是否是黑名单
  2214. if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
  2215. throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
  2216. }
  2217. //非自提,单次校验且全局校验,且车辆不允许无GPS
  2218. int isGPS=amsSaleOrderMapper.isGPS(capacityNo);
  2219. String placeAddress = amsSaleOrderMapper.getPlaceAddress(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
  2220. if (placeAddress != null && placeAddress.contains("欧冶") && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0) {
  2221. Map<String,Object> data=null;
  2222. try{
  2223. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();
  2224. }catch (Exception e){
  2225. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  2226. }
  2227. if(data==null || !"1001".equals(""+data.get("status"))){
  2228. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  2229. }
  2230. }
  2231. if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
  2232. Map<String,Object> data=null;
  2233. try{
  2234. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();
  2235. }catch (Exception e){
  2236. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  2237. }
  2238. if(data==null || !"1001".equals(""+data.get("status"))){
  2239. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  2240. }
  2241. }
  2242. if(!mapValue.containsKey("oYeFlag")) {
  2243. //不是欧冶库的可直接同步车号
  2244. if(addressPlace == null || !addressPlace.contains("欧冶")) {
  2245. pushCarNumberToEas(mapValue);
  2246. }
  2247. }
  2248. //try{
  2249. // //不为空且为新手机号,则修改电话号码
  2250. // if(driverTel!=null && !"".equals(driverTel) && !driverTel.equals(tel)){
  2251. // Map<String,Object> map1=new HashMap<>();
  2252. // map1.put("capacityNumber",capacityNo);
  2253. // map1.put("capacityTel",driverTel);
  2254. // //在得到司机电话后给运力添加电话号码(通过车牌号)
  2255. // rmsFeign.updateCapacity(map1);
  2256. // mapValue.put("capacityTel",driverTel);
  2257. // }else{
  2258. // mapValue.put("capacityTel",tel);
  2259. // }
  2260. //}catch (Exception e){
  2261. // e.printStackTrace();
  2262. //}
  2263. saleLogUtil.logOrder(DataChange.dataToBigDecimal(mapValue.get("orderId")),"修改车牌号,当前车牌号为:" + capacityNo + "上一个车牌号为:" + oldCapacityNumber,mapValue,SaleLogUtil.UPDATE);
  2264. if ("4".equals(carStatus.toString()) || lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) {
  2265. String capacityids="";
  2266. Integer capacityid1= (Integer) mapValue.get("capacityIds");
  2267. Integer capacityid2= (Integer) mapValue.get("capacityId");
  2268. if (capacityid1!=null && !("".equals(capacityid1))){
  2269. capacityids=capacityid1+","+capacityid2;
  2270. }
  2271. mapValue.put("capacityids",capacityids);
  2272. //这是修改车牌号
  2273. //取消是新车牌号,那么不删除排队信息,不删除实绩信息,将运单状态变为7
  2274. if (DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
  2275. //根据订单id查询车牌号改动记录
  2276. String oldCpacityIds = omstruckOrderMapper.getOrderCapacityHistory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2277. BigDecimal oldOldCapacityId = null;
  2278. if(oldCpacityIds != null) {
  2279. oldOldCapacityId = DataChange.dataToBigDecimal(oldCpacityIds.split(",")[0]);
  2280. }
  2281. //如果旧车号是取消,且取消的前一个车与该车相等,那么就将状态还原
  2282. if (oldOldCapacityId != null && oldCapacityId != null && oldCapacityId.compareTo(new BigDecimal(35128)) == 0 && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(oldOldCapacityId) == 0 ) {
  2283. //判断该订单下有没有子实绩
  2284. BigDecimal resultId = amsSaleOrderMaterialMapper.selectEnFactory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2285. if(resultId == null) {
  2286. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2287. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2288. omstruckOrder.setOrderStatus(new BigDecimal(4));
  2289. omstruckOrder.setOrderLineSequence(new BigDecimal(0));
  2290. omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
  2291. if(tel != null && !"".equals(tel)){
  2292. omstruckOrder.setDriverTel(tel);
  2293. }
  2294. /*omstruckOrder.set*/
  2295. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2296. }else{
  2297. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2298. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2299. omstruckOrder.setOrderStatus(new BigDecimal(5));
  2300. if(tel != null && !"".equals(tel)){
  2301. omstruckOrder.setDriverTel(tel);
  2302. }
  2303. omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
  2304. /*omstruckOrder.set*/
  2305. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2306. }
  2307. }else{
  2308. //查询运输订单的状态和总实绩ID
  2309. Map<String, Object> orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue);
  2310. BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId"));
  2311. //将排队信息删掉
  2312. // 修改车牌号后保留原排队记录2024年4月23日10:28:53
  2313. Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2314. //查看是存在排队记录
  2315. BigDecimal listId = null;
  2316. if(isSpellingMap != null && isSpellingMap.get("listId") != null){
  2317. listId = omstruckOrderMapper.getListId(DataChange.dataToBigDecimal(isSpellingMap.get("listId")));
  2318. }
  2319. if(listId != null && listId.longValue() > 0){
  2320. /**
  2321. int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
  2322. if(isSpelling == 1 ){
  2323. result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
  2324. }else{
  2325. result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId"));
  2326. }
  2327. */
  2328. System.out.println("修改车牌号后保留原排队记录");
  2329. //查询车辆是否放行
  2330. isSpellingMap.put("insertUpdateRemark", "车辆排队中");
  2331. String insertUpdateRemark = omstruckOrderMapper.getPassthrough(resultTotalId);
  2332. if("OK".equals(insertUpdateRemark)){
  2333. isSpellingMap.put("insertUpdateRemark", "车辆已放行");
  2334. }
  2335. //修改排队实绩车牌号
  2336. isSpellingMap.put("capacityId", mapValue.get("capacityId"));
  2337. result += omstruckOrderMapper.updateCapacityIdByQueue(isSpellingMap);
  2338. int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
  2339. if(isSpelling != 1 ){
  2340. result += omstruckOrderMapper.updateCapacityIdByQueueList(isSpellingMap);
  2341. }
  2342. } else {
  2343. if (resultTotalId != null && resultTotalId.longValue() > 0) {
  2344. omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
  2345. }
  2346. }
  2347. //若是接单之后还需要删除实绩且将状态变为4
  2348. //删除排队实绩
  2349. /**
  2350. if (resultTotalId !=null && !("".equals(resultTotalId))){
  2351. omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
  2352. }
  2353. */
  2354. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2355. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2356. // 设置新的运输订单号
  2357. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", omstruckOrderMapper.selectMaxId().intValue()));
  2358. omstruckOrder.setOrderStatus(new BigDecimal(4));
  2359. omstruckOrder.setOrderLineSequence(new BigDecimal(0));
  2360. if(tel != null && !"".equals(tel)){
  2361. omstruckOrder.setDriverTel(tel);
  2362. }
  2363. /*omstruckOrder.set*/
  2364. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2365. //插入日志
  2366. result += omstruckOrderMapper.deleteEnResult(resultTotalId);
  2367. result += omstruckOrderMapper.deleteWeightResult(resultTotalId);
  2368. result += omstruckOrderMapper.deleteLoadResult(resultTotalId);
  2369. result += omstruckOrderMapper.deleteLeaveResult(resultTotalId);
  2370. //修改总实绩状态
  2371. try {
  2372. omstruckOrderMapper.updateTotalOrderStatus(resultTotalId);
  2373. } catch (Exception e) {
  2374. e.printStackTrace();
  2375. }
  2376. }
  2377. }else{
  2378. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2379. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  2380. if(tel != null && !"".equals(tel)){
  2381. omstruckOrder.setDriverTel(tel);
  2382. }
  2383. omstruckOrder.setOrderStatus(new BigDecimal(7));
  2384. omstruckOrder.setInsertUpdateRemark("取消车牌号,保留实绩将状态变为7");
  2385. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2386. }
  2387. result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
  2388. }
  2389. mapValue.put("result",result);
  2390. return mapValue;
  2391. }
  2392. @Override
  2393. public int updateConsigneeTel(Map<String, Object> mapValue) {
  2394. String saleOrderNo= (String) mapValue.get("saleOrderNo");
  2395. Integer saleOrderMaterialId= (Integer) mapValue.get("saleOrderMaterialId");
  2396. String consigneeTel= (String) mapValue.get("consigneeTel");
  2397. int result = 0;
  2398. if (saleOrderNo!=null&&!("".equals(saleOrderNo)) && saleOrderMaterialId!=null && !("".equals(saleOrderMaterialId))){
  2399. BigDecimal id = DataChange.dataToBigDecimal(saleOrderMaterialId);
  2400. if (id!=null&&!("".equals(id))){
  2401. result += amsSaleOrderMapper.updateForTel(id,consigneeTel);
  2402. }
  2403. }
  2404. return result;
  2405. }
  2406. @Override
  2407. public List<Map<String, Object>> getSaleMaterialId(BigDecimal saleOrderMaterialId) {
  2408. return amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId);
  2409. }
  2410. /**
  2411. * 展示下发给承运商的车序号和物资
  2412. * @param map
  2413. * @return
  2414. */
  2415. @Override
  2416. public List<Map<String, Object>> getCarrierTruckNoAndMaterialList(Map<String,Object> map) {
  2417. Object carrierSsoId = map.get("carrierSsoId");
  2418. if (carrierSsoId != null && ("".equals(carrierSsoId)) || "null".equals(carrierSsoId) || "undefined".equals(carrierSsoId)) {
  2419. map.replace("carrierSsoId",null);
  2420. }
  2421. List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(map);
  2422. for (Map<String,Object> mapValue : mapList) {
  2423. BigDecimal placeId = (BigDecimal) mapValue.get("placeId");
  2424. if (placeId != null) {
  2425. List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
  2426. mapValue.put("carrierAndPriceList", carrierAndPriceList);
  2427. }
  2428. }
  2429. return mapList;
  2430. }
  2431. @Override
  2432. public int updateAMSDeleted(BigDecimal closeWlEntryId) {
  2433. return amsSaleOrderMapper.updateAMSDeleted(closeWlEntryId);
  2434. }
  2435. /**
  2436. * 同步关闭金蝶物资分录
  2437. * @param mapValue
  2438. * @return
  2439. */
  2440. @Override
  2441. @Transactional
  2442. public int closeSteelMaterialId(Map<String, Object> mapValue) {
  2443. int result = 0;
  2444. Object orderId = mapValue.get("orderId");
  2445. Integer orderStatus = (Integer) mapValue.get("orderStatus");
  2446. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
  2447. List<Map<String, Object>> loadIdList = amsSaleMaterialMapper.findLoadIdList(saleOrderMaterialId);
  2448. List<Map<String, Object>> weightIdList = amsSaleMaterialMapper.findWeightIdList(saleOrderMaterialId);
  2449. String reason = (String) mapValue.get("reason");
  2450. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleMaterialId"));
  2451. try {
  2452. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderIdByASOM(saleOrderMaterialId);
  2453. saleLogUtil.logSaleOrder(saleOrderId,"物流同步关闭金蝶分录,分录为" + saleMaterialId ,"物流" ,SaleLogUtil.CLOSE);
  2454. } catch (Exception e) {
  2455. e.printStackTrace();
  2456. }
  2457. // 如果还未派车
  2458. if (orderId == null) {
  2459. // 订单子表设为关闭状态
  2460. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  2461. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  2462. amsSaleMaterial.setDeleted(new BigDecimal(0));
  2463. amsSaleMaterial.setInsertUpdateRemark(reason);
  2464. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  2465. return result;
  2466. }
  2467. orderStatus = omstruckOrderMapper.getOrderStatus(DataChange.dataToBigDecimal(orderId));
  2468. // 订单子表设为关闭状态
  2469. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  2470. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  2471. amsSaleMaterial.setDeleted(new BigDecimal(0));
  2472. amsSaleMaterial.setInsertUpdateRemark(reason);
  2473. // 已派车
  2474. if ((loadIdList == null || loadIdList.size() == 0) && orderStatus == 5) {
  2475. return result;
  2476. }
  2477. //判断该分录对应净重有没有出来
  2478. int netWeightCount = amsSaleMaterialMapper.getSaleMaterialWeight(mapValue);
  2479. //判断关闭分录是否为最后一拼
  2480. int asmMaterialCount = amsSaleMaterialMapper.getSaleMaterialDelete(saleOrderMaterialId);
  2481. if (asmMaterialCount > 1 && orderStatus == 5 && netWeightCount == 0) {
  2482. // 删除实绩表
  2483. Map<String, Object> loadMap = loadIdList.get(0);
  2484. Map<String, Object> weightMap = weightIdList.get(0);
  2485. BigDecimal loadId = (BigDecimal) loadMap.get("loadId");
  2486. BigDecimal weightId = (BigDecimal) weightMap.get("weightId");
  2487. int i = amsSaleMaterialMapper.deleteWeightResult(weightId);
  2488. if(i != 0) {
  2489. result += amsSaleMaterialMapper.deleteLoadResult(loadId);
  2490. result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
  2491. }
  2492. }else if(asmMaterialCount <= 1 && netWeightCount == 0){
  2493. //关闭运输订单
  2494. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2495. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
  2496. //如果是单拼或者只剩一条分录没有关闭了则将状态设为7
  2497. omstruckOrder.setOrderStatus(new BigDecimal(7));
  2498. omstruckOrder.setUpdateTime(new Date());
  2499. omstruckOrder.setInsertUpdateRemark("关闭分录,同步关闭运输订单");
  2500. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2501. //插入日志
  2502. saleLogUtil.logOrder(omstruckOrder.getOrderId(),"关闭分录,同步关闭运输订单",mapValue,SaleLogUtil.UPDATE);
  2503. }
  2504. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  2505. if(netWeightCount == 0) {
  2506. result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue);
  2507. }
  2508. return result;
  2509. }
  2510. /**
  2511. * 展示已审核化产焦炭销售订单列表
  2512. * @param mapValue
  2513. * @return
  2514. */
  2515. @Override
  2516. public List<Map<String, Object>> getSaleCokeOrder(Map<String, Object> mapValue) {
  2517. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleCokeOrder(mapValue);
  2518. return resultList;
  2519. }
  2520. /**
  2521. * 反关闭金蝶单个分录
  2522. * @param saleMaterialId
  2523. * @return
  2524. */
  2525. @Override
  2526. public int adverseCloseSaleMaterial(BigDecimal saleMaterialId) {
  2527. Map<String,Object> head = new HashMap<>();
  2528. Map<String,Object> input = new HashMap<>();
  2529. // 0:代表不关闭整单
  2530. String wholeOrder = "0";
  2531. // unClose : 代表反关闭
  2532. String status = "unClose";
  2533. AmsSaleMaterial amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(saleMaterialId);
  2534. int result = amsSaleMaterialMapper.adverseCloseSaleMaterial(saleMaterialId);
  2535. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(amsSaleMaterial.getSaleOrderId());
  2536. // 根据分录id查询运单id,物资id,总实绩id
  2537. Map<String,Object> saleMaterialMap = amsSaleOrderMapper.getSaleMaterialMessage(saleMaterialId);
  2538. BigDecimal orderId = (BigDecimal) saleMaterialMap.get("orderId");
  2539. BigDecimal orderStatus = (BigDecimal) saleMaterialMap.get("orderStatus");
  2540. //查询订单字表条数
  2541. int orderMaterialNum = omstruckOrderMapper.getOrderMaterialNum(orderId);
  2542. //查询计量实绩条数
  2543. int weightResultNum = omstruckOrderMapper.getWeightResultNum(orderId);
  2544. if (orderId != null && orderStatus.intValue() == 5 && orderMaterialNum != weightResultNum) {
  2545. BigDecimal resultTotalId = (BigDecimal) saleMaterialMap.get("resultTotalId");
  2546. BigDecimal materialId = (BigDecimal) saleMaterialMap.get("materialId");
  2547. // 根据总实绩id查询订单中的最大路段顺序号
  2548. // 得到皮重顺序号
  2549. int tareNum = (weightResultNum + 1) * 3 - 1;
  2550. // 得到装货顺序号
  2551. int loadNum = (weightResultNum + 1) * 3;
  2552. // 得到毛重顺序号
  2553. int grossNum = (weightResultNum + 1) * 3 + 1;
  2554. // 装货实绩
  2555. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  2556. TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
  2557. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  2558. tmstruckLoadResult.setResultTotalId(resultTotalId);
  2559. tmstruckLoadResult.setSegmentSqe(new BigDecimal(loadNum));
  2560. result += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  2561. // 计量实绩
  2562. tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
  2563. tmstruckWeightResult.setResultTotalId(resultTotalId);
  2564. tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(10));
  2565. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(2));
  2566. tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(grossNum));
  2567. tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(tareNum));
  2568. result += tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
  2569. // 出库子表
  2570. BigDecimal outBoundId = (BigDecimal) saleMaterialMap.get("outBoundId");
  2571. BigDecimal materialNumber = (BigDecimal) saleMaterialMap.get("materialNumber");
  2572. if (outBoundId != null) {
  2573. BigDecimal resultMaterialId = wmspOutboundResultMaterialMapper.getSeqNumber("seq__WMSP_OUTBOUND_RESUL_TMATRIAL");
  2574. WmspOutboundResultMaterial wmspOutboundResultMaterial = new WmspOutboundResultMaterial();
  2575. wmspOutboundResultMaterial.setResultMaterialId(resultMaterialId);
  2576. wmspOutboundResultMaterial.setOutboundResultId(outBoundId);
  2577. wmspOutboundResultMaterial.setMaterialId(materialId);
  2578. wmspOutboundResultMaterial.setMaterialNumber(materialNumber);
  2579. wmspOutboundResultMaterial.setInsertTime(new Date());
  2580. wmspOutboundResultMaterial.setInsertUsername("admin");
  2581. wmspOutboundResultMaterial.setStatus(new BigDecimal(1));
  2582. result += wmspOutboundResultMaterialMapper.insertSelective(wmspOutboundResultMaterial);
  2583. }
  2584. }
  2585. //去掉取消装货
  2586. result += omstruckOrderMaterialMapper.updateOmsMaterial(saleMaterialMap);
  2587. if (orderId != null && orderStatus.intValue() == 7) {
  2588. //如果订单被关闭,那么还原
  2589. //判断下面有没有实绩
  2590. int resultCount = omstruckOrderMapper.getResultCount(orderId);
  2591. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2592. if (resultCount == 0) {
  2593. omstruckOrder.setOrderId(orderId);
  2594. omstruckOrder.setOrderStatus(new BigDecimal(4));
  2595. omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
  2596. omstruckOrder.setUpdateTime(new Date());
  2597. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2598. }else{
  2599. omstruckOrder.setOrderId(orderId);
  2600. omstruckOrder.setOrderStatus(new BigDecimal(5));
  2601. omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
  2602. omstruckOrder.setUpdateTime(new Date());
  2603. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2604. }
  2605. //插入日志
  2606. saleLogUtil.logOrder(omstruckOrder.getOrderId(),"反关闭分录,运单同步开启",null,SaleLogUtil.UPDATE);
  2607. }
  2608. // 设置反关闭分录id
  2609. head.put("unCloseEntryId",amsSaleMaterial.getEasPrimaryId());
  2610. // 设置是否整单
  2611. head.put("wholeOrder",wholeOrder);
  2612. // 设置销售订单号
  2613. head.put("number",amsSaleOrder.getSaleNumber());
  2614. // 设置状态:unClose,反关闭;close,关闭
  2615. head.put("status",status);
  2616. input.put("head",head);
  2617. // 测试
  2618. Map<String, Object> totalMap = easUtil.getTotalMap();
  2619. // 正式
  2620. // Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
  2621. input.put("head",head);
  2622. totalMap.put("input",input);
  2623. // 调用金蝶关闭接口
  2624. String json = JSONUtils.toJSONString(totalMap);
  2625. System.out.println(json);
  2626. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2627. try {
  2628. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2629. }catch (Exception e){
  2630. e.printStackTrace();
  2631. }
  2632. System.out.println(resultMap);
  2633. return result;
  2634. }
  2635. /**
  2636. * 反关闭金蝶整个销售订单
  2637. * @param saleOrderId
  2638. * @return
  2639. */
  2640. @Override
  2641. public int adverseCloseSaleOrder(BigDecimal saleOrderId) {
  2642. Map<String,Object> head = new HashMap<>();
  2643. Map<String,Object> input = new HashMap<>();
  2644. // 0:代表不关闭整单
  2645. String wholeOrder = "1";
  2646. // unClose : 代表反关闭
  2647. String status = "unClose";
  2648. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  2649. amsSaleOrder.setDeleted(new BigDecimal(0));
  2650. // 开启所有的分录
  2651. int result = amsSaleMaterialMapper.openAllSaleMaterial(amsSaleOrder.getSaleOrderId());
  2652. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  2653. // 设置是否整单
  2654. head.put("wholeOrder",wholeOrder);
  2655. // 设置销售订单号
  2656. head.put("number",amsSaleOrder.getSaleNumber());
  2657. // 设置状态:unClose,反关闭;close,关闭
  2658. head.put("status",status);
  2659. input.put("head",head);
  2660. // 测试
  2661. Map<String, Object> totalMap = easUtil.getTotalMap();
  2662. // 正式
  2663. // Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
  2664. input.put("head",head);
  2665. totalMap.put("input",input);
  2666. // 调用金蝶关闭接口
  2667. String json = JSONUtils.toJSONString(totalMap);
  2668. System.out.println(json);
  2669. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2670. try {
  2671. saleLogUtil.logSaleOrder(saleOrderId,"物流关闭销售订单" ,"物流" ,SaleLogUtil.CLOSE);
  2672. } catch (Exception e) {
  2673. e.printStackTrace();
  2674. }
  2675. try {
  2676. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2677. }catch (Exception e){
  2678. e.printStackTrace();
  2679. }
  2680. System.out.println(resultMap);
  2681. return result;
  2682. }
  2683. @Override
  2684. public List<Map<String, Object>> getKucunList(Map<String, Object> map) {
  2685. HashSet<Map<String,Object>> filterConsigneeList = new HashSet<>();
  2686. HashSet<Map<String,Object>> filterToStationList = new LinkedHashSet<>();
  2687. HashSet<Map<String,Object>> filtermaterialNameList = new LinkedHashSet<>();
  2688. HashSet<Map<String,Object>> filtermaterialSpaList = new LinkedHashSet<>();
  2689. List<Map<String,Object>> mapList = amsSaleOrderMapper.getKucunList(map);
  2690. for(int j = 0;j < mapList.size() ; j++ ) {
  2691. Map<String,Object> stringObjectMap = mapList.get(j);
  2692. Map<String,Object> filterConsigneeMap = new HashMap<>();
  2693. filterConsigneeMap.put("text",stringObjectMap.get("receiveName"));
  2694. filterConsigneeMap.put("value",stringObjectMap.get("receiveName"));
  2695. filterConsigneeList.add(filterConsigneeMap);
  2696. Map<String,Object> filterToStationMap = new HashMap<>();
  2697. filterToStationMap.put("text",stringObjectMap.get("toTheStation"));
  2698. filterToStationMap.put("value",stringObjectMap.get("toTheStation"));
  2699. filterToStationList.add(filterToStationMap);
  2700. Map<String,Object> filtermaterialNameMap = new HashMap<>();
  2701. filtermaterialNameMap.put("text",stringObjectMap.get("materialName"));
  2702. filtermaterialNameMap.put("value",stringObjectMap.get("materialName"));
  2703. filtermaterialNameList.add(filtermaterialNameMap);
  2704. Map<String,Object> filtermaterialSpaMap = new HashMap<>();
  2705. filtermaterialSpaMap.put("text",stringObjectMap.get("materialSpa"));
  2706. filtermaterialSpaMap.put("value",stringObjectMap.get("materialSpa"));
  2707. filtermaterialSpaList.add(filtermaterialSpaMap);
  2708. }
  2709. if(mapList.size() > 0) {
  2710. mapList.get(0).put("filterConsigneeList",filterConsigneeList);
  2711. mapList.get(0).put("filterToStationList",filterToStationList);
  2712. mapList.get(0).put("filtermaterialNameList",filtermaterialNameList);
  2713. mapList.get(0).put("filtermaterialSpaList",filtermaterialSpaList);
  2714. }
  2715. return mapList;
  2716. }
  2717. //反关闭
  2718. @Override
  2719. public int reverseCloseOrder(Map<String, Object> map) {
  2720. Integer isOpenEas = (Integer) map.get("isOpenEas");
  2721. String operateName = (String) map.get("operateName");
  2722. int result = 0;
  2723. // 运输订单id
  2724. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  2725. // 车序号id
  2726. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  2727. Map<String,Object> head = new HashMap<>();
  2728. Map<String,Object> input = new HashMap<>();
  2729. // 0:代表不关闭整单
  2730. String wholeOrder = "0";
  2731. // unClose : 代表反关闭
  2732. String status = "unClose";
  2733. if( orderId != null && orderId.intValue() != 0){
  2734. //根据订单id查询下面的实绩个数
  2735. int resultCount = amsSaleMaterialMapper.getOrderResults(orderId);
  2736. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2737. omstruckOrder.setOrderId(orderId);
  2738. if(resultCount == 0){
  2739. omstruckOrder.setOrderStatus(new BigDecimal(4));
  2740. }else{
  2741. omstruckOrder.setOrderStatus(new BigDecimal(5));
  2742. }
  2743. if(operateName != null){
  2744. omstruckOrder.setOptionerCode(operateName);
  2745. }
  2746. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2747. //插入日志
  2748. saleLogUtil.logOrder(omstruckOrder.getOrderId(),"反关闭",null,SaleLogUtil.UPDATE);
  2749. // 根据车序号主键修改子表
  2750. amsSaleMaterialMapper.updateSaleMaterial(saleOrderMaterialId);
  2751. //查询分录ID,修改金蝶
  2752. List<Map<String,Object>> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId);
  2753. for(Map<String,Object> easMap:saleMaterialIdList){
  2754. // 设置反关闭分录id
  2755. head.put("unCloseEntryId",easMap.get("closeEntryId"));
  2756. // 设置是否整单
  2757. head.put("wholeOrder",wholeOrder);
  2758. // 设置销售订单号
  2759. head.put("number",map.get("saleNumber"));
  2760. // 设置状态:unClose,反关闭;close,关闭
  2761. head.put("status",status);
  2762. input.put("head",head);
  2763. input.put("unCancel",true);
  2764. Map<String, Object> totalMap = easUtil.getTotalMap();
  2765. input.put("head",head);
  2766. totalMap.put("input",input);
  2767. // 调用金蝶关闭接口
  2768. String json = JSONUtils.toJSONString(totalMap);
  2769. System.out.println(json);
  2770. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2771. try {
  2772. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2773. }catch (Exception e){
  2774. e.printStackTrace();
  2775. }
  2776. System.out.println(resultMap);
  2777. }
  2778. try {
  2779. //发送给计量
  2780. Map<String, Object> cancelOrderMap = new HashMap<>();
  2781. if(map.get("capacityNo")!=null){
  2782. cancelOrderMap.put("orderID",map.get("capacityNo"));
  2783. }else{
  2784. cancelOrderMap.put("orderID","空白");
  2785. }
  2786. cancelOrderMap.put("changeStatus",2);
  2787. cancelOrderMap.put("content",map.get("capacityNo"));
  2788. System.out.println("联动计量撤销取消:" + map.get("capacityNo"));
  2789. String url = "http://172.16.33.122:44325/api/logistics/CancleOrdersBill";
  2790. JSONObject cancelOrderJson = new JSONObject(cancelOrderMap);
  2791. System.out.println("联动计量撤销取消报文:" + cancelOrderJson);
  2792. String sendUrl = url ;
  2793. String jsonData = null;
  2794. jsonData = HTTPRequestUtils.send(sendUrl, cancelOrderJson,"utf-8");
  2795. System.out.println("联动计量撤销取消响应:" + jsonData);
  2796. } catch (IOException e) {
  2797. e.printStackTrace();
  2798. }
  2799. return 0;
  2800. }
  2801. return 1;
  2802. }
  2803. @Override
  2804. public int getSaleOrderStatus(String saleNumber) {
  2805. int result = 0;
  2806. Map<String,Object> input = new HashMap<>();
  2807. // 销售订单号
  2808. input.put("number",saleNumber);
  2809. Map<String, Object> totalMap = easSaleOrderStatusUtil.getTotalMap();
  2810. totalMap.put("input",input);
  2811. // 调用金蝶关闭接口
  2812. String json = JSONUtils.toJSONString(totalMap);
  2813. System.out.println(json);
  2814. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2815. try {
  2816. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2817. }catch (Exception e){
  2818. e.printStackTrace();
  2819. }
  2820. System.out.println(resultMap);
  2821. String outPutMap = (String) resultMap.get("output");
  2822. JSONObject jsonObject = JSON.parseObject(outPutMap);
  2823. if(jsonObject != null){
  2824. result = DataChange.dataToBigDecimal(jsonObject.get("NumberStatus")).intValue();
  2825. }
  2826. if(result == 7){
  2827. //如果为7则更新
  2828. amsSaleOrderMapper.updateSaleOrderStatus(saleNumber);
  2829. try {
  2830. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId(saleNumber);
  2831. saleLogUtil.logSaleOrder(saleOrderId,"物流查询金蝶销售订单,物流同步关闭" ,"物流" ,SaleLogUtil.CLOSE);
  2832. } catch (Exception e) {
  2833. e.printStackTrace();
  2834. }
  2835. }
  2836. return result;
  2837. }
  2838. @Override
  2839. public int adverseCloseSaleMaterialByEas(BigDecimal saleMaterialId) {
  2840. AmsSaleMaterial amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(saleMaterialId);
  2841. int result = amsSaleMaterialMapper.adverseCloseSaleMaterial(saleMaterialId);
  2842. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(amsSaleMaterial.getSaleOrderId());
  2843. // 根据分录id查询运单id,物资id,总实绩id
  2844. Map<String,Object> saleMaterialMap = amsSaleOrderMapper.getSaleMaterialMessage(saleMaterialId);
  2845. BigDecimal orderId = (BigDecimal) saleMaterialMap.get("orderId");
  2846. BigDecimal orderStatus = (BigDecimal) saleMaterialMap.get("orderStatus");
  2847. //查询订单字表条数
  2848. int orderMaterialNum = omstruckOrderMapper.getOrderMaterialNum(orderId);
  2849. //查询计量实绩条数
  2850. int weightResultNum = omstruckOrderMapper.getWeightResultNum(orderId);
  2851. if (orderId != null && orderStatus.intValue() == 5 && orderMaterialNum != weightResultNum) {
  2852. BigDecimal resultTotalId = (BigDecimal) saleMaterialMap.get("resultTotalId");
  2853. BigDecimal materialId = (BigDecimal) saleMaterialMap.get("materialId");
  2854. // 根据总实绩id查询订单中的最大路段顺序号
  2855. // 得到皮重顺序号
  2856. int tareNum = (weightResultNum + 1) * 3 - 1;
  2857. // 得到装货顺序号
  2858. int loadNum = (weightResultNum + 1) * 3;
  2859. // 得到毛重顺序号
  2860. int grossNum = (weightResultNum + 1) * 3 + 1;
  2861. // 装货实绩
  2862. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  2863. TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
  2864. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  2865. tmstruckLoadResult.setResultTotalId(resultTotalId);
  2866. tmstruckLoadResult.setSegmentSqe(new BigDecimal(loadNum));
  2867. result += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  2868. // 计量实绩
  2869. tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
  2870. tmstruckWeightResult.setResultTotalId(resultTotalId);
  2871. tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(10));
  2872. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(2));
  2873. tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(grossNum));
  2874. tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(tareNum));
  2875. result += tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
  2876. // 出库子表
  2877. BigDecimal outBoundId = (BigDecimal) saleMaterialMap.get("outBoundId");
  2878. BigDecimal materialNumber = (BigDecimal) saleMaterialMap.get("materialNumber");
  2879. if (outBoundId != null) {
  2880. BigDecimal resultMaterialId = wmspOutboundResultMaterialMapper.getSeqNumber("seq__WMSP_OUTBOUND_RESUL_TMATRIAL");
  2881. WmspOutboundResultMaterial wmspOutboundResultMaterial = new WmspOutboundResultMaterial();
  2882. wmspOutboundResultMaterial.setResultMaterialId(resultMaterialId);
  2883. wmspOutboundResultMaterial.setOutboundResultId(outBoundId);
  2884. wmspOutboundResultMaterial.setMaterialId(materialId);
  2885. wmspOutboundResultMaterial.setMaterialNumber(materialNumber);
  2886. wmspOutboundResultMaterial.setInsertTime(new Date());
  2887. wmspOutboundResultMaterial.setInsertUsername("admin");
  2888. wmspOutboundResultMaterial.setStatus(new BigDecimal(1));
  2889. result += wmspOutboundResultMaterialMapper.insertSelective(wmspOutboundResultMaterial);
  2890. }
  2891. }
  2892. //去掉取消装货
  2893. result += omstruckOrderMaterialMapper.updateOmsMaterial(saleMaterialMap);
  2894. if (orderId != null && orderStatus.intValue() == 7) {
  2895. //如果订单被关闭,那么还原
  2896. //判断下面有没有实绩
  2897. int resultCount = omstruckOrderMapper.getResultCount(orderId);
  2898. OmstruckOrder omstruckOrder = new OmstruckOrder();
  2899. if (resultCount == 0) {
  2900. omstruckOrder.setOrderId(orderId);
  2901. omstruckOrder.setOrderStatus(new BigDecimal(4));
  2902. omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
  2903. omstruckOrder.setUpdateTime(new Date());
  2904. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2905. }else{
  2906. omstruckOrder.setOrderId(orderId);
  2907. omstruckOrder.setOrderStatus(new BigDecimal(5));
  2908. omstruckOrder.setInsertUpdateRemark("反关闭分录,运单同步开启");
  2909. omstruckOrder.setUpdateTime(new Date());
  2910. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  2911. }
  2912. //插入日志
  2913. saleLogUtil.logOrder(orderId,"反关闭分录,运单同步开启",null,SaleLogUtil.UPDATE);
  2914. }
  2915. return result;
  2916. }
  2917. @Override
  2918. public List<String> getEasPrimaryIds(Map<String, Object> map) {
  2919. List<String> easPrimaryIds = amsSaleOrderMapper.getEasPrimaryIds(map);
  2920. String easPrimaryList = "";
  2921. for (String easPrimaryId :easPrimaryIds) {
  2922. easPrimaryList = easPrimaryList + '\'' + easPrimaryId + '\'' + ',';
  2923. }
  2924. easPrimaryList = easPrimaryList.substring(0,easPrimaryList.length() - 1);
  2925. ArrayList<String> easPrimaryList1 = new ArrayList<>();
  2926. easPrimaryList1.add(easPrimaryList);
  2927. Map<String,Object> totalMap = easFluMakeDateUtil.getTotalMap();
  2928. Map<String, Object> input = new HashMap<>();
  2929. input.put("defineSqlNumber","defineXSCKTime");
  2930. input.put("defineSqlparams",easPrimaryList1);
  2931. totalMap.put("input",input);
  2932. totalMap.put("outerSystem","DG");
  2933. JSONObject jsonObject = new JSONObject(totalMap);
  2934. Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
  2935. try {
  2936. newFileTool.newFile("deleteSaleOrderToEas:"+totalMap,"金蝶通讯报文");
  2937. }catch (Exception e){
  2938. e.printStackTrace();
  2939. }
  2940. String outPut = (String) resultMap.get("output");
  2941. JSONObject outputjson = JSONObject.parseObject(outPut);
  2942. Map<String,Object> outputMap = (Map<String,Object>) outputjson;
  2943. List<Map<String,Object>> rowSetList = (List<Map<String,Object>>) outputMap.get("rowset");
  2944. for (Map<String,Object> rowSet : rowSetList) {
  2945. Map<String, Object> easMap = new HashMap<>();
  2946. String easprimaryIdMakeDate = (String) rowSet.get("FCREATETIME");
  2947. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2948. Date easprimaryIdMakeDate1 = null;
  2949. try {
  2950. easprimaryIdMakeDate1 = sdf.parse(easprimaryIdMakeDate);
  2951. } catch (ParseException e) {
  2952. e.printStackTrace();
  2953. }
  2954. rowSet.put("easprimaryIdMakeDate",easprimaryIdMakeDate1);
  2955. amsSaleMaterialMapper.updateSaleMaterialMakeDate(rowSet);
  2956. }
  2957. return easPrimaryIds;
  2958. }
  2959. @Override
  2960. @Transactional(rollbackFor = Exception.class)
  2961. public synchronized int addSteelSaleOrderLoading(Map<String, Object> mapValue) throws Exception {
  2962. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  2963. //如果前端传输过来的销售订单id不是空,则改变为已上传
  2964. if (mapValue.get("saleOrderId") != null) {
  2965. //先判断该销售订单有没有被上传,如果传了则不允许重复上传
  2966. if (mapValue.get("saleOrderNo") != null) {
  2967. int count1 = amsSaleOrderMaterialMapper.selectSaleOrdeNoIsUpload(mapValue.get("saleOrderNo").toString());
  2968. if(count1 != 0) {
  2969. return 0;
  2970. }
  2971. amsSaleOrderMapper.updateOldSaleOrderUploadByNo(mapValue.get("saleOrderNo").toString());
  2972. }else{
  2973. int count = amsSaleOrderMaterialMapper.selectSaleOrderIdIsUpload(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
  2974. if(count != 0) {
  2975. return 0;
  2976. }
  2977. amsSaleOrderMapper.updateOldSaleOrderUpload(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
  2978. }
  2979. }
  2980. // 得到发货单位
  2981. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  2982. // 收货单位
  2983. BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
  2984. // 是否自提
  2985. String isSelfMention = (String) mapValue.get("isSelfMention");
  2986. // 备注
  2987. String saleRemark = (String) mapValue.get("saleRemark");
  2988. String saleGroupCode = null;
  2989. try {
  2990. saleGroupCode = "钢" + StringUtils.substringBetween(saleRemark,"钢","组") + "组";
  2991. } catch (Exception e) {
  2992. e.printStackTrace();
  2993. }
  2994. // 收款客户
  2995. String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
  2996. // 业务员
  2997. BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
  2998. BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
  2999. int result = 0;
  3000. // 销售订单
  3001. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  3002. amsSaleOrder.setReceiveId(receiveId);
  3003. amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
  3004. amsSaleOrder.setShipperId(shipperId);
  3005. amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
  3006. amsSaleOrder.setSaleOrderId(saleOrderId);
  3007. amsSaleOrder.setSalerId(salerId);
  3008. // 设置钢材订单
  3009. amsSaleOrder.setSaleType(new BigDecimal(1));
  3010. amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
  3011. amsSaleOrder.setInsertTime(new Date());
  3012. amsSaleOrder.setInsertUpdateRemark("物流新增继续装销售订单");
  3013. amsSaleOrder.setInsertUsername("物流");
  3014. amsSaleOrder.setUpdateTime(new Date());
  3015. amsSaleOrder.setDeleted(new BigDecimal(0));
  3016. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  3017. amsSaleOrder.setBusinessDate(new Date());
  3018. // 税率默认13%
  3019. amsSaleOrder.setSaleOrderTax("13%");
  3020. // 含税单价某人4000
  3021. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  3022. // 收款客户
  3023. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  3024. // 销售订单物资表
  3025. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  3026. // 车序号物资表
  3027. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  3028. // 遍历每一行
  3029. for (Map<String, Object> map : mapList) {
  3030. /*
  3031. 车序号表
  3032. */
  3033. // 得到车序号
  3034. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  3035. Map<String,Object> saleMap = new HashMap<>();
  3036. saleMap.put("saleOrderId",saleOrderId);
  3037. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  3038. // 检测销售订单下的车序号是否已存在
  3039. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  3040. // 车序号表
  3041. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  3042. if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
  3043. // 车序号主键
  3044. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  3045. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
  3046. // 车号备注
  3047. String truckRemark = (String) (map.get("truckRemark"));
  3048. String place = (String) (map.get("place"));
  3049. amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map.get("placeId")));
  3050. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否") && DataChange.dataToBigDecimal(map.get("carrierId")).intValue() == 0) {
  3051. // 自动匹配承运商
  3052. List<Map<String, Object>> carrierList = getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId());
  3053. BigDecimal carrierCount = null;
  3054. if(place != null && !"null".equals(place)){
  3055. carrierCount = amsSaleOrderMapper.getMoreCarrier(place);
  3056. }
  3057. //根据收货地址id查询备注,判断是否需要匹配承运商
  3058. String addressRemark = amsSaleOrderMaterialMapper.getAddressRemark(shippingAddressId);
  3059. // 单一承运商才进行匹配
  3060. if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null && carrierCount.intValue() == 0 && addressRemark == null) {
  3061. List<Map<String, Object>> list = new ArrayList<>();
  3062. Map<String, Object> map1 = carrierList.get(0);
  3063. // 传入车序号主键和承运商id
  3064. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  3065. list.add(map1);
  3066. dispatchToCarrier(list);
  3067. }
  3068. }
  3069. if (isSelfMention.equals("是")) {
  3070. BigDecimal carrierId = null;
  3071. // 根据收货单位id查询出收货单位名称
  3072. if (place != null && place.contains("欧冶")) {
  3073. String placeRemark = amsSaleOrderMapper.selectPlaceRemark(place);
  3074. carrierId = amsSaleOrderMapper.selectCarrierId(placeRemark);
  3075. }else{
  3076. String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
  3077. carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
  3078. }
  3079. // 根据收货单位名称查询承运商id
  3080. List<Map<String, Object>> list = new ArrayList<>();
  3081. Map<String,Object> map1 = new HashMap<>();
  3082. // 传入车序号主键和承运商id
  3083. if (carrierId != null) {
  3084. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  3085. map1.put("carrierId", carrierId);
  3086. list.add(map1);
  3087. dispatchToCarrier(list);
  3088. }
  3089. }
  3090. if (DataChange.dataToBigDecimal(map.get("carrierId")).intValue() != 0) {
  3091. //说明有承运商
  3092. List<Map<String, Object>> list = new ArrayList<>();
  3093. Map<String, Object> carrierMap = new HashMap<>();
  3094. carrierMap.put("carrierId",map.get("carrierId"));
  3095. carrierMap.put("saleOrderMaterialId",saleOrderMaterialId);
  3096. list.add(carrierMap);
  3097. dispatchToCarrier(list);
  3098. }
  3099. // 收货方姓名
  3100. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  3101. // 收货方电话
  3102. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  3103. // 截止日期
  3104. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  3105. Date oldDateOfReceipt = amsSaleOrderMaterialMapper.getOldDateOfReceipt(DataChange.dataToBigDecimal(mapValue.get("saleOrderId")));
  3106. Date dateOfReceipt = null;
  3107. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  3108. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  3109. }
  3110. if(oldDateOfReceipt != null) {
  3111. Calendar calendar = Calendar.getInstance();
  3112. calendar.setTime(oldDateOfReceipt);
  3113. calendar.add(Calendar.DATE,1);
  3114. dateOfReceipt = calendar.getTime();
  3115. }
  3116. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  3117. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  3118. amsSaleOrderMaterial.setTruckRemark(truckRemark);
  3119. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  3120. if(map.get("orderNo") != null) {
  3121. amsSaleOrderMaterial.setPreviousOrderNumber((String) map.get("orderNo"));
  3122. //如果该订单已有出厂实绩,不允许生成继续装
  3123. //int outFactoryResult = amsSaleOrderMapper.selectOutFactoryResult((String) map.get("orderNo"));
  3124. //if(outFactoryResult > 0) {
  3125. // return 0;
  3126. //}
  3127. }
  3128. if (consigneeName != null && !consigneeName.equals("null")) {
  3129. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  3130. }
  3131. if (consigneeTel != null && !consigneeTel.equals("null")) {
  3132. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  3133. }
  3134. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  3135. amsSaleOrderMaterial.setInsertTime(new Date());
  3136. amsSaleOrderMaterial.setUpdateTime(new Date());
  3137. amsSaleOrderMaterial.setInsertUpdateRemark("物流新增继续装");
  3138. amsSaleOrderMaterial.setWarrantyNumber(new BigDecimal(1));
  3139. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  3140. }
  3141. else {
  3142. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  3143. }
  3144. /*
  3145. 销售订单物资表
  3146. */
  3147. // 物资
  3148. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  3149. Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
  3150. RmsMaterial rmsMaterial = new RmsMaterial();
  3151. rmsMaterial.setMaterialId(materialId);
  3152. if (materialCount == null) {
  3153. materialCount = new Integer(0);
  3154. }
  3155. rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
  3156. rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
  3157. // 物资件数
  3158. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  3159. // 物资名称
  3160. Object materialName = map.get("materialName");
  3161. // 钢材米数
  3162. BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
  3163. // 判断物资是否是盘螺或盘元/盘圆
  3164. if (materialName != null && (materialName.toString().contains("盘螺") || materialName.toString().contains("盘元") || materialName.toString().contains("盘圆"))) {
  3165. amsSaleMaterial.setSteelMeter(null);
  3166. }
  3167. else {
  3168. amsSaleMaterial.setSteelMeter(steelMeters);
  3169. }
  3170. // 是否磅重销售(0:磅重;1:理重)
  3171. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
  3172. // 销售订单物资表主键
  3173. BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
  3174. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  3175. amsSaleMaterial.setSaleOrderId(saleOrderId);
  3176. amsSaleMaterial.setMaterialId(materialId);
  3177. amsSaleMaterial.setMaterialNumber(materialNumber);
  3178. amsSaleMaterial.setMaterialPlanNumber(materialNumber);
  3179. amsSaleMaterial.setInsertTime(new Date());
  3180. amsSaleMaterial.setUpdateTime(new Date());
  3181. amsSaleMaterial.setIsPoundSale(isPoundSale);
  3182. amsSaleMaterial.setInsertUpdateRemark("物流新增");
  3183. amsSaleMaterial.setSaleNo(amsSaleOrder.getSaleNumber());
  3184. try {
  3185. amsSaleMaterial.setTransferInOfWarehouse(saleRemark);
  3186. } catch (Exception e) {
  3187. e.printStackTrace();
  3188. }
  3189. if(saleGroupCode != null) {
  3190. amsSaleMaterial.setTransferOutOfWarehouse(saleGroupCode);
  3191. }
  3192. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  3193. /*
  3194. 车序号物资表
  3195. */
  3196. // 车序号物资表主键
  3197. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  3198. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  3199. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  3200. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  3201. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  3202. amsSaleTrucknoMaterial.setInsertTime(new Date());
  3203. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  3204. amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
  3205. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  3206. }
  3207. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  3208. return saleOrderId.intValue();
  3209. }
  3210. @Override
  3211. public BigDecimal selectTransPortOrder(BigDecimal closeWlEntryId) {
  3212. return amsSaleMaterialMapper.selectTransPortOrderId(closeWlEntryId);
  3213. }
  3214. @Override
  3215. public int updateTransportOrderStatus(BigDecimal orderId) {
  3216. //查询该运单下有没有净重,没有净重就变为7,有净重就变为2
  3217. int netWeight = omstruckOrderMapper.selectNetWeightCount(orderId);
  3218. //查询该运单有没有出厂,没有出厂才变2
  3219. int outFactory = omstruckOrderMapper.selectOutFactory(orderId);
  3220. int orderStatus = 7;
  3221. if((netWeight > 0 ) && outFactory == 0) {
  3222. orderStatus = 2;
  3223. }
  3224. if(netWeight > 0 && outFactory > 0) {
  3225. orderStatus = 5;
  3226. }
  3227. return amsSaleOrderMaterialMapper.updateTransportOrderStatus(orderId,orderStatus);
  3228. }
  3229. @ApiOperation("定时获取制单日期")
  3230. @Scheduled(fixedRate = 20 * 60 * 1000)
  3231. public void getMakeDateTime() {
  3232. Map<String, Object> Map = new HashMap<>();
  3233. getEasPrimaryIds(Map);
  3234. disposeTransOrder();
  3235. }
  3236. private int disposeTransOrder() {
  3237. //查询过了截止日期的销售订单
  3238. int i = amsSaleOrderMapper.getTransOrderIds();
  3239. return i;
  3240. }
  3241. /**
  3242. * 推送车牌号给金蝶
  3243. * @param map
  3244. * @return
  3245. */
  3246. @Override
  3247. public int pushCarNumberToEas(Map<String, Object> map) throws Exception {
  3248. // 调用EAS接口将车牌号传给金蝶
  3249. List<Map<String,Object>> mapList = new ArrayList<>();
  3250. mapList.add(map);
  3251. Map<String,Object> input = joinFeign.findCarNumberByOrderList(mapList);
  3252. try{
  3253. //存在capacityId则判断是否取消或撤销取消
  3254. if(map.get("capacityId")!=null){
  3255. List<Map<String,Object>> entriesList = (List<Map<String,Object>>) input.get("entries");
  3256. //新车号、当前车号、旧车号
  3257. String capacityId ="" + map.get("capacityId");
  3258. Map<String,Object> capacityDetails= amsSaleOrderMapper.getCapacityDetailByAsom(map);
  3259. if(capacityDetails!=null && capacityDetails.get("nowCapcaityId")!=null){
  3260. //存在当前车号,判断是否存在取消或撤销取消
  3261. String nowCapcaityId ="" + capacityDetails.get("nowCapcaityId");
  3262. if(capacityId.equals("35128") && !capacityId.equals(nowCapcaityId)){
  3263. //判断是否正常转取消:新车号为取消且不等于旧车号
  3264. input.put("cancel",true);
  3265. for(Map<String,Object> entriesMap : entriesList) {
  3266. entriesMap.put("changeStatus",1);
  3267. }
  3268. }else if(capacityDetails.get("oldCapacityIds")!=null){
  3269. //存在旧车号,判断是否撤销取消:当前车号为取消,且最近的旧车号等于新车号
  3270. String[] oldCapacityIds =("" + capacityDetails.get("oldCapacityIds")).split(",");
  3271. String lastOldCapacity = oldCapacityIds[0];
  3272. if(nowCapcaityId.equals("35128") && lastOldCapacity.equals(capacityId)){
  3273. input.put("unCancel",true);
  3274. for(Map<String,Object> entriesMap : entriesList) {
  3275. entriesMap.put("changeStatus",2);
  3276. }
  3277. }
  3278. }
  3279. //发送给计量
  3280. if(input.get("cancel")!=null || input.get("unCancel")!=null){
  3281. Map<String, Object> cancelOrderMap = new HashMap<>();
  3282. cancelOrderMap.put("orderID",capacityDetails.get("orderNumber"));
  3283. if(input.get("cancel")!=null){
  3284. cancelOrderMap.put("changeStatus",1);
  3285. cancelOrderMap.put("content","取消");
  3286. System.out.println("联动计量取消:" + map.get("oldCapacityNumber"));
  3287. }else if(input.get("unCancel")!=null){
  3288. cancelOrderMap.put("changeStatus",2);
  3289. cancelOrderMap.put("content",map.get("capacityNo"));
  3290. System.out.println("联动计量撤销取消:" + map.get("oldCapacityNumber"));
  3291. }
  3292. String url = "http://172.16.33.122:44325/api/logistics/CancleOrdersBill";
  3293. JSONObject cancelOrderJson = new JSONObject(cancelOrderMap);
  3294. System.out.println("联动计量撤销取消报文:" + cancelOrderJson);
  3295. String sendUrl = url ;
  3296. String jsonData = HTTPRequestUtils.send(sendUrl, cancelOrderJson,"utf-8");
  3297. System.out.println("联动计量撤销取消响应:" + jsonData);
  3298. }
  3299. }
  3300. }
  3301. }catch (Exception e){
  3302. e.printStackTrace();
  3303. }
  3304. Map<String,Object> totalMap = new HashMap<>();
  3305. //正式
  3306. totalMap.putAll(easCapacityTestUtil.getTotalMap());
  3307. ////测试
  3308. //totalMap.putAll(easTestUtil.getTotalMap());
  3309. totalMap.put("input",input);
  3310. Map<String,Object> s = joinFeign.pushCarNumberToEas(totalMap);
  3311. System.out.println(totalMap);
  3312. String json = JSONUtils.toJSONString(totalMap);
  3313. System.out.println(json);
  3314. totalMap.put("output",s);
  3315. try {
  3316. newFileTool.newFile("pushCarNumberToEas:"+totalMap,"金蝶通讯报文");
  3317. }catch (Exception e){
  3318. e.printStackTrace();
  3319. }
  3320. if (s == null || s.size() == 0) {
  3321. throw new Exception("登录金蝶失败!请重试派车!");
  3322. }else {
  3323. try {
  3324. JSONObject result = new JSONObject(s);
  3325. //如果status不为1,抛出异常
  3326. if (!result.getJSONObject("res").getString("status").equals("1")) {
  3327. throw new Exception("上传金蝶失败!请重试派车:" + result.getJSONObject("requestException").getString("message"));
  3328. }
  3329. } catch (Exception e) {
  3330. e.printStackTrace();
  3331. //只抛出自定义异常
  3332. if (e.getMessage().contains("Exception")) {
  3333. throw new Exception("上传金蝶失败!请重试派车!");
  3334. } else {
  3335. throw new Exception(e.getMessage());
  3336. }
  3337. }
  3338. }
  3339. return 1;
  3340. }
  3341. /**
  3342. * 批量推送
  3343. * @param mapList
  3344. * @return
  3345. * @throws Exception
  3346. */
  3347. @Override
  3348. public int batchPushCarNumberToEas(List<Map<String, Object>> mapList) throws Exception {
  3349. Map<String, Object> input = joinFeign.findCarNumberByOrderList(mapList);
  3350. Map<String, Object> totalMap = new HashMap<>();
  3351. totalMap.putAll(easCapacityTestUtil.getTotalMap());
  3352. totalMap.put("input", input);
  3353. Map<String, Object> s = joinFeign.pushCarNumberToEas(totalMap);
  3354. System.out.println(totalMap);
  3355. String json = JSONUtils.toJSONString(totalMap);
  3356. System.out.println(json);
  3357. totalMap.put("output", s);
  3358. System.out.println(totalMap);
  3359. try {
  3360. newFileTool.newFile("pushCarNumberToEas:" + totalMap, "金蝶通讯报文");
  3361. } catch (Exception e) {
  3362. e.printStackTrace();
  3363. }
  3364. if (s == null || s.size() == 0) {
  3365. throw new Exception("登录金蝶失败!请重试派车!");
  3366. } else {
  3367. try {
  3368. JSONObject result = new JSONObject(s);
  3369. //如果status不为1,抛出异常
  3370. if (!result.getJSONObject("res").getString("status").equals("1")) {
  3371. throw new Exception("上传金蝶失败!请重试派车:" + result.getJSONObject("requestException").getString("message"));
  3372. }
  3373. } catch (Exception e) {
  3374. e.printStackTrace();
  3375. //只抛出自定义异常
  3376. if (e.getMessage().contains("Exception")) {
  3377. throw new Exception("上传金蝶失败!请重试派车!");
  3378. } else {
  3379. throw new Exception(e.getMessage());
  3380. }
  3381. }
  3382. }
  3383. try{
  3384. //存在capacityId则判断是否取消或撤销取消
  3385. for(Map<String, Object> map : mapList){
  3386. if(map.get("capacityId")!=null){
  3387. //新车号、当前车号、旧车号
  3388. String capacityId ="" + map.get("capacityId");
  3389. Map<String,Object> capacityDetails= amsSaleOrderMapper.getCapacityDetailByAsom(mapList.get(0));
  3390. Map<String, Object> cancelOrderMap = new HashMap<>();
  3391. cancelOrderMap.put("orderID",capacityDetails.get("orderNumber"));
  3392. if(capacityDetails!=null && capacityDetails.get("nowCapcaityId")!=null){
  3393. //存在当前车号,判断是否存在取消或撤销取消
  3394. String nowCapcaityId ="" + capacityDetails.get("nowCapcaityId");
  3395. if(capacityId.equals("35128") && !capacityId.equals(nowCapcaityId)){
  3396. //判断是否正常转取消:新车号为取消且不等于旧车号
  3397. // input.put("cancel",true);
  3398. cancelOrderMap.put("changeStatus",1);
  3399. cancelOrderMap.put("content","取消");
  3400. System.out.println("联动计量取消:" + map.get("oldCapacityNumber"));
  3401. }else if(capacityDetails.get("oldCapacityIds")!=null){
  3402. //存在旧车号,判断是否撤销取消:当前车号为取消,且最近的旧车号等于新车号
  3403. String[] oldCapacityIds =("" + capacityDetails.get("oldCapacityIds")).split(",");
  3404. String lastOldCapacity = oldCapacityIds[0];
  3405. if(nowCapcaityId.equals("35128") && lastOldCapacity.equals(capacityId)){
  3406. // input.put("unCancel",true);
  3407. cancelOrderMap.put("changeStatus",2);
  3408. cancelOrderMap.put("content",map.get("capacityNo"));
  3409. System.out.println("联动计量撤销取消:" + map.get("oldCapacityNumber"));
  3410. }
  3411. }
  3412. //发送给计量
  3413. if(cancelOrderMap.get("changeStatus")!=null ){
  3414. String url = "http://172.16.33.122:44325/api/logistics/CancleOrdersBill";
  3415. JSONObject cancelOrderJson = new JSONObject(cancelOrderMap);
  3416. System.out.println("联动计量撤销取消报文:" + cancelOrderJson);
  3417. String sendUrl = url ;
  3418. String jsonData = HTTPRequestUtils.send(sendUrl, cancelOrderJson,"utf-8");
  3419. System.out.println("联动计量撤销取消响应:" + jsonData);
  3420. }
  3421. }
  3422. }
  3423. }
  3424. }catch (Exception e){
  3425. e.printStackTrace();
  3426. }
  3427. return 1;
  3428. }
  3429. /**
  3430. * 钢材派车,不上传金蝶
  3431. * @param map
  3432. * @return
  3433. * @throws Exception
  3434. */
  3435. private int dispatchSteelOrderNotPush(Map<String, Object> map) throws Exception {
  3436. Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
  3437. Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
  3438. String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
  3439. //如果这个车序号下面有运单,则证明已经派了
  3440. Map<String,Object> orderMap = amsSaleOrderMapper.getSteelOrderMap(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
  3441. //判断该车序号对应的分录是否全部关闭
  3442. Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
  3443. if(flCount == 0) {
  3444. throw new Exception("该运单下所有分录被关闭,无法派车");
  3445. }
  3446. if (orderMap != null) {
  3447. throw new Exception("该订单已派发,无法重复派车");
  3448. }
  3449. if (saleStatus == 1) {
  3450. throw new Exception("订单未审核,无法派车!");
  3451. }
  3452. int result = 0;
  3453. //得到此次是否校验GPS
  3454. boolean onceCheck = true;
  3455. try{
  3456. onceCheck = (boolean) map.get("isCheckGPS");
  3457. }catch (Exception e){
  3458. //取值失败不处理,默认校验GPS
  3459. }
  3460. // 得到车牌号
  3461. String capacityNumber = (String) map.get("capacityNumber");
  3462. // 得到运力id
  3463. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  3464. //校验该车是否存在手机号
  3465. String tel=omstruckOrderMapper.getTelByCapacityId(capacityId);//数据库的手机号
  3466. String driverTel = (String) map.get("driverTel");//填写的手机号
  3467. if(tel==null || "".equals(tel)){
  3468. throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
  3469. }
  3470. //查询车牌号是否是黑名单
  3471. if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
  3472. throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
  3473. }
  3474. //非自提,单次校验且全局校验,且车不允许无GPS
  3475. int isGPS=amsSaleOrderMapper.isGPS(capacityNumber);
  3476. if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
  3477. Map<String,Object> data=null;
  3478. try{
  3479. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNumber).getData();
  3480. }catch (Exception e){
  3481. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  3482. }
  3483. if(data==null || !"1001".equals(""+data.get("status"))){
  3484. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  3485. }
  3486. }
  3487. // 得到车序号表主键
  3488. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  3489. // 得到承运商
  3490. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  3491. // 查询到车序号的单价
  3492. BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
  3493. // 得到详细地址id
  3494. BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId);
  3495. // 如果已经设置单价则不覆盖,详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
  3496. if (priceId == null && placeId != null && selfMention.equals("否")) {
  3497. priceId = amsSaleOrderMapper.getPriceIdByPlaceId(placeId);
  3498. }
  3499. // 运输线路id
  3500. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  3501. if(lineId==null || lineId.compareTo(BigDecimal.ZERO)==0){
  3502. throw new Exception("线路异常!");
  3503. }
  3504. BigDecimal isSteel = new BigDecimal(1);
  3505. if (capacityId == null) {
  3506. return 0;
  3507. }
  3508. List<Map<String, Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
  3509. /*
  3510. 定向派单表
  3511. */
  3512. // 通过车序号主键确认定向派单是否已存在
  3513. BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
  3514. if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
  3515. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  3516. // 主键
  3517. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  3518. amsDispatchSaleOrder.setDispatchId(dispatchId);
  3519. // 车序号表id
  3520. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  3521. // 承运商id
  3522. amsDispatchSaleOrder.setCarrierId(carrierId);
  3523. // 派单时间和成交时间
  3524. amsDispatchSaleOrder.setDispatchTime(new Date());
  3525. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  3526. // 成交类型
  3527. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  3528. // 车序号状态
  3529. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  3530. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  3531. }
  3532. // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
  3533. else {
  3534. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
  3535. amsDispatchSaleOrder.setCarrierId(carrierId);
  3536. result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  3537. }
  3538. /*
  3539. 运输订单
  3540. */
  3541. OmstruckOrder omstruckOrder = new OmstruckOrder();
  3542. Map<String, Object> map1 = new HashMap<>();
  3543. map1.put("orderType", new BigDecimal(2));
  3544. map1.put("orderPlanId", saleOrderMaterialId);
  3545. List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
  3546. if (omstruckOrders == null || omstruckOrders.size() == 0) {
  3547. // 运输订单主键
  3548. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  3549. omstruckOrder.setOrderId(orderId);
  3550. // 车序号主键
  3551. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  3552. //添加承运商ID 和 运价ID
  3553. // Object priceId = map.get("priceId");
  3554. if (priceId != null) {
  3555. omstruckOrder.setPriceId(priceId);
  3556. } else {
  3557. omstruckOrder.setPriceId(new BigDecimal(0));
  3558. }
  3559. omstruckOrder.setCarrierId(carrierId);
  3560. // 运输订单号
  3561. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
  3562. // 运力id
  3563. omstruckOrder.setCapacityId(capacityId);
  3564. // 承运商
  3565. omstruckOrder.setCarrierId(carrierId);
  3566. // 是否可作业
  3567. omstruckOrder.setCanWork(new BigDecimal(0));
  3568. // 下发时间
  3569. omstruckOrder.setOrderIssueTime(new Date());
  3570. // 运单状态
  3571. omstruckOrder.setOrderStatus(new BigDecimal(4));
  3572. // 司机电话
  3573. if(tel != null && !"".equals(tel)){
  3574. omstruckOrder.setDriverTel(tel);
  3575. }
  3576. BigDecimal status;
  3577. // 钢材
  3578. status = new BigDecimal(1);
  3579. // 订单类型
  3580. omstruckOrder.setOrderType(status);
  3581. // 运输线路id
  3582. omstruckOrder.setLineId(lineId);
  3583. omstruckOrder.setInsertTime(new Date());
  3584. omstruckOrder.setInsertUsername("");
  3585. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  3586. //插入日志
  3587. saleLogUtil.logOrder(orderId,"普通派单,当前派车为:" + capacityNumber,map,SaleLogUtil.INSERT);
  3588. } else {
  3589. omstruckOrder = omstruckOrders.get(0);
  3590. }
  3591. for (Map<String, Object> materialMap : materialList) {
  3592. BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
  3593. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  3594. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  3595. BigDecimal saleMaterialId = (BigDecimal) materialMap.get("saleMaterialId");
  3596. /*
  3597. 运输订单物资子表
  3598. */
  3599. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  3600. // 主键
  3601. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  3602. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  3603. // 运输订单id
  3604. omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
  3605. // 物资id
  3606. omstruckOrderMaterial.setMaterialId(materialId);
  3607. // 物资重量
  3608. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  3609. // 物资件数
  3610. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  3611. omstruckOrderMaterial.setSaleMaterialId(saleMaterialId);
  3612. try {
  3613. BigDecimal deleted = (BigDecimal) materialMap.get("DELETED");
  3614. if(deleted != null) {
  3615. omstruckOrderMaterial.setMaterialPriority(new BigDecimal(71));
  3616. }
  3617. } catch (Exception e) {
  3618. e.printStackTrace();
  3619. }
  3620. // 新增运输订单子表
  3621. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  3622. }
  3623. // 调用websocket
  3624. Map<String, Object> orderIdMap = new HashMap<>();
  3625. orderIdMap.put("orderId", omstruckOrder.getOrderId());
  3626. try {
  3627. amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
  3628. } catch (Exception e) {
  3629. e.printStackTrace();
  3630. }
  3631. // 生成运输执行总实绩
  3632. result += tmsTruckFeign.addTotalResult(orderIdMap);
  3633. return result;
  3634. }
  3635. /**
  3636. * 钢材改车,不上传金蝶
  3637. * @param mapValue
  3638. * @return
  3639. * @throws Exception
  3640. */
  3641. private int updateSteelOrderNotPush(Map<String, Object> mapValue) throws Exception {
  3642. Object lineSequence = mapValue.get("lineSequence");
  3643. int result = 0;
  3644. if (mapValue.get("orderId") == null) {
  3645. throw new Exception("还未派车,不允许修改车牌号");
  3646. }
  3647. //判断该车序号对应的分录是否全部关闭
  3648. if(mapValue.get("saleOrderMaterialId") != null && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
  3649. Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
  3650. if(flCount == 0) {
  3651. throw new Exception("该运单下所有分录被关闭,无法派车");
  3652. }
  3653. }
  3654. //查询输入进来的车牌号是否与原有车牌号一致,如果一致则退出
  3655. BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3656. String oldCapacityNumber = omstruckOrderMapper.getOldCapacityNumber(oldCapacityId);
  3657. if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0) {
  3658. return 1;
  3659. }
  3660. //校验该车是否存在手机号
  3661. String tel=omstruckOrderMapper.getTelByCapacityId(DataChange.dataToBigDecimal(mapValue.get("capacityId")));
  3662. String driverTel = (String) mapValue.get("driverTel");//填写的手机号
  3663. if(tel==null || "".equals(tel)){
  3664. throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
  3665. }
  3666. Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
  3667. String capacityNo = (String) mapValue.get("capacityNumber");
  3668. //得到此次是否校验GPS
  3669. boolean onceCheck = true;
  3670. //查询是否自提
  3671. String selfMention = "否";
  3672. try{
  3673. selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
  3674. onceCheck = (boolean) mapValue.get("isCheckGPS");
  3675. }catch (Exception e){
  3676. //取值失败不处理,取默认值
  3677. }
  3678. //查询车牌号是否是黑名单
  3679. if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
  3680. throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
  3681. }
  3682. //非自提,单次校验且全局校验,且车辆不允许无GPS
  3683. int isGPS=amsSaleOrderMapper.isGPS(capacityNo);
  3684. if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
  3685. Map<String,Object> data=null;
  3686. try{
  3687. data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();
  3688. }catch (Exception e){
  3689. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  3690. }
  3691. if(data==null || !"1001".equals(""+data.get("status"))){
  3692. throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
  3693. }
  3694. }
  3695. saleLogUtil.logOrder(DataChange.dataToBigDecimal(mapValue.get("orderId")),"修改车牌号,当前车号为:" + capacityNo + "上一个车牌号为:" + oldCapacityNumber,mapValue,SaleLogUtil.UPDATE);
  3696. if (lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) {
  3697. String capacityids="";
  3698. Integer capacityid1= (Integer) mapValue.get("capacityIds");
  3699. Integer capacityid2= (Integer) mapValue.get("capacityId");
  3700. if (capacityid1!=null && !("".equals(capacityid1))){
  3701. capacityids=capacityid1+","+capacityid2;
  3702. }
  3703. mapValue.put("capacityids",capacityids);
  3704. //这是修改车牌号
  3705. //取消是新车牌号,那么不删除排队信息,不删除实绩信息,将运单状态变为7
  3706. if (DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
  3707. //根据订单id查询车牌号改动记录
  3708. String oldCpacityIds = omstruckOrderMapper.getOrderCapacityHistory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3709. BigDecimal oldOldCapacityId = null;
  3710. if(oldCpacityIds != null) {
  3711. oldOldCapacityId = DataChange.dataToBigDecimal(oldCpacityIds.split(",")[0]);
  3712. }
  3713. //如果旧车号是取消,且取消的前一个车与该车相等,那么就将状态还原
  3714. if (oldOldCapacityId != null && oldCapacityId != null && oldCapacityId.compareTo(new BigDecimal(35128)) == 0 && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(oldOldCapacityId) == 0 ) {
  3715. //判断该订单下有没有子实绩
  3716. BigDecimal resultId = amsSaleOrderMaterialMapper.selectEnFactory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3717. if(resultId == null) {
  3718. OmstruckOrder omstruckOrder = new OmstruckOrder();
  3719. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3720. omstruckOrder.setOrderStatus(new BigDecimal(4));
  3721. omstruckOrder.setOrderLineSequence(new BigDecimal(0));
  3722. omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
  3723. if(tel != null && !"".equals(tel)){
  3724. omstruckOrder.setDriverTel(tel);
  3725. }
  3726. /*omstruckOrder.set*/
  3727. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  3728. }else{
  3729. OmstruckOrder omstruckOrder = new OmstruckOrder();
  3730. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3731. omstruckOrder.setOrderStatus(new BigDecimal(5));
  3732. if(tel != null && !"".equals(tel)){
  3733. omstruckOrder.setDriverTel(tel);
  3734. }
  3735. omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
  3736. /*omstruckOrder.set*/
  3737. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  3738. }
  3739. }else{
  3740. //将排队信息删掉
  3741. Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3742. if(isSpellingMap != null && isSpellingMap.get("listId") != null){
  3743. int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
  3744. if(isSpelling == 1 ){
  3745. result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
  3746. }else{
  3747. result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId"));
  3748. }
  3749. }
  3750. //若是接单之后还需要删除实绩且将状态变为4
  3751. //查询运输订单的状态和总实绩ID
  3752. Map<String, Object> orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue);
  3753. BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId"));
  3754. //删除排队实绩
  3755. if (resultTotalId !=null && !("".equals(resultTotalId))){
  3756. omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
  3757. }
  3758. OmstruckOrder omstruckOrder = new OmstruckOrder();
  3759. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3760. // 设置新的运输订单号
  3761. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", omstruckOrderMapper.selectMaxId().intValue()));
  3762. omstruckOrder.setOrderStatus(new BigDecimal(4));
  3763. omstruckOrder.setOrderLineSequence(new BigDecimal(0));
  3764. if(tel != null && !"".equals(tel)){
  3765. omstruckOrder.setDriverTel(tel);
  3766. }
  3767. /*omstruckOrder.set*/
  3768. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  3769. //插入日志
  3770. result += omstruckOrderMapper.deleteEnResult(resultTotalId);
  3771. result += omstruckOrderMapper.deleteWeightResult(resultTotalId);
  3772. result += omstruckOrderMapper.deleteLoadResult(resultTotalId);
  3773. result += omstruckOrderMapper.deleteLeaveResult(resultTotalId);
  3774. }
  3775. }else{
  3776. OmstruckOrder omstruckOrder = new OmstruckOrder();
  3777. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
  3778. if(tel != null && !"".equals(tel)){
  3779. omstruckOrder.setDriverTel(tel);
  3780. }
  3781. omstruckOrder.setOrderStatus(new BigDecimal(7));
  3782. omstruckOrder.setInsertUpdateRemark("取消车牌号,保留实绩将状态变为7");
  3783. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  3784. }
  3785. result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
  3786. }
  3787. return result;
  3788. }
  3789. }