TWarehouseBillsServiceImpl.java 190 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827
  1. package com.ruoyi.warehouseBusiness.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  6. import com.ruoyi.approvalFlow.domain.AuditItems;
  7. import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
  8. import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
  9. import com.ruoyi.basicData.domain.TCorps;
  10. import com.ruoyi.basicData.domain.TFees;
  11. import com.ruoyi.basicData.domain.TGoods;
  12. import com.ruoyi.basicData.domain.TWarehouseArea;
  13. import com.ruoyi.basicData.mapper.*;
  14. import com.ruoyi.basicData.service.impl.TWarehouseServiceImpl;
  15. import com.ruoyi.common.core.domain.AjaxResult;
  16. import com.ruoyi.common.core.domain.entity.SysDept;
  17. import com.ruoyi.common.core.domain.entity.SysDictData;
  18. import com.ruoyi.common.core.domain.entity.SysUser;
  19. import com.ruoyi.common.core.domain.entity.TWarehouse;
  20. import com.ruoyi.common.core.domain.model.LoginUser;
  21. import com.ruoyi.common.utils.DateUtils;
  22. import com.ruoyi.common.utils.SecurityUtils;
  23. import com.ruoyi.common.utils.StringUtils;
  24. import com.ruoyi.finance.domain.TWareHouseFees;
  25. import com.ruoyi.reportManagement.domain.TWareHouseItemsExcel;
  26. import com.ruoyi.reportManagement.domain.TWhgenleg;
  27. import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
  28. import com.ruoyi.shipping.domain.TCntr;
  29. import com.ruoyi.shipping.domain.TVoyage;
  30. import com.ruoyi.shipping.domain.TWarehousebillsCntr;
  31. import com.ruoyi.shipping.domain.TWarehousebillsCntritems;
  32. import com.ruoyi.shipping.mapper.TCntrMapper;
  33. import com.ruoyi.shipping.mapper.TVoyageMapper;
  34. import com.ruoyi.shipping.mapper.TWarehousebillsCntrMapper;
  35. import com.ruoyi.shipping.mapper.TWarehousebillsCntritemsMapper;
  36. import com.ruoyi.system.domain.SysConfig;
  37. import com.ruoyi.system.mapper.SysConfigMapper;
  38. import com.ruoyi.system.mapper.SysDeptMapper;
  39. import com.ruoyi.system.mapper.SysDictDataMapper;
  40. import com.ruoyi.system.mapper.SysUserMapper;
  41. import com.ruoyi.warehouseBusiness.domain.*;
  42. import com.ruoyi.warehouseBusiness.excel.*;
  43. import com.ruoyi.warehouseBusiness.mapper.*;
  44. import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.stereotype.Service;
  47. import org.springframework.transaction.annotation.Transactional;
  48. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  49. import java.math.BigDecimal;
  50. import java.text.ParseException;
  51. import java.text.SimpleDateFormat;
  52. import java.util.*;
  53. import java.util.stream.Collectors;
  54. import static java.util.stream.Collectors.toList;
  55. /**
  56. * 详情主表Service业务层处理
  57. *
  58. * @author ruoyi
  59. * @date 2020-12-11
  60. */
  61. @Service
  62. public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
  63. @Autowired
  64. private TFeesMapper tFeesMapper;
  65. @Autowired
  66. private TCntrMapper tCntrMapper;
  67. @Autowired
  68. private TGoodsMapper tGoodsMapper;
  69. @Autowired
  70. private TCorpsMapper tCorpsMapper;
  71. @Autowired
  72. private TVoyageMapper tVoyageMapper;
  73. @Autowired
  74. private SysUserMapper sysUserMapper;
  75. @Autowired
  76. private SysDeptMapper sysDeptMapper;
  77. @Autowired
  78. private BillnoDelMapper billnoDelMapper;
  79. @Autowired
  80. private TWhgenlegMapper tWhgenlegMapper;
  81. @Autowired
  82. private SysConfigMapper sysConfigMapper;
  83. @Autowired
  84. private TWarehouseMapper tWarehouseMapper;
  85. @Autowired
  86. private AuditItemsMapper auditItemsMapper;
  87. @Autowired
  88. private TEnclosureMapper tEnclosureMapper;
  89. @Autowired
  90. private SysDictDataMapper sysDictDataMapper;
  91. @Autowired
  92. private AuditItemsServiceImpl auditItemsService;
  93. @Autowired
  94. private TWarehouseAreaMapper tWarehouseAreaMapper;
  95. @Autowired
  96. private TWarehouseServiceImpl warehouseServiceImpl;
  97. @Autowired
  98. private TWarehouseBillsMapper tWarehouseBillsMapper;
  99. @Autowired
  100. private BillnoSerialServiceImpl billnoSerialServiceImpl;
  101. @Autowired
  102. private TWarehousebillsLogMapper tWarehousebillsLogMapper;
  103. @Autowired
  104. private TWarehousebillsCntrMapper tWarehousebillsCntrMapper;
  105. @Autowired
  106. private TWarehousebillsfeesMapper tWarehousebillsfeesMapper;
  107. @Autowired
  108. private TWarehousebillsitemsMapper tWarehousebillsitemsMapper;
  109. @Autowired
  110. private TWarehouseAgreementServiceImpl tWarehouseAgreementService;
  111. @Autowired
  112. private TWarehousebillsCntritemsMapper tWarehousebillsCntritemsMapper;
  113. /**
  114. * 查询详情主表
  115. *
  116. * @param fId 详情主表ID
  117. * @return 详情主表
  118. */
  119. @Override
  120. public Map<String, Object> selectTWarehousebillsById(Long fId) {
  121. Map<String, Object> map = new HashMap<>();
  122. // 查询仓库主表数据
  123. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  124. // 客户表
  125. List<Long> corpsId = new ArrayList<>();
  126. // 用户表
  127. List<SysUser> sysUserList = new ArrayList<>();
  128. // 仓库表
  129. List<TWarehouse> warehouseList = new ArrayList<>();
  130. // 商品
  131. List<Long> goodsId = new ArrayList<>();
  132. // 费用
  133. List<Long> feesId = new ArrayList<>();
  134. // 库区
  135. List<Long> warehouseAreaId = new ArrayList<>();
  136. if (!StringUtils.isNull(tWarehousebills)) {
  137. if (StringUtils.isNotNull(tWarehousebills.getfTocorpid())) {
  138. corpsId.add(tWarehousebills.getfTocorpid());
  139. }
  140. if (StringUtils.isNotNull(tWarehousebills.getfLabour())) {
  141. corpsId.add(tWarehousebills.getfLabour());
  142. }
  143. if (StringUtils.isNotNull(tWarehousebills.getfFleet())) {
  144. corpsId.add(tWarehousebills.getfFleet());
  145. }
  146. corpsId.add(tWarehousebills.getfCorpid());
  147. corpsId.add(tWarehousebills.getfCorpid());
  148. corpsId.add(tWarehousebills.getfCorpid());
  149. // 查询制单人
  150. SysUser logUser = sysUserMapper.selectUserByUserName(tWarehousebills.getCreateBy());
  151. if (StringUtils.isNotNull(logUser)) {
  152. SysDept sysDept = sysDeptMapper.selectDeptById(logUser.getDeptId());
  153. sysUserList.add(logUser);
  154. map.put("dept", sysDept);
  155. }
  156. SysUser sysUser = sysUserMapper.selectUserByUserName(tWarehousebills.getfStorekeeper());
  157. if (StringUtils.isNotNull(sysUser)) {
  158. sysUserList.add(sysUser);
  159. }
  160. // 查询仓库
  161. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehousebills.getfWarehouseid());
  162. if (StringUtils.isNotNull(tWarehouse)) {
  163. warehouseList.add(tWarehouse);
  164. }
  165. // 查询经营单位
  166. corpsId.add(tWarehousebills.getfSbu());
  167. map.put("warehousebills", tWarehousebills);
  168. }
  169. // 查询箱型 箱量表
  170. TWarehousebillsCntr cntr = new TWarehousebillsCntr();
  171. cntr.setfPid(fId);
  172. map.put("tCntrList", tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(cntr));
  173. // 查询仓库明细从表数据
  174. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  175. tWarehousebillsitems.setfPid(fId);
  176. List<Map<String, Object>> mapList = tWarehousebillsitemsMapper.selectGoodsTransferitemsList(tWarehousebillsitems);
  177. if (StringUtils.isNotEmpty(mapList)) {
  178. for (Map<String, Object> wb : mapList) {
  179. /*TWhgenleg tWhgenleg = new TWhgenleg();
  180. tWhgenleg.setfCorpid(tWarehousebills.getfCorpid());
  181. if (StringUtils.isNotNull(wb.get("fGoodsid"))) {
  182. tWhgenleg.setfGoodsid(((Integer) wb.get("fGoodsid")).longValue());
  183. }
  184. if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {
  185. tWhgenleg.setfWarehouseLocationid(((Integer) wb.get("fWarehouselocid")).longValue());
  186. }
  187. tWhgenleg.setfTrademodeid(tWarehousebills.getfTrademodeid());
  188. tWhgenleg.setfMblno(tWarehousebills.getfMblno());
  189. TWhgenleg whgenleg = tWhgenlegMapper.selectTWhgenleg(tWhgenleg);
  190. if (StringUtils.isNotNull(whgenleg)) {
  191. wb.put("fQtyblc", whgenleg.getfQtyblc());
  192. }*/
  193. if (StringUtils.isNotNull(wb.get("fGoodsid"))) {
  194. Integer fGoodsid = (Integer) wb.get("fGoodsid");
  195. goodsId.add(fGoodsid.longValue());
  196. }
  197. if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {
  198. Long fWarehouselocid = Long.valueOf(String.valueOf(wb.get("fWarehouselocid")));
  199. if (wb.get("fTransferWarehouselocid") != null) {
  200. Long fTransferWarehouselocid = Long.valueOf(String.valueOf(wb.get("fTransferWarehouselocid")));
  201. warehouseAreaId.add(fTransferWarehouselocid);
  202. }
  203. warehouseAreaId.add(fWarehouselocid);
  204. }
  205. }
  206. map.put("warehouseBillsItem", mapList);
  207. }
  208. // 查询仓库费用明细表数据
  209. TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees();
  210. tWarehousebillsfees.setfPid(fId);
  211. List<TWarehousebillsfees> warehousebillsfeesDr = new ArrayList<>();
  212. List<TWarehousebillsfees> warehousebillsfeesCr = new ArrayList<>();
  213. List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees);
  214. if (StringUtils.isNotEmpty(warehousebillsfees)) {
  215. for (TWarehousebillsfees fees : warehousebillsfees) {
  216. if ("C".equals(fees.getfDc())) {
  217. warehousebillsfeesCr.add(fees);
  218. } else {
  219. warehousebillsfeesDr.add(fees);
  220. }
  221. corpsId.add(fees.getfCorpid());
  222. feesId.add(fees.getfFeeid());
  223. }
  224. }
  225. // 查询附件表数据
  226. TEnclosure enclosure = new TEnclosure();
  227. enclosure.setfPid(fId);
  228. List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
  229. if (StringUtils.isNotEmpty(enclosures)) {
  230. map.put("enclosures", enclosures);
  231. }
  232. List<TCorps> corpsList = new ArrayList<>();
  233. List<Long> corpsIdList = StringUtils.integerDeduplication(corpsId);
  234. for (Long corpId : corpsIdList) {
  235. TCorps corps = tCorpsMapper.selectTCorpsById(corpId);
  236. if (StringUtils.isNotNull(corps)) {
  237. corpsList.add(corps);
  238. }
  239. }
  240. List<TWarehouseArea> warehouseAreaList = new ArrayList<>();
  241. /*List<Long> warehouseAreaIdList = StringUtils.integerDeduplication(warehouseAreaId);
  242. for (Long warehouseArea : warehouseAreaIdList) {
  243. TWarehouseArea tWarehouseArea = tWarehouseAreaMapper.selectTWarehouseAreaById(warehouseArea);
  244. if (StringUtils.isNotNull(tWarehouseArea)) {
  245. warehouseAreaList.add(tWarehouseArea);
  246. }
  247. }*/
  248. List<TGoods> goodsList = new ArrayList<>();
  249. List<Long> goodsIdList = StringUtils.integerDeduplication(goodsId);
  250. for (Long goods : goodsIdList) {
  251. TGoods tGoods = tGoodsMapper.selectTGoodsById(goods);
  252. if (StringUtils.isNotNull(tGoods)) {
  253. goodsList.add(tGoods);
  254. }
  255. }
  256. List<TFees> feesList = new ArrayList<>();
  257. List<Long> longList = StringUtils.integerDeduplication(feesId);
  258. for (Long fees : longList) {
  259. TFees tFees = tFeesMapper.selectTFeesById(fees);
  260. if (StringUtils.isNotNull(tFees)) {
  261. feesList.add(tFees);
  262. }
  263. }
  264. map.put("corps", corpsList);
  265. map.put("goodsList", goodsList);
  266. map.put("feesList", feesList);
  267. map.put("sysUser", sysUserList);
  268. map.put("warehouse", warehouseList);
  269. map.put("warehouseAreas", warehouseAreaList);
  270. map.put("warehousebillsfeesDr", warehousebillsfeesDr);
  271. map.put("warehousebillsfeesCr", warehousebillsfeesCr);
  272. map.put("dept", sysDeptMapper.selectDeptById(tWarehousebills.getfDeptid()));
  273. return map;
  274. }
  275. @Override
  276. public AjaxResult selectTWarehousebills(Long fId) {
  277. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  278. TWarehousebillsCntr tWarehousebillsCntr = new TWarehousebillsCntr();
  279. tWarehousebillsCntr.setfPid(fId);
  280. List<TWarehousebillsCntr> warehousebillsCntrs = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(tWarehousebillsCntr);
  281. TWarehousebillsCntritems tWarehousebillsCntritems = new TWarehousebillsCntritems();
  282. tWarehousebillsCntritems.setfPid(fId);
  283. List<TWarehousebillsCntritems> warehousebillsCntritems = tWarehousebillsCntritemsMapper.selectTWarehousebillsCntritemsList(tWarehousebillsCntritems);
  284. Map<String, Object> map = new HashMap<>();
  285. map.put("warehouseBills", warehouseBills);
  286. map.put("warehousebillsCntrs", warehousebillsCntrs);
  287. map.put("warehousebillsCntritems", warehousebillsCntritems);
  288. return AjaxResult.success("成功", map);
  289. }
  290. /**
  291. * 查询详情主表列表
  292. *
  293. * @param tWarehousebills 详情主表
  294. * @return 详情主表
  295. */
  296. @Override
  297. public List<Map<String, Object>> selectWarehouseBusinessList(TWarehouseBills tWarehousebills) {
  298. if (tWarehousebills.getfBilltype().equals("JSCCF") || tWarehousebills.getfBilltype().equals("HQZY")) {
  299. return tWarehouseBillsMapper.selectWarehouseBusinessList1(tWarehousebills);
  300. } else {
  301. return tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);
  302. }
  303. }
  304. /**
  305. * 查询导出所需主表列表
  306. *
  307. * @param tWarehousebills 详情主表
  308. * @return 详情主表
  309. */
  310. @Override
  311. public List<TWarehouseBills> selectTWarehousebillsList(TWarehouseBills tWarehousebills) {
  312. return tWarehouseBillsMapper.selectTWarehousebillsList(tWarehousebills);
  313. }
  314. /**
  315. * 根据条件查询总账是否存在
  316. *
  317. * @param warehouseBills 仓库主表
  318. * @param warehousebillsitems 仓库明细表
  319. * @return 库存总账
  320. */
  321. public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems) {
  322. TWhgenleg tWhgenleg = new TWhgenleg();
  323. // 客户
  324. tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
  325. // 提单号
  326. if ("HQZY".equals(warehouseBills.getfBilltype()) || "CKDB".equals(warehouseBills.getfBilltype()) || "HWTG".equals(warehouseBills.getfBilltype())) {
  327. tWhgenleg.setfMblno(warehousebillsitems.getfMblno());
  328. } else {
  329. tWhgenleg.setfMblno(warehouseBills.getfMblno());
  330. }
  331. // 业务类型
  332. tWhgenleg.setfBusinessType(warehousebillsitems.getfBusinessType());
  333. // 业务类型详情
  334. tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
  335. // 原始入库日期
  336. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  337. String time = sdf.format(warehousebillsitems.getfOriginalbilldate());
  338. try {
  339. tWhgenleg.setfOriginalbilldate(sdf.parse(time));
  340. } catch (ParseException e) {
  341. e.printStackTrace();
  342. }
  343. // 箱号
  344. if (StringUtils.isNotEmpty(warehousebillsitems.getfCntrno())) {
  345. tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
  346. }
  347. // 库区
  348. tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());
  349. // 货物品名
  350. tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());
  351. // 贸易方式
  352. tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());
  353. return tWhgenlegMapper.selectTWhgenleg(tWhgenleg);
  354. }
  355. /**
  356. * 新增库存总账
  357. *
  358. * @param warehouseBills 仓库主表
  359. * @param warehousebillsitems 仓库明细表
  360. * @return 结果
  361. */
  362. @Transactional
  363. public int instalTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, SysUser user) {
  364. TWhgenleg tWhgenleg = new TWhgenleg();
  365. if ("SJRK".equals(warehouseBills.getfBilltype())) {
  366. tWhgenleg.setfOriginalbilldate(warehousebillsitems.getfBsdate());
  367. }
  368. if ("HQZY".equals(warehouseBills.getfBilltype()) | "CKDB".equals(warehouseBills.getfBilltype()) | "HWTG".equals(warehouseBills.getfBilltype())) {
  369. tWhgenleg.setfOriginalbilldate(warehousebillsitems.getfOriginalbilldate());
  370. if ("CKDB".equals(warehouseBills.getfBilltype()) | "HWTG".equals(warehouseBills.getfBilltype())) {
  371. tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
  372. } else {
  373. // 客户
  374. tWhgenleg.setfCorpid(warehouseBills.getfTocorpid());
  375. }
  376. // 提单号
  377. tWhgenleg.setfMblno(warehousebillsitems.getfMblno());
  378. // 原始单号
  379. tWhgenleg.setfOriginalbillno(warehousebillsitems.getfMblno());
  380. } else {
  381. // 客户
  382. tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
  383. // 提单号
  384. tWhgenleg.setfMblno(warehouseBills.getfMblno());
  385. // 原始单号
  386. tWhgenleg.setfOriginalbillno(warehouseBills.getfMblno());
  387. }
  388. // 明细类型
  389. tWhgenleg.setfBusinessType(warehousebillsitems.getfBusinessType());
  390. // 仓库
  391. tWhgenleg.setfWarehouseid(warehouseBills.getfWarehouseid());
  392. // 库区
  393. tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());
  394. // 货物品名
  395. tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());
  396. // 计费方式
  397. tWhgenleg.setfBillingway(warehousebillsitems.getfBillingway());
  398. // 仓储计费日期
  399. tWhgenleg.setfChargedate(warehousebillsitems.getfChargedate());
  400. // 贸易方式
  401. tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());
  402. // 入库数
  403. tWhgenleg.setfQtyd(warehousebillsitems.getfQty());
  404. // 入库尺码
  405. tWhgenleg.setfVolumnd(warehousebillsitems.getfVolumn());
  406. // 唛头
  407. tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
  408. // 入库毛重
  409. tWhgenleg.setfGrossweightd(warehousebillsitems.getfGrossweight());
  410. // 入库净重
  411. tWhgenleg.setfNetweightd(warehousebillsitems.getfNetweight());
  412. // 入库箱号
  413. tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
  414. // 创建人
  415. tWhgenleg.setCreateBy(user.getUserName());
  416. // 创建人
  417. tWhgenleg.setCreateTime(new Date());
  418. // 状态
  419. tWhgenleg.setfStatus("T");
  420. // 结余件数
  421. tWhgenleg.setfQtyblc(warehousebillsitems.getfQty());
  422. return tWhgenlegMapper.insertTWhgenleg(tWhgenleg);
  423. }
  424. @Transactional
  425. public int updateTWhgenlegData(TWarehousebillsitems warehousebillsitems, long whgenlegId, String billtype) {
  426. Map<String, Object> map = new HashMap<>();
  427. map.put("whgenlegId", whgenlegId);
  428. map.put("billType", billtype);
  429. map.put("warehousebillsitems", warehousebillsitems);
  430. return tWhgenlegMapper.updateTWhgenlegData(map);
  431. }
  432. /**
  433. * 仓库暂存接口
  434. *
  435. * @param tWarehouseBills 仓库主表
  436. * @param tWarehousebillsfeesCr 仓库费付款用明细表
  437. * @param tWarehousebillsfeesDr 仓库费收
  438. * 款用明细表
  439. * @param tWarehousebillsitems 仓库货物明细表
  440. * @param loginUser 当前登陆人
  441. * @param billsType 判断标识
  442. * @return 结果
  443. */
  444. @Override
  445. @Transactional
  446. public AjaxResult insertTWarehousebills(String tWarehouseBills, String tWarehousebillsfeesCr, String tWarehousebillsfeesDr
  447. , String tWarehousebillsitems, String tEnclosure, LoginUser loginUser, String tCntr, String billsType) {
  448. Long fPid = null;
  449. Map<String, Object> map = new HashMap<>();
  450. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);
  451. if (StringUtils.isNull(warehouseBills.getfId())) {
  452. // 如果是新数据
  453. warehouseBills.setfBillstatus(2L);
  454. warehouseBills.setfItemsStatus(1L);
  455. warehouseBills.setCreateBy(loginUser.getUser().getUserName());
  456. warehouseBills.setfBilltype(billsType);
  457. warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  458. // 业务编码
  459. String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
  460. warehouseBills.setfBillno(billNo);
  461. if ("SJRK".equals(billsType)) {
  462. // 存货编码
  463. Date time = new Date();
  464. String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);
  465. warehouseBills.setfBscorpno(bscorpno);
  466. } else {
  467. warehouseBills.setfChargedate(warehouseBills.getfBsdate());
  468. }
  469. tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  470. fPid = warehouseBills.getfId();
  471. } else {
  472. fPid = warehouseBills.getfId();
  473. if (!"SJRK".equals(billsType)) {
  474. warehouseBills.setfChargedate(warehouseBills.getfBsdate());
  475. }
  476. warehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  477. warehouseBills.setUpdateTime(new Date());
  478. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(fPid);
  479. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  480. tWarehousebillsfeesMapper.deleteByFPid(fPid);
  481. tEnclosureMapper.deleteByFPid(fPid);
  482. // 删除 从表中 未打印账单的数据
  483. deleteBillsitems(fPid, tWarehousebillsitems);
  484. }
  485. // 库存明细添加
  486. if (StringUtils.isNotNull(tWarehousebillsitems) && !"[]".equals(tWarehousebillsitems)) {
  487. JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
  488. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  489. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  490. boolean warehouseStatus = "SJRK".equals(billsType) || "SJCK".equals(billsType) || "CKDB".equals(billsType) || "HWTG".equals(billsType);
  491. // 仓储计费日期
  492. wbItem.setfBilltype(billsType);
  493. if ("SJRK".equals(billsType)) {
  494. wbItem.setfChargedate(warehouseBills.getfChargedate());
  495. wbItem.setfBillingway(warehouseBills.getfBillingway());
  496. wbItem.setfMblno(warehouseBills.getfMblno());// 入库更新库存前执行update更新明细的提单号等于主表的提单号
  497. }
  498. if (null != wbItem.getfId()) {
  499. wbItem.setUpdateTime(new Date());
  500. wbItem.setUpdateBy(loginUser.getUser().getUserName());
  501. tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
  502. } else {
  503. // 添加主表 业务单号
  504. wbItem.setfBillno(warehouseBills.getfBillno());
  505. if (!warehouseStatus) {
  506. // wbItem.setfMblno(warehouseBills.getfMblno());
  507. wbItem.setfBillstatus(1L);
  508. } else {
  509. wbItem.setfBillstatus(10L);
  510. }
  511. wbItem.setfPid(fPid);
  512. wbItem.setCreateBy(loginUser.getUser().getUserName());
  513. wbItem.setCreateTime(new Date());
  514. tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
  515. if (!warehouseStatus) {
  516. // 添加状态log
  517. insertTWarehousebillsLog(wbItem, 10L, loginUser);
  518. }
  519. }
  520. }
  521. } else {
  522. warehouseBills.setfItemsStatus(1L);
  523. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  524. }
  525. // 附件添加
  526. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  527. JSONArray jsonDrArray = JSONArray.parseArray(tEnclosure);
  528. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  529. for (TEnclosure enclosure : tEnclosureList) {
  530. enclosure.setfPid(fPid);
  531. enclosure.setCreateBy(loginUser.getUser().getUserName());
  532. enclosure.setCreateTime(new Date());
  533. tEnclosureMapper.insertTEnclosure(enclosure);
  534. }
  535. }
  536. // 箱型数据
  537. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  538. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  539. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  540. int line = 0;
  541. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  542. line++;
  543. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  544. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  545. return AjaxResult.error("箱型数据第"+line+"行数据缺少必填数据");
  546. }
  547. cntr.setfPid(fPid);
  548. cntr.setfGoodsid(0L);
  549. cntr.setfPackageid("0");
  550. cntr.setfCntrweight(new BigDecimal(0));
  551. cntr.setCreateBy(loginUser.getUser().getUserName());
  552. cntr.setCreateTime(new Date());
  553. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  554. }
  555. }
  556. // 收款明细添加
  557. if (StringUtils.isNotNull(tWarehousebillsfeesDr) && !"[]".equals(tWarehousebillsfeesDr)) {
  558. JSONArray jsonDrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  559. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  560. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  561. // 检验 数量*单价=金额
  562. wbDr.setfPid(fPid);
  563. wbDr.setfDc("D");
  564. wbDr.setfBilltype(billsType);
  565. wbDr.setCreateTime(new Date());
  566. wbDr.setSrcBillNo(warehouseBills.getfBillno());
  567. wbDr.setfChargedate(warehouseBills.getfChargedate());
  568. wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
  569. wbDr.setCreateBy(loginUser.getUser().getUserName());
  570. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  571. wbDr.setfBsdate(warehouseBills.getfBsdate());
  572. }
  573. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  574. }
  575. }
  576. // 付款明细添加
  577. if (StringUtils.isNotNull(tWarehousebillsfeesCr) && !"[]".equals(tWarehousebillsfeesCr)) {
  578. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  579. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  580. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  581. wbCr.setfPid(fPid);
  582. wbCr.setfDc("C");
  583. wbCr.setfBilltype(billsType);
  584. wbCr.setCreateTime(new Date());
  585. wbCr.setSrcBillNo(warehouseBills.getfBillno());
  586. wbCr.setCreateBy(loginUser.getUser().getUserName());
  587. wbCr.setfChargedate(warehouseBills.getfChargedate());
  588. wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
  589. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  590. wbCr.setfBsdate(warehouseBills.getfBsdate());
  591. }
  592. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  593. }
  594. }
  595. TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
  596. warehousebillsitems.setfPid(fPid);
  597. map.put("warehouseBills", warehouseBills);
  598. map.put("warehousebillsitems", tWarehousebillsitemsMapper.selectGoodsTransferitemsList(warehousebillsitems));
  599. return AjaxResult.success("成功", map);
  600. }
  601. @Override
  602. public int insertTWarehousebills(TWarehouseBills tWarehousebills) {
  603. return tWarehouseBillsMapper.insertTWarehousebills(tWarehousebills);
  604. }
  605. /**
  606. * 凯和订单计划暂存
  607. *
  608. * @param tWarehousebills 主表信息
  609. * @param tWarehousebillsCntr 从表信息
  610. * @param billsType
  611. * @param loginUser
  612. * @return
  613. */
  614. @Override
  615. @Transactional
  616. public AjaxResult TSPlantMessage(String tWarehousebills, String tWarehousebillsCntr,
  617. String billsType, LoginUser loginUser) {
  618. Map<String, Object> map = new HashMap<>();
  619. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  620. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntr);
  621. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntr.class);
  622. if (warehouseBills.getfId() == null) {
  623. String billNo = billnoSerialServiceImpl.getBillNo("SE", warehouseBills.getfBsdate());
  624. warehouseBills.setfBillno(billNo);
  625. warehouseBills.setCreateTime(DateUtils.getNowDate());
  626. warehouseBills.setCreateBy(SecurityUtils.getUsername());
  627. warehouseBills.setfBilltype(billsType);
  628. warehouseBills.setfTypeid(1);
  629. warehouseBills.setfBillstatus(2L);
  630. warehouseBills.setfDeptid(loginUser.getUser().getDeptId());
  631. warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  632. int i = tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  633. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  634. for (TWarehousebillsCntr warehousebillsCntr : tWarehousebillsCntrs) {
  635. warehousebillsCntr.setfPid(warehouseBills.getfId());
  636. warehousebillsCntr.setCreateTime(DateUtils.getNowDate());
  637. warehousebillsCntr.setCreateBy(SecurityUtils.getUsername());
  638. int cntr = tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
  639. }
  640. }
  641. } else {
  642. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  643. if (!"2".equals(tWarehouseBills.getfBillstatus()) || !"3".equals(tWarehouseBills.getfBillstatus())) {
  644. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  645. return AjaxResult.error("当前数据不允许暂存");
  646. }
  647. warehouseBills.setUpdateTime(DateUtils.getNowDate());
  648. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  649. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  650. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(warehouseBills.getfId());
  651. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  652. for (TWarehousebillsCntr warehousebillsCntr : tWarehousebillsCntrs) {
  653. warehousebillsCntr.setfPid(warehouseBills.getfId());
  654. warehousebillsCntr.setCreateTime(DateUtils.getNowDate());
  655. warehousebillsCntr.setCreateBy(SecurityUtils.getUsername());
  656. int cntr = tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
  657. }
  658. }
  659. }
  660. map.put("warehouseBills", warehouseBills);
  661. map.put("tWarehousebillsCntrs", tWarehousebillsCntrs);
  662. return AjaxResult.success("msg", map);
  663. }
  664. /**
  665. * 凯和订单计划提交
  666. *
  667. * @param tWarehousebills 主表信息
  668. * @param tWarehousebillsCntr 从表信息
  669. * @param billsType
  670. * @param loginUser
  671. * @return
  672. */
  673. @Override
  674. @Transactional
  675. public AjaxResult submitPlantMessage(String tWarehousebills, String tWarehousebillsCntr,
  676. String billsType, LoginUser loginUser) {
  677. boolean isApprove = false;//是否开启审批流
  678. String key = "";//键
  679. long actId = 0L;//活动id
  680. Long fPid = null;
  681. Map<String, Object> map = new HashMap<>();
  682. if ("KHDD".equals(billsType)) {
  683. actId = 410L;
  684. key = "khwarehouse.warehousebills.ApprovalFlow";
  685. }
  686. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  687. if (StringUtils.isNull(sysConfig)) {
  688. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  689. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  690. }
  691. if ("0".equals(sysConfig.getConfigValue())) {
  692. isApprove = true;
  693. }
  694. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  695. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntr);
  696. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntr.class);
  697. //获取客户单位
  698. Long clientFid = tCorpsMapper.getClientFid(loginUser.getUser().getPhonenumber());
  699. if (warehouseBills.getfId() == null) {
  700. String billNo = billnoSerialServiceImpl.getBillNo("SE", DateUtils.getNowDate());
  701. warehouseBills.setfBillno(billNo);
  702. warehouseBills.setCreateTime(DateUtils.getNowDate());
  703. warehouseBills.setCreateBy(SecurityUtils.getUsername());
  704. warehouseBills.setfBilltype(billsType);
  705. warehouseBills.setfTypeid(1);
  706. warehouseBills.setfDeptid(loginUser.getUser().getDeptId());
  707. warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  708. warehouseBills.setfCorpid(clientFid);
  709. warehouseBills.setfContacts(loginUser.getUser().getUserName());
  710. warehouseBills.setfTel(loginUser.getUser().getPhonenumber());
  711. if (isApprove) {
  712. warehouseBills.setfBillstatus(4L);
  713. } else {
  714. warehouseBills.setfBillstatus(6L);
  715. }
  716. int i = tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  717. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  718. for (TWarehousebillsCntr warehousebillsCntr : tWarehousebillsCntrs) {
  719. warehousebillsCntr.setfPid(warehouseBills.getfId());
  720. warehousebillsCntr.setCreateTime(DateUtils.getNowDate());
  721. warehousebillsCntr.setCreateBy(SecurityUtils.getUsername());
  722. int cntr = tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
  723. }
  724. }
  725. fPid = warehouseBills.getfId();
  726. } else {
  727. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  728. if (tWarehouseBills.getfBillstatus() == 2L
  729. || tWarehouseBills.getfBillstatus() == 3L) {
  730. } else {
  731. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  732. return AjaxResult.error("当前数据不允许提交");
  733. }
  734. fPid = warehouseBills.getfId();
  735. warehouseBills.setUpdateTime(DateUtils.getNowDate());
  736. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  737. if (isApprove) {
  738. warehouseBills.setfBillstatus(4L);
  739. } else {
  740. warehouseBills.setfBillstatus(6L);
  741. }
  742. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  743. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(warehouseBills.getfId());
  744. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  745. for (TWarehousebillsCntr warehousebillsCntr : tWarehousebillsCntrs) {
  746. warehousebillsCntr.setfPid(warehouseBills.getfId());
  747. warehousebillsCntr.setCreateTime(DateUtils.getNowDate());
  748. warehousebillsCntr.setCreateBy(SecurityUtils.getUsername());
  749. int cntr = tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
  750. }
  751. }
  752. }
  753. if (isApprove) {
  754. AuditItems auditItems = new AuditItems();
  755. auditItems.setLevelId(0L);
  756. auditItems.setBillId(fPid);
  757. auditItems.setActId(actId);
  758. auditItems.setIffinalItem("F");
  759. auditItems.setBillNo(warehouseBills.getfBillno());
  760. // 存储委托方(货权方)
  761. auditItems.setRefno1(warehouseBills.getfCorpid() + "");
  762. // 存储业务类型(业务类型)
  763. auditItems.setRefno2(warehouseBills.getfBilltype());
  764. // 存储提单号(提单号)
  765. if (StringUtils.isNotEmpty(warehouseBills.getfMblno())){
  766. auditItems.setRefno3(warehouseBills.getfMblno());
  767. }else {
  768. auditItems.setRefno3(warehouseBills.getfBillno());
  769. }
  770. auditItems.setSendUserId(loginUser.getUser().getUserId());
  771. auditItems.setSendName(SecurityUtils.getUsername());
  772. auditItems.setSendTime(new Date());
  773. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  774. auditItems.setAuditItem(new Date());
  775. auditItems.setAuditOpTime(new Date());
  776. auditItems.setAuditMsg("提交");
  777. auditItems.setAuditStatus("O");
  778. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  779. // Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
  780. String code = approvalFlow.get("code").toString();
  781. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  782. if ("500".equals(code)) {
  783. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  784. }
  785. return approvalFlow;
  786. }
  787. map.put("warehouseBills", warehouseBills);
  788. map.put("tWarehousebillsCntrs", tWarehousebillsCntrs);
  789. return AjaxResult.success("msg", map);
  790. }
  791. /**
  792. * 配船暂存
  793. *
  794. * @param tWarehousebills 主表信息
  795. * @param tWarehousebillsCntritems 从表信息
  796. * @param billsType
  797. * @param loginUser
  798. * @return
  799. */
  800. @Override
  801. @Transactional
  802. public AjaxResult TSMakingMessage(String tWarehousebills, String tWarehousebillsCntritems, String billsType, LoginUser loginUser) {
  803. Map<String, Object> map = new HashMap<>();
  804. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  805. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntritems);
  806. List<TWarehousebillsCntritems> tWarehousebillsCntrs = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntritems.class);
  807. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  808. if (!"7".equals(tWarehouseBills.getfBillstatus()) || !"8".equals(tWarehouseBills.getfBillstatus())) {
  809. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  810. return AjaxResult.error("当前数据不允许暂存");
  811. }
  812. warehouseBills.setfBillstatus(7L);
  813. int i = tWarehouseBillsMapper.updateById(warehouseBills);
  814. int cntritemsfPid = tWarehousebillsCntritemsMapper.deleteTWarehousebillsCntritemsfPid(warehouseBills.getfId());
  815. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  816. for (TWarehousebillsCntritems warehousebillsCntritems : tWarehousebillsCntrs) {
  817. warehousebillsCntritems.setfPid(warehouseBills.getfId());
  818. warehousebillsCntritems.setCreateTime(DateUtils.getNowDate());
  819. warehousebillsCntritems.setCreateBy(SecurityUtils.getUsername());
  820. int cntr = tWarehousebillsCntritemsMapper.insertTWarehousebillsCntritems(warehousebillsCntritems);
  821. }
  822. }
  823. map.put("warehouseBills", warehouseBills);
  824. map.put("tWarehousebillsCntrs", tWarehousebillsCntrs);
  825. return AjaxResult.success("msg", map);
  826. }
  827. /**
  828. * 配船提交
  829. *
  830. * @param tWarehousebills 主表信息
  831. * @param tWarehousebillsCntritems 从表信息
  832. * @param billsType
  833. * @param loginUser
  834. * @return
  835. */
  836. @Override
  837. @Transactional
  838. public AjaxResult submitMakingMessage(String tWarehousebills, String tWarehousebillsCntritems, String billsType, LoginUser loginUser) {
  839. boolean isApprove = false;//是否开启审批流
  840. String key = "";//键
  841. long actId = 0L;//活动id
  842. Long fPid = null;
  843. Map<String, Object> map = new HashMap<>();
  844. if ("KHDD".equals(billsType)) {
  845. actId = 420L;
  846. key = "khwarehouse.makingCargoPlan.ApprovalFlow";
  847. }
  848. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  849. if (StringUtils.isNull(sysConfig)) {
  850. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  851. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  852. }
  853. if ("0".equals(sysConfig.getConfigValue())) {
  854. isApprove = true;
  855. }
  856. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  857. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntritems);
  858. List<TWarehousebillsCntritems> tWarehousebillsCntritemsList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntritems.class);
  859. fPid = warehouseBills.getfId();
  860. warehouseBills.setUpdateTime(DateUtils.getNowDate());
  861. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  862. if (isApprove) {
  863. warehouseBills.setfBillstatus(9L);
  864. } else {
  865. warehouseBills.setfBillstatus(11L);
  866. warehouseBills.setfReviewDate(new Date());
  867. }
  868. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  869. if (tWarehouseBills.getfBillstatus() == 6L
  870. || tWarehouseBills.getfBillstatus() == 7L
  871. || tWarehouseBills.getfBillstatus() == 8L) {
  872. } else {
  873. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  874. return AjaxResult.error("当前数据不允许提交");
  875. }
  876. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  877. tWarehousebillsCntritemsMapper.deleteTWarehousebillsCntritemsfPid(warehouseBills.getfId());
  878. if (CollectionUtils.isNotEmpty(tWarehousebillsCntritemsList)) {
  879. for (TWarehousebillsCntritems warehousebillsCntritems : tWarehousebillsCntritemsList) {
  880. warehousebillsCntritems.setfPid(warehouseBills.getfId());
  881. warehousebillsCntritems.setCreateTime(DateUtils.getNowDate());
  882. warehousebillsCntritems.setCreateBy(SecurityUtils.getUsername());
  883. int cntr = tWarehousebillsCntritemsMapper.insertTWarehousebillsCntritems(warehousebillsCntritems);
  884. }
  885. }
  886. TWarehousebillsCntr warehousebillsCntr = new TWarehousebillsCntr();
  887. warehousebillsCntr.setfPid(warehouseBills.getfId());
  888. List<TWarehousebillsCntr> tWarehousebillsCntrs = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(warehousebillsCntr);
  889. TVoyage tVoyage = tVoyageMapper.selectTVoyageById(warehouseBills.getfVoyid());
  890. if (isApprove) {
  891. AuditItems auditItems = new AuditItems();
  892. auditItems.setLevelId(0L);
  893. auditItems.setBillId(fPid);
  894. auditItems.setActId(actId);
  895. auditItems.setIffinalItem("F");
  896. auditItems.setBillNo(tWarehouseBills.getfBillno());
  897. // 存储委托方(货权方)
  898. auditItems.setRefno1(tWarehouseBills.getfCorpid() + "");
  899. // 存储业务类型(业务类型)
  900. auditItems.setRefno2(tWarehouseBills.getfBilltype());
  901. // 存储提单号(提单号)
  902. auditItems.setRefno3(tWarehouseBills.getfMblno());
  903. auditItems.setSendUserId(loginUser.getUser().getUserId());
  904. auditItems.setSendName(SecurityUtils.getUsername());
  905. auditItems.setSendTime(new Date());
  906. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  907. auditItems.setAuditItem(new Date());
  908. auditItems.setAuditOpTime(new Date());
  909. auditItems.setAuditMsg("提交");
  910. auditItems.setAuditStatus("O");
  911. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  912. // Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
  913. String code = approvalFlow.get("code").toString();
  914. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  915. if ("500".equals(code)) {
  916. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  917. }
  918. return approvalFlow;
  919. }
  920. map.put("warehouseBills", warehouseBills);
  921. map.put("tWarehousebillsCntrs", tWarehousebillsCntrs);
  922. map.put("tVoyageL", tVoyage);
  923. map.put("tWarehousebillsCntritems", tWarehousebillsCntritemsList);
  924. return AjaxResult.success("msg", map);
  925. }
  926. /**
  927. * 仓库模块提交接口
  928. *
  929. * @param tWarehouseBills 仓库主表
  930. * @param tWarehousebillsfeesCr 仓库费用付款明细表
  931. * @param tWarehousebillsfeesDr 仓库费用收款明细表
  932. * @param tWarehousebillsitems 仓库货物明细表
  933. * @param tEnclosure
  934. * @param loginUser 当前登陆人
  935. * @param billsType 操作状态
  936. * @return
  937. */
  938. @Override
  939. @Transactional
  940. public AjaxResult warehouseSubmission(String tWarehouseBills, String tWarehousebillsfeesCr, String tWarehousebillsfeesDr,
  941. String tWarehousebillsitems, String tEnclosure, LoginUser loginUser, String tCntr, String billsType) {
  942. Long fPid = null;
  943. boolean isApprove = false;
  944. String key = "";
  945. long actId = 0L;
  946. if ("SJRK".equals(billsType)) {
  947. actId = 110L;
  948. key = "warehouse.inStock.ApprovalFlow";
  949. } else if ("SJCK".equals(billsType)) {
  950. actId = 120L;
  951. key = "warehouse.outStock.ApprovalFlow";
  952. } else if ("CKDB".equals(billsType)) {
  953. actId = 140L;
  954. key = "warehouse.stockTransfer.ApprovalFlow";
  955. } else if ("HQZY".equals(billsType)) {
  956. actId = 130L;
  957. key = "warehouse.transfer.ApprovalFlow";
  958. } else if ("HWTG".equals(billsType)) {
  959. actId = 160L;
  960. key = "warehouse.cargoClearance.ApprovalFlow";
  961. }
  962. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  963. if (StringUtils.isNull(sysConfig)) {
  964. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  965. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  966. }
  967. if ("0".equals(sysConfig.getConfigValue())) {
  968. isApprove = true;
  969. }
  970. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);
  971. warehouseBills.setfItemsStatus(4L);
  972. if (StringUtils.isNull(warehouseBills.getfId())) {
  973. if (isApprove) {
  974. warehouseBills.setfBillstatus(4L);
  975. } else {
  976. warehouseBills.setfBillstatus(6L);
  977. warehouseBills.setfReviewDate(new Date());
  978. }
  979. warehouseBills.setfBilltype(billsType);
  980. if (!"SJRK".equals(billsType)) {
  981. warehouseBills.setfChargedate(warehouseBills.getfBsdate());
  982. }
  983. warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  984. warehouseBills.setCreateBy(loginUser.getUser().getUserName());
  985. String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
  986. warehouseBills.setfBillno(billNo);
  987. Date time = new Date();
  988. String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);
  989. warehouseBills.setfBscorpno(bscorpno);
  990. tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  991. fPid = warehouseBills.getfId();
  992. } else {
  993. fPid = warehouseBills.getfId();
  994. if (isApprove) {
  995. warehouseBills.setfBillstatus(4L);
  996. } else {
  997. warehouseBills.setfBillstatus(6L);
  998. warehouseBills.setfReviewDate(new Date());
  999. }
  1000. warehouseBills.setUpdateTime(new Date());
  1001. if (!"SJRK".equals(billsType)) {
  1002. warehouseBills.setfChargedate(warehouseBills.getfBsdate());
  1003. }
  1004. warehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  1005. tEnclosureMapper.deleteByFPid(fPid);
  1006. tWarehousebillsfeesMapper.deleteByFPid(fPid);
  1007. tWarehousebillsitemsMapper.deleteByFPid(fPid);
  1008. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  1009. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(fPid);
  1010. }
  1011. JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
  1012. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  1013. int line = 0;
  1014. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  1015. line++;
  1016. if ("SJRK".equals(billsType) || "SJCK".equals(billsType) || "CKDB".equals(billsType) || "HWTG".equals(billsType)) {
  1017. // 除了入库其他模块不需要更新主表的 仓储费计费日期到明细表,其他模块 应从库存总账把仓储费计费日期 赋给明细表
  1018. if ("SJRK".equals(billsType)) {
  1019. wbItem.setfMblno(warehouseBills.getfMblno());
  1020. wbItem.setfBillingway(warehouseBills.getfBillingway());
  1021. wbItem.setfChargedate(warehouseBills.getfChargedate());
  1022. wbItem.setfOriginalbilldate(warehouseBills.getfBsdate());
  1023. wbItem.setfMblno(warehouseBills.getfMblno());// 入库更新库存前执行update更新明细的提单号等于主表的提单号
  1024. }
  1025. if (!wbItem.getfBillstatus().equals(40L)) {
  1026. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1027. return AjaxResult.error("库存明细第" + line + "行状态异常,请确认");
  1028. }
  1029. } else {
  1030. if (!wbItem.getfBillstatus().equals(6L)) {
  1031. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1032. return AjaxResult.error("库存明细第" + line + "行状态异常,请确认");
  1033. }
  1034. }
  1035. if (StringUtils.isNull(wbItem.getfChargedate())) {
  1036. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1037. return AjaxResult.error("库存明细第" + line + "行未找到仓储费计费日期,请确认");
  1038. }
  1039. if (StringUtils.isNull(wbItem.getfBillingway())) {
  1040. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1041. return AjaxResult.error("库存明细第" + line + "行未找到计费方式,请确认");
  1042. }
  1043. if (StringUtils.isNull(wbItem.getfOriginalbilldate())) {
  1044. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1045. return AjaxResult.error("库存明细第" + line + "行未找到入库日期,请确认");
  1046. }
  1047. wbItem.setfPid(fPid);
  1048. wbItem.setfBilltype(billsType);
  1049. wbItem.setCreateTime(new Date());
  1050. wbItem.setfBillno(warehouseBills.getfBillno());
  1051. wbItem.setCreateBy(loginUser.getUser().getUserName());
  1052. tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
  1053. }
  1054. // 箱型数据
  1055. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  1056. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  1057. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  1058. int cntrLine = 0;
  1059. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  1060. cntrLine++;
  1061. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  1062. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1063. return AjaxResult.error("箱型数据第"+cntrLine+"行数据缺少必填数据");
  1064. }
  1065. cntr.setfPid(fPid);
  1066. cntr.setfGoodsid(0L);
  1067. cntr.setfPackageid("0");
  1068. cntr.setfCntrweight(new BigDecimal(0));
  1069. cntr.setCreateBy(loginUser.getUser().getUserName());
  1070. cntr.setCreateTime(new Date());
  1071. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  1072. }
  1073. }
  1074. if (StringUtils.isNotNull(tWarehousebillsfeesCr) && !"[]".equals(tWarehousebillsfeesCr)) {
  1075. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  1076. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1077. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  1078. wbCr.setfPid(fPid);
  1079. wbCr.setfDc("C");
  1080. wbCr.setfBilltype(billsType);
  1081. wbCr.setCreateTime(new Date());
  1082. wbCr.setSrcBillNo(warehouseBills.getfBillno());
  1083. wbCr.setCreateBy(loginUser.getUser().getUserName());
  1084. wbCr.setfChargedate(warehouseBills.getfChargedate());
  1085. wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
  1086. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1087. wbCr.setfBsdate(warehouseBills.getfBsdate());
  1088. }
  1089. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  1090. }
  1091. }
  1092. if (StringUtils.isNotNull(tWarehousebillsfeesDr) && !"[]".equals(tWarehousebillsfeesDr)) {
  1093. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  1094. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1095. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  1096. wbDr.setfPid(fPid);
  1097. wbDr.setfDc("D");
  1098. wbDr.setfBillstatus(4L);
  1099. wbDr.setfBilltype(billsType);
  1100. wbDr.setCreateTime(new Date());
  1101. wbDr.setSrcBillNo(warehouseBills.getfBillno());
  1102. wbDr.setCreateBy(loginUser.getUser().getUserName());
  1103. wbDr.setfChargedate(warehouseBills.getfChargedate());
  1104. wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
  1105. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1106. wbDr.setfBsdate(warehouseBills.getfBsdate());
  1107. }
  1108. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  1109. }
  1110. }
  1111. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  1112. JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
  1113. List<TEnclosure> enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
  1114. long lineNo = 0L;
  1115. for (TEnclosure enclosure : enclosuresList) {
  1116. lineNo++;
  1117. enclosure.setfPid(fPid);
  1118. enclosure.setfLineno(lineNo);
  1119. enclosure.setCreateTime(new Date());
  1120. enclosure.setCreateBy(loginUser.getUser().getUserName());
  1121. tEnclosureMapper.insertTEnclosure(enclosure);
  1122. }
  1123. }
  1124. // 这里加个判断取系统参数来确定是否需要启用审批流
  1125. if (isApprove) {
  1126. AuditItems auditItems = new AuditItems();
  1127. auditItems.setLevelId(0L);
  1128. auditItems.setBillId(fPid);
  1129. auditItems.setActId(actId);
  1130. auditItems.setIffinalItem("F");
  1131. auditItems.setBillNo(warehouseBills.getfBillno());
  1132. // 存储委托方(货权方)
  1133. auditItems.setRefno1(warehouseBills.getfCorpid() + "");
  1134. // 存储业务类型(业务类型)
  1135. auditItems.setRefno2(warehouseBills.getfBilltype());
  1136. // 存储提单号(提单号)
  1137. auditItems.setRefno3(warehouseBills.getfMblno());
  1138. auditItems.setSendUserId(loginUser.getUser().getUserId());
  1139. auditItems.setSendName(loginUser.getUsername());
  1140. auditItems.setSendTime(new Date());
  1141. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  1142. auditItems.setAuditItem(new Date());
  1143. auditItems.setAuditOpTime(new Date());
  1144. auditItems.setAuditMsg("提交");
  1145. auditItems.setAuditStatus("O");
  1146. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  1147. // Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
  1148. String code = approvalFlow.get("code").toString();
  1149. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  1150. if ("500".equals(code)) {
  1151. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1152. }
  1153. return approvalFlow;
  1154. } else {
  1155. AjaxResult ajaxResult = warehouseFollow(fPid, 6L);
  1156. String code = ajaxResult.get("code").toString();
  1157. if ("500".equals(code)) {
  1158. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1159. }
  1160. return ajaxResult;
  1161. }
  1162. }
  1163. @Override
  1164. public List<TWareHouseExcelItems> selectTWarehousebillsItemsList(Long fId) {
  1165. return tWarehouseBillsMapper.selectTWarehousebillsItemsList(fId);
  1166. }
  1167. @Override
  1168. public List<Map<String, Object>> selectInventoryList(TWarehouseBills tWarehouseBills) {
  1169. if (StringUtils.isNotNull(tWarehouseBills.getfWarehouseid())) {
  1170. // 获取仓库信息
  1171. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehouseBills.getfWarehouseid());
  1172. if (tWarehouse.getfLocation() == 1) {
  1173. tWarehouseBills.setfLocation(1L);
  1174. } else {
  1175. tWarehouseBills.setfLocation(0L);
  1176. }
  1177. }
  1178. if (tWarehouseBills.getfBilltype().equals("SJRK")) {
  1179. return tWarehouseBillsMapper.selectInventorySJRKList(tWarehouseBills);
  1180. } else {
  1181. return tWarehouseBillsMapper.selectInventorySJCKList(tWarehouseBills);
  1182. }
  1183. }
  1184. @Override
  1185. public List<TWareHouseItemsExcel> selectTWarehousebillsItemsList(TWarehouseBills tWarehouseBills) {
  1186. return tWarehouseBillsMapper.selectTWarehousebillsItemList(tWarehouseBills);
  1187. }
  1188. @Override
  1189. public AjaxResult serialNumber(String billsType) {
  1190. Map<String, Object> map = new HashMap<>();
  1191. Date time = new Date();
  1192. String serialNumber = null;
  1193. // 查询流水号
  1194. if ("SJRK".equals(billsType)) {
  1195. serialNumber = billnoSerialServiceImpl.getFictitiousNumber("RK", time);
  1196. } else if ("SJCK".equals(billsType)) {
  1197. serialNumber = billnoSerialServiceImpl.getFictitiousNumber("CK", time);
  1198. } else if ("CKDB".equals(billsType)) {
  1199. serialNumber = billnoSerialServiceImpl.getFictitiousNumber("DB", time);
  1200. }
  1201. map.put("fSerialNumber", serialNumber);
  1202. return AjaxResult.success("成功", map);
  1203. }
  1204. @Override
  1205. public int derecognition(Long fId) {
  1206. // 查询对账
  1207. int reconciliation = tWarehousebillsfeesMapper.selectReconciliation(fId);
  1208. // 查询收费
  1209. int charge = tWarehousebillsfeesMapper.selectCharge(fId);
  1210. // 查询付费
  1211. int pay = tWarehousebillsfeesMapper.selectPay(fId);
  1212. if (reconciliation > 0) {
  1213. return 1;
  1214. } else if (charge > 0) {
  1215. return 2;
  1216. } else if (pay > 0) {
  1217. return 3;
  1218. } else {
  1219. return 4;
  1220. }
  1221. }
  1222. @Override
  1223. public List<Map<String, Object>> selectWareHouseNumber() {
  1224. List<Map<String, Object>> map = new ArrayList<>();
  1225. Map<String, Object> maps = new HashMap<>();
  1226. // 入库待办数量
  1227. maps.put("inStock", tWarehousebillsitemsMapper.inStock());
  1228. // 出库待办数量
  1229. maps.put("outStock", tWarehousebillsitemsMapper.outStock());
  1230. List<String> timeInterval = new ArrayList<>();
  1231. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  1232. //获取当前月第一天:
  1233. Calendar c = Calendar.getInstance();
  1234. c.add(Calendar.MONTH, 0);
  1235. c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
  1236. timeInterval.add(format.format(c.getTime()));
  1237. //获取前月的最后一天
  1238. Calendar ca = Calendar.getInstance();
  1239. ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
  1240. timeInterval.add(format.format(ca.getTime()));
  1241. maps.put("monthInStock", tWarehousebillsitemsMapper.monthInStock(timeInterval));
  1242. // 当月出库待办数量
  1243. maps.put("monthOutStock", tWarehousebillsitemsMapper.monthOutStock(timeInterval));
  1244. map.add(maps);
  1245. return map;
  1246. }
  1247. @Override
  1248. @Transactional
  1249. public AjaxResult waitWarehousingItems(TWarehousebillsitems tWarehousebillsitems) {
  1250. // 先查询是否已经处理
  1251. TWarehousebillsitems tWarehousebillsitems1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(tWarehousebillsitems.getfId());
  1252. if (tWarehousebillsitems1.getfBillstatus().equals(30)) {
  1253. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1254. return AjaxResult.error("更新库存明细失败,该信息已操作,请重新加载");
  1255. }
  1256. tWarehousebillsitems.setfSerialNumber(tWarehousebillsitems1.getfSerialNumber());
  1257. int num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
  1258. // 主表变更状态
  1259. TWarehouseBills tWarehousebills = new TWarehouseBills();
  1260. tWarehousebills.setfId(tWarehousebillsitems1.getfPid());
  1261. tWarehousebills.setfItemsStatus(3L);
  1262. int num1 = tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  1263. if (num <= 0 && num1 <= 0) {
  1264. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1265. return AjaxResult.error("更新库存明细失败");
  1266. } else {
  1267. return AjaxResult.success();
  1268. }
  1269. }
  1270. /**
  1271. * app仓储新行保存业务
  1272. *
  1273. * @param item 明细数据
  1274. * @param attachs 附件数据
  1275. * @return 结果
  1276. */
  1277. @Override
  1278. public AjaxResult submitWarehouse(String item, String attachs) {
  1279. TWarehousebillsitems tWarehousebillsitems = JSONArray.parseObject(item, TWarehousebillsitems.class);
  1280. if (StringUtils.isNull(tWarehousebillsitems.getfPid())) {
  1281. return AjaxResult.error("未找到主表id信息,请确认");
  1282. }
  1283. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(tWarehousebillsitems.getfPid());
  1284. if (StringUtils.isNotNull(tWarehousebillsitems.getfGoodsid())) {
  1285. TGoods goods = tGoodsMapper.selectTGoodsById(tWarehousebillsitems.getfGoodsid());
  1286. if (!warehouseBills.getfProductName().contains(goods.getfName())) {
  1287. warehouseBills.setfProductName(warehouseBills.getfProductName() + "/" + goods.getfName());
  1288. }
  1289. }
  1290. if (StringUtils.isNotNull(tWarehousebillsitems.getfGoodsid())) {
  1291. TGoods goods = tGoodsMapper.selectTGoodsById(tWarehousebillsitems.getfGoodsid());
  1292. if (!warehouseBills.getfProductName().contains(goods.getfName())) {
  1293. warehouseBills.setfProductName(warehouseBills.getfProductName() + "/" + goods.getfName());
  1294. }
  1295. }
  1296. if (StringUtils.isNull(tWarehousebillsitems.getfId())) {
  1297. tWarehousebillsitems.setCreateTime(new Date());
  1298. tWarehousebillsitems.setCreateBy(SecurityUtils.getUsername());
  1299. tWarehousebillsitemsMapper.insertTWarehousebillsitems(tWarehousebillsitems);
  1300. } else {
  1301. TWarehousebillsitems warehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(tWarehousebillsitems.getfId());
  1302. if (StringUtils.isNull(warehousebillsitems)) {
  1303. return AjaxResult.error("未找到明细信息,请确认该明细信息是否存在");
  1304. }
  1305. if (warehousebillsitems.getfBillstatus() != 30L) {
  1306. return AjaxResult.error("该明细信息异常" + warehousebillsitems.getfBillstatus() + ",请确认");
  1307. }
  1308. tWarehousebillsitems.setUpdateTime(new Date());
  1309. tWarehousebillsitems.setUpdateBy(SecurityUtils.getUsername());
  1310. tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
  1311. }
  1312. tEnclosureMapper.deleteByFPid(tWarehousebillsitems.getfPid());
  1313. if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
  1314. // 附件添加
  1315. JSONArray jsonDrArray = JSONArray.parseArray(attachs);
  1316. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  1317. for (TEnclosure enclosure : tEnclosureList) {
  1318. enclosure.setfStatus("2");
  1319. enclosure.setCreateTime(new Date());
  1320. enclosure.setfPid(tWarehousebillsitems.getfPid());
  1321. enclosure.setCreateBy(SecurityUtils.getUsername());
  1322. tEnclosureMapper.insertTEnclosure(enclosure);
  1323. }
  1324. }
  1325. return AjaxResult.success();
  1326. }
  1327. /**
  1328. * 查看集港业务
  1329. *
  1330. * @param fId 集港id
  1331. * @return
  1332. */
  1333. @Override
  1334. public AjaxResult selectContainerPort(Long fId) {
  1335. Map<String, Object> map = new HashMap<>();
  1336. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  1337. if (StringUtils.isNull(warehouseBills)) {
  1338. return AjaxResult.error("未找到主表信息,请确认该信息是否存在");
  1339. }
  1340. map.put("warehouseBills", warehouseBills);
  1341. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  1342. warehousebillsfees.setfPid(fId);
  1343. warehousebillsfees.setfDc("D");
  1344. List<TWarehousebillsfees> feesDr = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  1345. List<TCorps> transportationList = new ArrayList<>();
  1346. if (StringUtils.isNotEmpty(feesDr)) {
  1347. for (TWarehousebillsfees dr : feesDr) {
  1348. TCorps corp = tCorpsMapper.selectTCorpsById(dr.getfCorpid());
  1349. if (StringUtils.isNotNull(corp)) {
  1350. transportationList.add(corp);
  1351. }
  1352. }
  1353. transportationList = transportationList.stream().distinct().collect(toList());
  1354. }
  1355. map.put("feesDrList", feesDr);
  1356. map.put("corpList", transportationList);
  1357. List<TCorps> corpsList = new ArrayList<>();
  1358. warehousebillsfees.setfDc("C");
  1359. List<TWarehousebillsfees> feesCr = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  1360. if (StringUtils.isNotEmpty(feesCr)) {
  1361. for (TWarehousebillsfees cr : feesCr) {
  1362. TCorps corp = tCorpsMapper.selectTCorpsById(cr.getfCorpid());
  1363. if (StringUtils.isNotNull(corp)) {
  1364. corpsList.add(corp);
  1365. }
  1366. }
  1367. corpsList = corpsList.stream().distinct().collect(toList());
  1368. }
  1369. map.put("feesCrList", feesCr);
  1370. map.put("transportationList", corpsList);
  1371. return AjaxResult.success(map);
  1372. }
  1373. /**
  1374. * 集港业务保存、提交接口
  1375. *
  1376. * @param tWarehouseBills 主表业务
  1377. * @param feesCr 收费
  1378. * @param feesDr 付费
  1379. * @return
  1380. */
  1381. @Override
  1382. @Transactional
  1383. public AjaxResult saveContainerPort(String tWarehouseBills, String feesCr, String feesDr, String type) {
  1384. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);
  1385. warehouseBills.setfBilltype("CKJG");
  1386. // 判断提单号是否存在
  1387. if (StringUtils.isNull(warehouseBills.getfId()) && tWarehouseBillsMapper.selectContainMblno(warehouseBills) > 0) {
  1388. return AjaxResult.error("该提单号已存在");
  1389. }
  1390. Long billStatus = 2L;
  1391. if ("add".equals(type)) {
  1392. billStatus = 6L;
  1393. warehouseBills.setfReviewDate(warehouseBills.getfBsdate());
  1394. warehouseBills.setfBillstatus(billStatus);
  1395. } else {
  1396. if (StringUtils.isNull(warehouseBills.getfBillstatus())) {
  1397. warehouseBills.setfBillstatus(billStatus);
  1398. }
  1399. }
  1400. if (StringUtils.isNull(warehouseBills.getfId())) {
  1401. warehouseBills.setCreateTime(new Date());
  1402. warehouseBills.setCreateBy(SecurityUtils.getUsername());
  1403. warehouseBills.setfDeptid(SecurityUtils.getLoginUser().getUser().getDeptId());
  1404. warehouseBills.setfBsdeptid(SecurityUtils.getLoginUser().getUser().getDeptId());
  1405. tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  1406. } else {
  1407. warehouseBills.setUpdateTime(new Date());
  1408. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  1409. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  1410. }
  1411. tWarehousebillsfeesMapper.deleteByFPid(warehouseBills.getfId());
  1412. if (StringUtils.isNotEmpty(feesCr) && !"[]".equals(feesCr)) {
  1413. JSONArray jsonDrArray = JSONArray.parseArray(feesCr);
  1414. List<TWarehousebillsfees> warehousebillsfeesCr = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  1415. int line = 1;
  1416. for (TWarehousebillsfees cr : warehousebillsfeesCr) {
  1417. if (StringUtils.isNull(cr.getfCorpid()) || StringUtils.isNull(cr.getfFeeunitid()) || StringUtils.isNull(cr.getfInventoryDays())) {
  1418. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1419. return AjaxResult.error("付款费用第" + line + "行,缺少必填信息");
  1420. }
  1421. cr.setfDc("C");
  1422. cr.setfBillstatus(billStatus);
  1423. cr.setCreateTime(new Date());
  1424. cr.setfPid(warehouseBills.getfId());
  1425. cr.setCreateBy(SecurityUtils.getUsername());
  1426. tWarehousebillsfeesMapper.insertTWarehousebillsfees(cr);
  1427. line++;
  1428. }
  1429. }
  1430. if (StringUtils.isNotEmpty(feesDr) && !"[]".equals(feesDr)) {
  1431. JSONArray jsonDrArray = JSONArray.parseArray(feesDr);
  1432. List<TWarehousebillsfees> warehousebillsfeesDr = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  1433. int line = 1;
  1434. for (TWarehousebillsfees dr : warehousebillsfeesDr) {
  1435. if (StringUtils.isNull(dr.getfCorpid()) || StringUtils.isNull(dr.getfFeeunitid()) || StringUtils.isNull(dr.getfInventoryDays())) {
  1436. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1437. return AjaxResult.error("收款费用第" + line + "行,缺少必填信息");
  1438. }
  1439. dr.setfDc("D");
  1440. dr.setfBillstatus(billStatus);
  1441. dr.setCreateTime(new Date());
  1442. dr.setfPid(warehouseBills.getfId());
  1443. dr.setCreateBy(SecurityUtils.getUsername());
  1444. tWarehousebillsfeesMapper.insertTWarehousebillsfees(dr);
  1445. line++;
  1446. }
  1447. }
  1448. return AjaxResult.success();
  1449. }
  1450. /**
  1451. * 查询集港业务基础资料
  1452. *
  1453. * @return
  1454. */
  1455. @Override
  1456. public AjaxResult selectBasicInformation() {
  1457. Map<String, Object> map = new HashMap<>();
  1458. TCorps corps = new TCorps();
  1459. String typeValue = "[\"1\"]";
  1460. corps.setfTypeid(typeValue);
  1461. corps.setfStatus("0");
  1462. // 应收 取客户
  1463. map.put("corpList", tCorpsMapper.selectTCorpsListLimit200(corps));
  1464. // 应付 取陆运公司
  1465. TCorps transportation = new TCorps();
  1466. typeValue = "[\"2\"]";
  1467. transportation.setfTypeid(typeValue);
  1468. transportation.setfStatus("0");
  1469. map.put("transportationList", tCorpsMapper.selectTCorpsListLimit200(transportation));
  1470. // 查询箱信息
  1471. TCntr tCntr = new TCntr();
  1472. tCntr.setfStatus("T");
  1473. map.put("cntrList", tCntrMapper.selectRcntrName(tCntr));
  1474. map.put("pierList", sysDictDataMapper.selectDictDataByType("pier"));
  1475. TFees tFees = tFeesMapper.selectTFeesByFName("集港费");
  1476. if (StringUtils.isNull(tFees)) {
  1477. map.put("fees", tFees);
  1478. return AjaxResult.success("未找到集港费用信息,请添加", map);
  1479. }
  1480. List<TFees> feesList = new ArrayList<>();
  1481. feesList.add(tFees);
  1482. map.put("fees", feesList);
  1483. return AjaxResult.success(map);
  1484. }
  1485. /**
  1486. * 集港业务撤销
  1487. *
  1488. * @param fId 主表id
  1489. * @param type
  1490. * @return
  1491. */
  1492. @Override
  1493. @Transactional
  1494. public AjaxResult revokeContainerPort(Long fId, String type) {
  1495. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  1496. if (StringUtils.isNull(warehouseBills)) {
  1497. return AjaxResult.error("未找到主表信息,请确认是否存在");
  1498. }
  1499. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  1500. warehousebillsfees.setfPid(fId);
  1501. List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  1502. if (StringUtils.isEmpty(warehousebillsfeesList)) {
  1503. return AjaxResult.error("未找到费用信息,请确认是否存在");
  1504. }
  1505. for (TWarehousebillsfees fee : warehousebillsfeesList) {
  1506. if (StringUtils.isNotEmpty(fee.getfStatementNo()) || StringUtils.isNotEmpty(fee.getfStlamountNo())) {
  1507. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1508. return AjaxResult.error("费用信息存在已对账或已收费付费操作,无法撤销");
  1509. }
  1510. if ("remove".equals(type)) {
  1511. tWarehousebillsfeesMapper.deleteTWarehousebillsfeesById(fee.getfId());
  1512. } else {
  1513. fee.setfStatus("2");
  1514. fee.setUpdateTime(new Date());
  1515. fee.setUpdateBy(SecurityUtils.getUsername());
  1516. tWarehousebillsfeesMapper.updateTWarehousebillsfees(fee);
  1517. }
  1518. }
  1519. if ("remove".equals(type)) {
  1520. if (warehouseBills.getfBillstatus() != 2L) {
  1521. return AjaxResult.error("主表状态有误,请确认状态是否为暂存状态");
  1522. }
  1523. tWarehouseBillsMapper.deleteTWarehousebillsById(fId);
  1524. return AjaxResult.success();
  1525. } else {
  1526. if (warehouseBills.getfBillstatus() != 6L) {
  1527. return AjaxResult.error("主表状态有误,请确认状态是否已提交");
  1528. }
  1529. }
  1530. warehouseBills.setfBillstatus(2L);
  1531. warehouseBills.setUpdateTime(new Date());
  1532. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  1533. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  1534. return AjaxResult.success();
  1535. }
  1536. /**
  1537. * app仓储新行提交业务
  1538. *
  1539. * @param item 仓库明细数据
  1540. * @param attachs 附件
  1541. * @return 结果
  1542. */
  1543. @Override
  1544. @Transactional
  1545. public AjaxResult saveWarehouse(String item, String attachs) {
  1546. TWarehousebillsitems warehousebillsitems = JSONArray.parseObject(item, TWarehousebillsitems.class);
  1547. if (StringUtils.isNull(warehousebillsitems.getfPid())) {
  1548. return AjaxResult.error("未找到主表id信息,请确认");
  1549. }
  1550. warehousebillsitems.setfBillstatus(10L);
  1551. warehousebillsitems.setCreateTime(new Date());
  1552. warehousebillsitems.setCreateBy(SecurityUtils.getUsername());
  1553. tWarehousebillsitemsMapper.insertTWarehousebillsitems(warehousebillsitems);
  1554. tEnclosureMapper.deleteByFPid(warehousebillsitems.getfPid());
  1555. if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
  1556. // 附件添加
  1557. if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
  1558. JSONArray jsonDrArray = JSONArray.parseArray(attachs);
  1559. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  1560. for (TEnclosure enclosure : tEnclosureList) {
  1561. enclosure.setfStatus("2");
  1562. enclosure.setCreateTime(new Date());
  1563. enclosure.setfPid(warehousebillsitems.getfPid());
  1564. enclosure.setCreateBy(SecurityUtils.getUsername());
  1565. tEnclosureMapper.insertTEnclosure(enclosure);
  1566. }
  1567. }
  1568. }
  1569. return AjaxResult.success();
  1570. }
  1571. /**
  1572. * 查询提单号是否在一天当中出现多次
  1573. *
  1574. * @param tWarehouseBills 仓库数据
  1575. * @return 结果
  1576. */
  1577. @Override
  1578. public AjaxResult selectContainMblno(String tWarehouseBills, String billsType) {
  1579. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);
  1580. warehouseBills.setfBilltype(billsType);
  1581. String mblno = warehouseBills.getfMblno();
  1582. Date bsdate = warehouseBills.getfBsdate();
  1583. int count = tWarehouseBillsMapper.selectContainMblno(warehouseBills);
  1584. if (count > 1) {
  1585. return AjaxResult.success("提单号:" + mblno + ",日期:" + DateUtils.dateTime(bsdate) + ",出现" + count + "次", false);
  1586. }
  1587. return AjaxResult.success(true);
  1588. }
  1589. @Override
  1590. public List<TWarehouseBills> webVersionOrder(TWarehouseBills tWarehouseBills) {
  1591. List<TWarehouseBills> warehouseBills = tWarehouseBillsMapper.webVersionOrderList(tWarehouseBills);
  1592. if (CollectionUtils.isNotEmpty(warehouseBills)) {
  1593. for (TWarehouseBills warehouseBill : warehouseBills) {
  1594. TWarehousebillsCntr warehousebillsCntr = new TWarehousebillsCntr();
  1595. warehousebillsCntr.setfPid(warehouseBill.getfId());
  1596. List<TWarehousebillsCntr> tWarehousebillsCntrs = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(warehousebillsCntr);
  1597. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  1598. warehouseBill.settWarehousebillsCntrList(tWarehousebillsCntrs);
  1599. }
  1600. TWarehousebillsCntritems warehousebillsCntritems = new TWarehousebillsCntritems();
  1601. warehousebillsCntritems.setfPid(warehouseBill.getfId());
  1602. List<TWarehousebillsCntritems> tWarehousebillsCntritems = tWarehousebillsCntritemsMapper.selectTWarehousebillsCntritemsList(warehousebillsCntritems);
  1603. if (CollectionUtils.isNotEmpty(tWarehousebillsCntritems)) {
  1604. warehouseBill.settWarehousebillsCntritemsList(tWarehousebillsCntritems);
  1605. }
  1606. TVoyage tVoyage = tVoyageMapper.selectTVoyageById(warehouseBill.getfVoyid());
  1607. warehouseBill.settVoyageL(tVoyage);
  1608. }
  1609. }
  1610. return warehouseBills;
  1611. }
  1612. @Override
  1613. public List<TWarehouseBills> webVersionOrderMessage(TWarehouseBills tWarehouseBills) {
  1614. return tWarehouseBillsMapper.webVersionOrderList(tWarehouseBills);
  1615. }
  1616. @Override
  1617. public List<Map<String, Object>> ruoYiVersionOrderList(LoginUser loginUser, TWarehouseBills tWarehouseBills) {
  1618. //tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
  1619. return tWarehouseBillsMapper.ruoYiVersionOrderList(tWarehouseBills);
  1620. }
  1621. @Override
  1622. public List<Map<String, Object>> webVersionOrderMessage(LoginUser loginUser, TWarehouseBills tWarehouseBills) {
  1623. TWarehouseBills warehouseBills = new TWarehouseBills();
  1624. if (tWarehouseBills != null) {
  1625. BeanUtil.copyProperties(tWarehouseBills, warehouseBills);
  1626. warehouseBills.setCreateBy(loginUser.getUser().getUserName());
  1627. } else {
  1628. warehouseBills.setCreateBy(loginUser.getUser().getUserName());
  1629. }
  1630. return tWarehouseBillsMapper.ruoYiVersionOrderList(warehouseBills);
  1631. }
  1632. @Override
  1633. public List<TWarehouseBills> webVersionOrderDetails(TWarehouseBills tWarehouseBills) {
  1634. List<TWarehouseBills> warehouseBills = tWarehouseBillsMapper.webVersionOrderById(tWarehouseBills);
  1635. if (CollectionUtils.isNotEmpty(warehouseBills)) {
  1636. for (TWarehouseBills warehouseBill : warehouseBills) {
  1637. //货物信息
  1638. TWarehousebillsCntr warehousebillsCntr = new TWarehousebillsCntr();
  1639. warehousebillsCntr.setfPid(warehouseBill.getfId());
  1640. List<TWarehousebillsCntr> tWarehousebillsCntrs = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(warehousebillsCntr);
  1641. if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) {
  1642. warehouseBill.settWarehousebillsCntrList(tWarehousebillsCntrs);
  1643. }
  1644. //配箱信息
  1645. TWarehousebillsCntritems warehousebillsCntritems = new TWarehousebillsCntritems();
  1646. warehousebillsCntritems.setfPid(warehouseBill.getfId());
  1647. List<TWarehousebillsCntritems> tWarehousebillsCntritems = tWarehousebillsCntritemsMapper.selectTWarehousebillsCntritemsList(warehousebillsCntritems);
  1648. if (CollectionUtils.isNotEmpty(tWarehousebillsCntritems)) {
  1649. warehouseBill.settWarehousebillsCntritemsList(tWarehousebillsCntritems);
  1650. }
  1651. //航次信息
  1652. TVoyage tVoyage = tVoyageMapper.selectTVoyageById(warehouseBill.getfVoyid());
  1653. warehouseBill.settVoyageL(tVoyage);
  1654. //应收信息
  1655. List<TWarehousebillsfees> tWarehousebillsfeesDr = tWarehousebillsfeesMapper.selectFeesByPId(warehouseBill.getfId(), "D");
  1656. warehouseBill.settWarehousebillsfeesDr(tWarehousebillsfeesDr);
  1657. //应付信息
  1658. List<TWarehousebillsfees> warehousebillsfeesCr = tWarehousebillsfeesMapper.selectFeesByPId(warehouseBill.getfId(), "C");
  1659. warehouseBill.setWarehousebillsfeesCr(warehousebillsfeesCr);
  1660. if (CollectionUtils.isNotEmpty(tWarehousebillsfeesDr)){
  1661. warehouseBill.setMoneyStatus(tWarehousebillsfeesDr.get(0).getfBillstatus());
  1662. }else if (CollectionUtils.isNotEmpty(warehousebillsfeesCr)){
  1663. warehouseBill.setMoneyStatus(warehousebillsfeesCr.get(0).getfBillstatus());
  1664. }
  1665. }
  1666. }
  1667. return warehouseBills;
  1668. }
  1669. @Override
  1670. @Transactional
  1671. public AjaxResult ruoYiUpdateOrderMessage(String tWarehousebills, String tWarehousebillsCntritems, String tWarehousebillsfeesCr,
  1672. String tWarehousebillsfeesDr, LoginUser loginUser, String billsType) {
  1673. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  1674. Map<String, Object> map = new HashMap<>();
  1675. if (StringUtils.isEmpty(warehouseBills.getfMblno())) {
  1676. return AjaxResult.error("提单号不能为空");
  1677. }
  1678. TWarehouseBills mblno = tWarehouseBillsMapper.selectTWarehousebillsfMblno(warehouseBills);
  1679. if (StringUtils.isNotNull(mblno) && !mblno.getfId().equals(warehouseBills.getfId())) {
  1680. return AjaxResult.error("提单号已存在,请重新提交");
  1681. }
  1682. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  1683. if (tWarehouseBills.getfBillstatus() != 11L) {
  1684. return AjaxResult.error("订单未审核完成,暂不支持维护提单号");
  1685. }
  1686. TWarehouseBills bills = new TWarehouseBills();
  1687. bills.setfId(warehouseBills.getfId());
  1688. bills.setfMblno(warehouseBills.getfMblno());
  1689. Integer integer = tWarehouseBillsMapper.updateTWarehousebills(bills);
  1690. if (integer <=0){
  1691. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1692. return AjaxResult.error("维护提单号失败,请联系管理员");
  1693. }
  1694. List<TWarehouseBills> warehouseBillsList = tWarehouseBillsMapper.webVersionOrderById(bills);
  1695. map.put("tWarehouseBills", warehouseBillsList.get(0));
  1696. if (StringUtils.isNotEmpty(tWarehousebillsCntritems)) {
  1697. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntritems);
  1698. List<TWarehousebillsCntritems> tWarehousebillsCntritemsList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntritems.class);
  1699. if (CollectionUtils.isNotEmpty(tWarehousebillsCntritemsList)) {
  1700. int cntritemsfPid = tWarehousebillsCntritemsMapper.deleteTWarehousebillsCntritemsfPid(warehouseBills.getfId());
  1701. for (TWarehousebillsCntritems warehousebillsCntritems : tWarehousebillsCntritemsList) {
  1702. warehousebillsCntritems.setfPid(warehouseBills.getfId());
  1703. warehousebillsCntritems.setCreateTime(DateUtils.getNowDate());
  1704. warehousebillsCntritems.setCreateBy(SecurityUtils.getUsername());
  1705. int cntr = tWarehousebillsCntritemsMapper.insertTWarehousebillsCntritems(warehousebillsCntritems);
  1706. }
  1707. }
  1708. map.put("tWarehousebillsCntritemsList", tWarehousebillsCntritemsList);
  1709. }
  1710. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  1711. warehousebillsfees.setfPid(warehouseBills.getfId());
  1712. List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  1713. if (CollectionUtils.isNotEmpty(tWarehousebillsfees)){
  1714. Long aLong = tWarehousebillsfees.get(0).getfBillstatus();
  1715. if (aLong == 4L || aLong == 5L){
  1716. return AjaxResult.error("订单费用审核中,不支持修改");
  1717. }
  1718. if (aLong == 6L){
  1719. return AjaxResult.error("订单费用审核通过,不支持修改");
  1720. }
  1721. }
  1722. int c = tWarehousebillsfeesMapper.deleteFessByFPid(warehouseBills.getfId(), "C");
  1723. if (StringUtils.isNotNull(tWarehousebillsfeesCr) && !"[]".equals(tWarehousebillsfeesCr)) {
  1724. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  1725. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1726. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  1727. wbCr.setfPid(warehouseBills.getfId());
  1728. wbCr.setfDc("C");
  1729. wbCr.setfBilltype(billsType);
  1730. wbCr.setCreateTime(new Date());
  1731. wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
  1732. wbCr.setCreateBy(loginUser.getUser().getUserName());
  1733. //wbCr.setfChargedate(warehouseBills.getfChargedate());
  1734. //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
  1735. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1736. wbCr.setfBsdate(warehouseBills.getfBsdate());
  1737. }
  1738. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  1739. }
  1740. map.put("warehousebillsfeesCrList", warehousebillsfeesCrList);
  1741. }
  1742. int d = tWarehousebillsfeesMapper.deleteFessByFPid(warehouseBills.getfId(), "D");
  1743. if (StringUtils.isNotNull(tWarehousebillsfeesDr) && !"[]".equals(tWarehousebillsfeesDr)) {
  1744. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  1745. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1746. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  1747. wbDr.setfPid(warehouseBills.getfId());
  1748. wbDr.setfDc("D");
  1749. wbDr.setfBilltype(billsType);
  1750. wbDr.setCreateTime(new Date());
  1751. wbDr.setSrcBillNo(tWarehouseBills.getfBillno());
  1752. wbDr.setCreateBy(loginUser.getUser().getUserName());
  1753. //wbDr.setfChargedate(warehouseBills.getfChargedate());
  1754. //wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
  1755. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1756. wbDr.setfBsdate(warehouseBills.getfBsdate());
  1757. }
  1758. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  1759. }
  1760. map.put("warehousebillsfeesDrList",warehousebillsfeesDrList);
  1761. }
  1762. return AjaxResult.success("success",map);
  1763. }
  1764. @Override
  1765. @Transactional
  1766. public AjaxResult ruoYiSubmitMessage(String tWarehousebills,String tWarehousebillsCntritems,String tWarehousebillsfeesCr,
  1767. String tWarehousebillsfeesDr,LoginUser loginUser,String billsType) {
  1768. boolean isApprove = false;
  1769. String key = "";
  1770. long actId = 0L;
  1771. Long billStatus = null;
  1772. if ("KHDD".equals(billsType)) {
  1773. actId = 460L;
  1774. key = "warehouse.khSubmitMoney.ApprovalFlow";
  1775. }
  1776. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  1777. if (StringUtils.isNull(sysConfig)) {
  1778. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1779. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  1780. }
  1781. if ("0".equals(sysConfig.getConfigValue())) {
  1782. isApprove = true;
  1783. }
  1784. if (isApprove){
  1785. billStatus = 4L;
  1786. }else {
  1787. billStatus = 6L;
  1788. }
  1789. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
  1790. Map<String ,Object> map = new HashMap<>();
  1791. if (StringUtils.isEmpty(warehouseBills.getfMblno())){
  1792. return AjaxResult.error("提单号不能为空");
  1793. }
  1794. TWarehouseBills mblno = tWarehouseBillsMapper.selectTWarehousebillsfMblno(warehouseBills);
  1795. if (StringUtils.isNotNull(mblno) && !mblno.getfId().equals(warehouseBills.getfId())) {
  1796. return AjaxResult.error("提单号已存在,请重新提交");
  1797. }
  1798. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
  1799. if (tWarehouseBills.getfBillstatus() != 11L){
  1800. return AjaxResult.error("订单未审核完成,暂不支持维护提单号");
  1801. }
  1802. TWarehouseBills bills = new TWarehouseBills();
  1803. bills.setfId(warehouseBills.getfId());
  1804. bills.setfMblno(warehouseBills.getfMblno());
  1805. Integer integer = tWarehouseBillsMapper.updateTWarehousebills(bills);
  1806. map.put("tWarehouseBills",tWarehouseBills);
  1807. if (StringUtils.isNotEmpty(tWarehousebillsCntritems)){
  1808. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsCntritems);
  1809. List<TWarehousebillsCntritems> tWarehousebillsCntritemsList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsCntritems.class);
  1810. if (CollectionUtils.isNotEmpty(tWarehousebillsCntritemsList)){
  1811. int cntritemsfPid = tWarehousebillsCntritemsMapper.deleteTWarehousebillsCntritemsfPid(warehouseBills.getfId());
  1812. for (TWarehousebillsCntritems warehousebillsCntritems : tWarehousebillsCntritemsList) {
  1813. warehousebillsCntritems.setfPid(warehouseBills.getfId());
  1814. warehousebillsCntritems.setCreateTime(DateUtils.getNowDate());
  1815. warehousebillsCntritems.setCreateBy(SecurityUtils.getUsername());
  1816. int cntr = tWarehousebillsCntritemsMapper.insertTWarehousebillsCntritems(warehousebillsCntritems);
  1817. }
  1818. }
  1819. map.put("tWarehousebillsCntritemsList",tWarehousebillsCntritemsList);
  1820. }
  1821. int c = tWarehousebillsfeesMapper.deleteFessByFPid(warehouseBills.getfId(), "C");
  1822. if (StringUtils.isNotNull(tWarehousebillsfeesCr) && !"[]".equals(tWarehousebillsfeesCr)) {
  1823. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  1824. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1825. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  1826. wbCr.setfPid(warehouseBills.getfId());
  1827. wbCr.setfDc("C");
  1828. wbCr.setfBilltype(billsType);
  1829. wbCr.setfBillstatus(billStatus);
  1830. wbCr.setCreateTime(new Date());
  1831. wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
  1832. wbCr.setCreateBy(loginUser.getUser().getUserName());
  1833. //wbCr.setfChargedate(warehouseBills.getfChargedate());
  1834. //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
  1835. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1836. wbCr.setfBsdate(warehouseBills.getfBsdate());
  1837. }
  1838. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  1839. }
  1840. map.put("warehousebillsfeesCrList",warehousebillsfeesCrList);
  1841. }
  1842. int d = tWarehousebillsfeesMapper.deleteFessByFPid(warehouseBills.getfId(), "D");
  1843. if (StringUtils.isNotNull(tWarehousebillsfeesDr) && !"[]".equals(tWarehousebillsfeesDr)) {
  1844. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  1845. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  1846. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  1847. wbDr.setfPid(warehouseBills.getfId());
  1848. wbDr.setfDc("D");
  1849. wbDr.setfBillstatus(billStatus);
  1850. wbDr.setfBilltype(billsType);
  1851. wbDr.setCreateTime(new Date());
  1852. wbDr.setSrcBillNo(tWarehouseBills.getfBillno());
  1853. wbDr.setCreateBy(loginUser.getUser().getUserName());
  1854. //wbDr.setfChargedate(warehouseBills.getfChargedate());
  1855. //wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
  1856. if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
  1857. wbDr.setfBsdate(warehouseBills.getfBsdate());
  1858. }
  1859. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  1860. }
  1861. map.put("warehousebillsfeesDrList", warehousebillsfeesDrList);
  1862. }
  1863. if (isApprove) {
  1864. AuditItems auditItems = new AuditItems();
  1865. auditItems.setLevelId(0L);
  1866. auditItems.setBillId(warehouseBills.getfId());
  1867. auditItems.setActId(actId);
  1868. auditItems.setIffinalItem("F");
  1869. auditItems.setBillNo(tWarehouseBills.getfBillno());
  1870. // 存储委托方(货权方)
  1871. auditItems.setRefno1(tWarehouseBills.getfCorpid() + "");
  1872. // 存储业务类型(业务类型)
  1873. auditItems.setRefno2(tWarehouseBills.getfBilltype());
  1874. // 存储提单号(提单号)
  1875. auditItems.setRefno3(tWarehouseBills.getfMblno());
  1876. auditItems.setSendUserId(loginUser.getUser().getUserId());
  1877. auditItems.setSendName(SecurityUtils.getUsername());
  1878. auditItems.setSendTime(new Date());
  1879. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  1880. auditItems.setAuditItem(new Date());
  1881. auditItems.setAuditOpTime(new Date());
  1882. auditItems.setAuditMsg("提交");
  1883. auditItems.setAuditStatus("O");
  1884. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  1885. // Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
  1886. String code = approvalFlow.get("code").toString();
  1887. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  1888. if ("500".equals(code)) {
  1889. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1890. }
  1891. return approvalFlow;
  1892. }
  1893. return AjaxResult.success("success",map);
  1894. }
  1895. @Override
  1896. public AjaxResult updateOrderMessage(TWarehouseBills tWarehouseBills) {
  1897. TWarehouseBills mblno = tWarehouseBillsMapper.selectTWarehousebillsfMblno(tWarehouseBills);
  1898. if (StringUtils.isNotNull(mblno) && !mblno.getfId().equals(tWarehouseBills.getfId())) {
  1899. return AjaxResult.error("提单号已存在,请重新提交");
  1900. }
  1901. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(tWarehouseBills.getfId());
  1902. if (warehouseBills.getfBillstatus() != 6L){
  1903. return AjaxResult.error("下单未审核完成,暂不支持维护提单号");
  1904. }
  1905. int i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  1906. if (i<=0){
  1907. return AjaxResult.error("更新提单号出错,请找管理员");
  1908. }
  1909. return AjaxResult.success();
  1910. }
  1911. /**
  1912. * app 查询业务主表信息
  1913. *
  1914. * @param warehouseBills
  1915. * @return
  1916. */
  1917. @Override
  1918. public List<Map<String, Object>> selectAppStockList(TWarehouseBills warehouseBills) {
  1919. return tWarehouseBillsMapper.selectAppStockList(warehouseBills);
  1920. }
  1921. /**
  1922. * app 根据主表id查询主表对应明细列表数据
  1923. *
  1924. * @param warehouseBills
  1925. * @return
  1926. */
  1927. @Override
  1928. public List<Map<String, Object>> warehouseItemById(TWarehouseBills warehouseBills) {
  1929. return tWarehouseBillsMapper.selectWarehouseItemListById(warehouseBills);
  1930. }
  1931. /**
  1932. * app 根据明细id查询对应明细表数据
  1933. *
  1934. * @param fId
  1935. * @return
  1936. */
  1937. @Override
  1938. public AjaxResult selectWarehouseItemDataById(Long fId) {
  1939. Map<String, Object> map = new HashMap<>();
  1940. Map<String, Object> itemMap = tWarehousebillsitemsMapper.selectWarehouseItemsByPId(fId);
  1941. if (StringUtils.isNull(itemMap) || !itemMap.containsKey("fPid")) {
  1942. return AjaxResult.error("未找到库存明细数据,请确认该明细是否存在");
  1943. }
  1944. map.put("item", itemMap);
  1945. if (itemMap.containsKey("fPid") && StringUtils.isNotNull(itemMap.get("fPid"))) {
  1946. long fPid = Long.valueOf(String.valueOf(itemMap.get("fPid")));
  1947. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fPid);
  1948. map.put("warehouseBills", tWarehouseBills);
  1949. // 查询附件
  1950. map.put("enclosure", tEnclosureMapper.selectTEnclosureByPId(tWarehouseBills.getfId()));
  1951. }
  1952. return AjaxResult.success(map);
  1953. }
  1954. /**
  1955. * 查询app 添加新行 必要的基础资料
  1956. *
  1957. * @param fId
  1958. * @return
  1959. */
  1960. @Override
  1961. public AjaxResult getAppBasicInformation(Long fId) {
  1962. Map<String, Object> map = new HashMap<>();
  1963. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  1964. map.put("warehouseBills", tWarehouseBills);
  1965. if (StringUtils.isNotNull(tWarehouseBills.getfLabour())) {
  1966. TCorps corps = tCorpsMapper.selectTCorpsById(tWarehouseBills.getfLabour());
  1967. if (StringUtils.isNotNull(corps)) {
  1968. map.put("labourName", corps.getfName());
  1969. }
  1970. }
  1971. if (StringUtils.isNotNull(tWarehouseBills.getfFleet())) {
  1972. TCorps corps = tCorpsMapper.selectTCorpsById(tWarehouseBills.getfFleet());
  1973. if (StringUtils.isNotNull(corps)) {
  1974. map.put("fleetName", corps.getfName());
  1975. }
  1976. }
  1977. if (StringUtils.isNotNull(tWarehouseBills.getfGoodsid())) {
  1978. TGoods goods = tGoodsMapper.selectTGoodsById(tWarehouseBills.getfGoodsid());
  1979. if (StringUtils.isNotNull(goods)) {
  1980. map.put("goodsName", goods.getfName());
  1981. }
  1982. }
  1983. // 查询劳务公司
  1984. TCorps corps = new TCorps();
  1985. corps.setfTypeid("\"6\"");
  1986. corps.setfStatus("0");
  1987. map.put("corpsList", tCorpsMapper.selectTCorpsList(corps));
  1988. // 查询车队
  1989. TCorps fleetCorp = new TCorps();
  1990. corps.setfTypeid("\"2\"");
  1991. fleetCorp.setfStatus("0");
  1992. map.put("feelCorpList", tCorpsMapper.selectTCorpsList(fleetCorp));
  1993. // 查询商品品名
  1994. TGoods goods = new TGoods();
  1995. goods.setfStatus("0");
  1996. map.put("goodsList", tGoodsMapper.selectTGoodsList(goods));
  1997. // 查询库区
  1998. TWarehouse tWarehouse = new TWarehouse();
  1999. tWarehouse.setAncestors(tWarehouseBills.getfWarehouseid() + "");
  2000. List<TWarehouse> warehouses = tWarehouseMapper.selectTWarehouseList(tWarehouse);
  2001. if (StringUtils.isNotEmpty(warehouses)) {
  2002. map.put("warehouse", warehouseServiceImpl.buildDeptTreeSelect(warehouses));
  2003. }
  2004. map.put("attributes", sysDictDataMapper.selectDictDataByType("storage_type"));
  2005. // 查询箱型数据
  2006. map.put("cntrList", sysDictDataMapper.selectDictDataByType("data_cntrId"));
  2007. return AjaxResult.success(map);
  2008. }
  2009. /**
  2010. * app确认入库、出库、货转
  2011. *
  2012. * @param item 明细数据
  2013. * @param attachs 附件数据
  2014. * @return 结果
  2015. */
  2016. @Override
  2017. public AjaxResult warehouseOperationConfirmation(String item, String attachs) {
  2018. LoginUser loginUser = SecurityUtils.getLoginUser();
  2019. TWarehousebillsitems tWarehousebillsitems = JSONArray.parseObject(item, TWarehousebillsitems.class);
  2020. if (StringUtils.isNull(tWarehousebillsitems.getfId()) || StringUtils.isNull(tWarehousebillsitems.getfPid())) {
  2021. return AjaxResult.error("未找到仓库明细id,或未找到上级id,请确认");
  2022. }
  2023. // 查询主表
  2024. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(tWarehousebillsitems.getfPid());
  2025. if (StringUtils.isNull(warehouseBills.getfBsdate())) {
  2026. return AjaxResult.error("库存明细请检查日期,操作终止");
  2027. }
  2028. if (StringUtils.isNull(warehouseBills.getfCorpid())) {
  2029. return AjaxResult.error("库存明细请检查客户信息,操作终止");
  2030. }
  2031. // 查询最新明细表
  2032. TWarehousebillsitems warehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(tWarehousebillsitems.getfId());
  2033. if (StringUtils.isNull(warehousebillsitems) || warehousebillsitems.getfBillstatus() != 30L) {
  2034. return AjaxResult.error("请确认是该明细数据是否存在,或该明细数据状态异常");
  2035. }
  2036. String billsType = warehousebillsitems.getfBilltype();
  2037. if ("SJRK".equals(billsType)) {
  2038. // 查询库容量 是否可入库
  2039. int m = calculation(warehouseBills.getfWarehouseid(), warehousebillsitems.getfGrossweight());
  2040. if (m == 0) {
  2041. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2042. return AjaxResult.error("更新库存总账失败-->入库毛重大于库容");
  2043. }
  2044. TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, warehousebillsitems);
  2045. if (StringUtils.isNotNull(tWhgenle)) {
  2046. int i = updateTWhgenlegData(tWarehousebillsitems, tWhgenle.getfId(), billsType);
  2047. if (i <= 0) {
  2048. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2049. return AjaxResult.error("更新库存总账失败");
  2050. }
  2051. } else {
  2052. warehousebillsitems.setfQty(tWarehousebillsitems.getfQty());
  2053. warehousebillsitems.setfGrossweight(tWarehousebillsitems.getfGrossweight());
  2054. warehousebillsitems.setfNetweight(tWarehousebillsitems.getfNetweight());
  2055. if (instalTWhgenleg(warehouseBills, warehousebillsitems, loginUser.getUser()) <= 0) {
  2056. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2057. return AjaxResult.error("新增库存总账失败");
  2058. }
  2059. }
  2060. tWarehousebillsitems.setfIsInventory(0L);
  2061. tWarehousebillsitems.setfSerialNumber(warehousebillsitems.getfSerialNumber());
  2062. if (StringUtils.isNotNull(tWarehousebillsitems.getfId())) {
  2063. tWarehousebillsitems.setfBillstatus(40L);
  2064. tWarehousebillsitems.setUpdateTime(new Date());
  2065. tWarehousebillsitems.setUpdateBy(SecurityUtils.getUsername());
  2066. tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
  2067. // 添加状态log
  2068. insertTWarehousebillsLog(tWarehousebillsitems, 40L, loginUser);
  2069. }
  2070. } else if ("SJCK".equals(billsType)) {
  2071. // 查询总账是否存在
  2072. TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, warehousebillsitems);
  2073. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  2074. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2075. return AjaxResult.error("库存明细库存为空");
  2076. }
  2077. // 库存 < 出库件数
  2078. if (tWhgenle.getfQtyblc() < tWarehousebillsitems.getfQty()) {
  2079. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2080. return AjaxResult.error("库存明细库存不足");
  2081. }
  2082. tWarehousebillsitems.setfVolumn(warehousebillsitems.getfVolumn());
  2083. // 跟新库存总账
  2084. updateTWhgenlegData(tWarehousebillsitems, tWhgenle.getfId(), billsType);
  2085. tWarehousebillsitems.setfBillstatus(40L);
  2086. tWarehousebillsitems.setUpdateTime(new Date());
  2087. tWarehousebillsitems.setfPid(warehouseBills.getfId());
  2088. tWarehousebillsitems.setfBsdate(warehouseBills.getfBsdate());
  2089. tWarehousebillsitems.setfBillno(warehouseBills.getfBillno());
  2090. tWarehousebillsitems.setUpdateBy(loginUser.getUser().getUserName());
  2091. tWarehousebillsitems.setfSerialNumber(warehousebillsitems.getfSerialNumber());
  2092. tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
  2093. // 添加状态log
  2094. insertTWarehousebillsLog(tWarehousebillsitems, 40L, loginUser);
  2095. }
  2096. tEnclosureMapper.deleteByFPid(warehouseBills.getfId());
  2097. // 附件添加
  2098. if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
  2099. JSONArray jsonDrArray = JSONArray.parseArray(attachs);
  2100. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  2101. for (TEnclosure enclosure : tEnclosureList) {
  2102. enclosure.setfStatus("6");
  2103. enclosure.setCreateTime(new Date());
  2104. enclosure.setfPid(warehouseBills.getfId());
  2105. enclosure.setCreateBy(loginUser.getUser().getUserName());
  2106. tEnclosureMapper.insertTEnclosure(enclosure);
  2107. }
  2108. }
  2109. return AjaxResult.success();
  2110. }
  2111. /**
  2112. * app查询入库数量
  2113. */
  2114. @Override
  2115. public List<Map<String, Object>> selectWarehouseBusinessInStockList(TWarehousebillsitems tWarehousebillsitems) {
  2116. List<Map<String, Object>> mapList = null;
  2117. if (tWarehousebillsitems.getfBilltype().equals("SJRK")) {
  2118. mapList = tWarehousebillsitemsMapper.selectWarehouseBusinesInList(tWarehousebillsitems);
  2119. } else {
  2120. mapList = tWarehousebillsitemsMapper.selectWarehouseBusinesOutList(tWarehousebillsitems);
  2121. }
  2122. if (StringUtils.isNotEmpty(mapList)) {
  2123. for (Map<String, Object> map : mapList) {
  2124. Long fId = Long.valueOf(String.valueOf(map.get("fPid")));
  2125. TEnclosure enclosure = new TEnclosure();
  2126. enclosure.setfPid(fId);
  2127. map.put("enclosure", tEnclosureMapper.selectWarehouseAccessoriesList(enclosure));
  2128. }
  2129. }
  2130. return mapList;
  2131. }
  2132. /**
  2133. * 叫车进场
  2134. * @param item 明细数据
  2135. * @param attachs 附件
  2136. * @return 结果
  2137. */
  2138. @Override
  2139. @Transactional
  2140. public AjaxResult addCreditItems(String item, String attachs) {
  2141. TWarehousebillsitems tWarehousebillsitems = JSONArray.parseObject(item, TWarehousebillsitems.class);
  2142. if (StringUtils.isNull(tWarehousebillsitems.getfId())) {
  2143. return AjaxResult.error("未找到仓库明细id,请确认");
  2144. }
  2145. TWarehousebillsitems warehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(tWarehousebillsitems.getfId());
  2146. if (StringUtils.isNull(warehousebillsitems)) {
  2147. return AjaxResult.error("未找到该条明细数据,请确认明细数据是否存在");
  2148. }
  2149. if (StringUtils.isNull(warehousebillsitems.getfBillstatus())) {
  2150. return AjaxResult.error("未找到仓库明细状态信息,请确认");
  2151. }
  2152. if (warehousebillsitems.getfBillstatus() != 20L) {
  2153. return AjaxResult.error("该仓库明细状态异常,请确认状态信息");
  2154. }
  2155. warehousebillsitems.setfBillstatus(30L);
  2156. warehousebillsitems.setUpdateTime(new Date());
  2157. warehousebillsitems.setUpdateBy(SecurityUtils.getUsername());
  2158. tWarehousebillsitemsMapper.updateTWarehousebillsitems(warehousebillsitems);
  2159. // 更新主表明细状态
  2160. TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehousebillsitems.getfPid());
  2161. warehouseBills.setfItemsStatus(3L);
  2162. warehouseBills.setUpdateTime(new Date());
  2163. warehouseBills.setUpdateBy(SecurityUtils.getUsername());
  2164. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  2165. tEnclosureMapper.deleteByFPid(warehouseBills.getfId());
  2166. // 附件添加
  2167. if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
  2168. JSONArray jsonDrArray = JSONArray.parseArray(attachs);
  2169. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  2170. for (TEnclosure enclosure : tEnclosureList) {
  2171. enclosure.setfStatus("6");
  2172. enclosure.setCreateTime(new Date());
  2173. enclosure.setfPid(warehouseBills.getfId());
  2174. enclosure.setCreateBy(SecurityUtils.getUsername());
  2175. tEnclosureMapper.insertTEnclosure(enclosure);
  2176. }
  2177. }
  2178. return AjaxResult.success();
  2179. }
  2180. @Override
  2181. public List<InStock> inStockExport(TWarehouseBills tWarehousebills) throws Exception {
  2182. List<Map<String, Object>> list = tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);
  2183. List<InStock> list1 = ListMapToBeanUtils.castMapToBean(list, InStock.class);
  2184. return list1;
  2185. }
  2186. @Override
  2187. public List<OutStock> outStockExport(TWarehouseBills tWarehousebills) throws Exception {
  2188. List<Map<String, Object>> list = tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);
  2189. List<OutStock> list1 = ListMapToBeanUtils.castMapToBean(list, OutStock.class);
  2190. return list1;
  2191. }
  2192. @Override
  2193. public List<StockTransfer> stockTransferExport(TWarehouseBills tWarehousebills) throws Exception {
  2194. List<Map<String, Object>> list = tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);
  2195. List<StockTransfer> list1 = ListMapToBeanUtils.castMapToBean(list, StockTransfer.class);
  2196. return list1;
  2197. }
  2198. @Override
  2199. public List<GoodsTransfer> goodsTransferExport(TWarehouseBills tWarehousebills) throws Exception {
  2200. List<Map<String, Object>> list = tWarehouseBillsMapper.selectWarehouseBusinessList1(tWarehousebills);
  2201. List<GoodsTransfer> list1 = ListMapToBeanUtils.castMapToBean(list, GoodsTransfer.class);
  2202. return list1;
  2203. }
  2204. @Override
  2205. public List<StorageFee> storageFeeExport(TWarehouseBills tWarehousebills) throws Exception {
  2206. List<Map<String, Object>> list = tWarehouseBillsMapper.selectWarehouseBusinessList1(tWarehousebills);
  2207. List<StorageFee> list1 = ListMapToBeanUtils.castMapToBean(list, StorageFee.class);
  2208. return list1;
  2209. }
  2210. /**
  2211. * 根据仓库主表id 更新对应明细表状态
  2212. *
  2213. * @param fPid 仓库主表id
  2214. * @return 结果
  2215. */
  2216. @Transactional
  2217. public AjaxResult warehouseFollow(Long fPid, long fettle) {
  2218. if (StringUtils.isNull(fPid)) {
  2219. return AjaxResult.error("仓库更新状态未找到主表信息,请与管理员联系");
  2220. }
  2221. try {
  2222. tWarehouseBillsMapper.warehouseFollowUpdate(fPid, fettle, new Date());
  2223. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(fPid, fettle, new Date());
  2224. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fPid);
  2225. if ("SJRK".equals(tWarehouseBills.getfBilltype()) || "SJCK".equals(tWarehouseBills.getfBilltype())) {
  2226. fettle = 40L;
  2227. }
  2228. tWarehousebillsitemsMapper.warehouseItemFollowUpdate(fPid, fettle);
  2229. } catch (Exception e) {
  2230. return AjaxResult.error("更新库存费用状态失败,请联系管理员");
  2231. }
  2232. return AjaxResult.success();
  2233. }
  2234. /**
  2235. * 根据仓库主表id 更新对应明细表状态
  2236. *
  2237. * @param fPid 仓库主表id
  2238. * @return 结果
  2239. */
  2240. @Transactional
  2241. public AjaxResult storageFeeFollow(Long fPid, long fettle) {
  2242. if (StringUtils.isNull(fPid)) {
  2243. return AjaxResult.error("仓库更新状态未找到主表信息,请与管理员联系");
  2244. }
  2245. int warehouseUpdateResult = tWarehouseBillsMapper.warehouseFollowUpdate(fPid, fettle, new Date());
  2246. if (warehouseUpdateResult <= 0) {
  2247. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2248. return AjaxResult.error("更新库存明细状态失败,请联系管理员");
  2249. }
  2250. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  2251. warehousebillsfees.setfPid(fPid);
  2252. List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  2253. for (TWarehousebillsfees wareItem : warehousebillsfeesList) {
  2254. if (StringUtils.isNull(wareItem.getSrcId())) {
  2255. continue;
  2256. }
  2257. if ("KCZZ".equals(wareItem.getfBilltype())) {
  2258. TWhgenleg tWhgenleg = tWhgenlegMapper.selectTWhgenlegById(wareItem.getSrcId());
  2259. tWhgenleg.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
  2260. int i = tWhgenlegMapper.updateTWhgenleg(tWhgenleg);
  2261. if (i <= 0) {
  2262. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2263. return AjaxResult.error("更新库存费用状态失败,请联系管理员");
  2264. }
  2265. } else {
  2266. TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wareItem.getSrcId());
  2267. tWarehousebillsitems.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
  2268. if ("SJCK".equals(wareItem.getfBilltype())) {
  2269. tWarehousebillsitems.setfStorageFeeDeadline(wareItem.getfBillingDeadline());
  2270. }
  2271. tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
  2272. }
  2273. }
  2274. int feesUpdateResult = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(fPid, fettle, new Date());
  2275. if (feesUpdateResult <= 0) {
  2276. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2277. return AjaxResult.error("更新库存费用状态失败,请联系管理员");
  2278. }
  2279. return AjaxResult.success();
  2280. }
  2281. /**
  2282. * 入库详情入账
  2283. *
  2284. * @param warehouseBills 主表
  2285. * @param warehousebillsitems 明细
  2286. * @param loginUser 当前登录人
  2287. * @param billsType 状态
  2288. * @return 结果
  2289. */
  2290. @Override
  2291. @Transactional
  2292. public AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String tEnclosure, String warehousebillsfeesCr,
  2293. String warehousebillsfeesDr, LoginUser loginUser, String tCntr, String billsType) {
  2294. Map<String, Object> map = new HashMap<>();
  2295. if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
  2296. return AjaxResult.error("未找到主表信息");
  2297. }
  2298. if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
  2299. return AjaxResult.error("未找到入账信息");
  2300. }
  2301. TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  2302. tWarehouseBills.setfItemsStatus(4L);
  2303. tWarehouseBills.setfBilltype(billsType);
  2304. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  2305. tWarehouseBills.setUpdateTime(new Date());
  2306. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  2307. tEnclosureMapper.deleteByFPid(tWarehouseBills.getfId());
  2308. tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId());
  2309. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(tWarehouseBills.getfId());
  2310. boolean businessStatus = "场地直装".equals(tWarehouseBills.getfBusinessType());
  2311. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  2312. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  2313. int i = 1;
  2314. for (TWarehousebillsitems item : warehousebillsitemsList) {
  2315. // 查询是否可以修改
  2316. TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(item.getfId());
  2317. if (tWarehousebillsitems.getfBillstatus() == 40) {
  2318. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2319. return AjaxResult.error("更新库存明细第" + i + "行失败,已处理,请刷新网页");
  2320. }
  2321. if (!businessStatus) {
  2322. // 查询库容量 是否可入库
  2323. int m = calculation(tWarehouseBills.getfWarehouseid(), item.getfGrossweight());
  2324. if (m == 0) {
  2325. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2326. return AjaxResult.error("更新库存总账失败-->入库毛重大于库容");
  2327. }
  2328. item.setfOriginalbilldate(item.getfBsdate());
  2329. item.setfBillingway(tWarehouseBills.getfBillingway());
  2330. item.setfChargedate(item.getfBsdate());
  2331. TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, item);
  2332. if (StringUtils.isNotNull(tWhgenle)) {
  2333. int i1 = updateTWhgenlegData(item, tWhgenle.getfId(), billsType);
  2334. if (i1 <= 0) {
  2335. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2336. return AjaxResult.error("更新库存总账失败");
  2337. }
  2338. } else {
  2339. if (instalTWhgenleg(tWarehouseBills, item, loginUser.getUser()) <= 0) {
  2340. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2341. return AjaxResult.error("新增库存总账失败");
  2342. }
  2343. }
  2344. item.setfIsInventory(0L);
  2345. } else {
  2346. item.setfIsInventory(1L);
  2347. }
  2348. int num = 0;
  2349. if (StringUtils.isNotNull(item.getfId())) {
  2350. item.setfBillstatus(40L);
  2351. item.setUpdateBy(loginUser.getUser().getUserName());
  2352. item.setUpdateTime(new Date());
  2353. if ("SJRK".equals(billsType)) {
  2354. item.setfMblno(tWarehouseBills.getfMblno());// 入库更新库存前执行update更新明细的提单号等于主表的提单号
  2355. }
  2356. num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
  2357. // 添加状态log
  2358. insertTWarehousebillsLog(item, 40L, loginUser);
  2359. }
  2360. if (num <= 0) {
  2361. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2362. return AjaxResult.error("新增库存明细失败");
  2363. }
  2364. i++;
  2365. }
  2366. // 箱型数据
  2367. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  2368. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  2369. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  2370. int line = 0;
  2371. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  2372. line++;
  2373. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  2374. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2375. return AjaxResult.error("箱型数据第"+line+"行数据缺少必填数据");
  2376. }
  2377. cntr.setfPid(tWarehouseBills.getfId());
  2378. cntr.setfGoodsid(0L);
  2379. cntr.setfPackageid("0");
  2380. cntr.setfCntrweight(new BigDecimal(0));
  2381. cntr.setCreateBy(loginUser.getUser().getUserName());
  2382. cntr.setCreateTime(new Date());
  2383. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  2384. }
  2385. }
  2386. // 附件添加
  2387. if (StringUtils.isNotEmpty(tEnclosure) && !"[]".equals(tEnclosure)) {
  2388. JSONArray jsonDrArray = JSONArray.parseArray(tEnclosure);
  2389. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  2390. for (TEnclosure enclosure : tEnclosureList) {
  2391. enclosure.setfPid(tWarehouseBills.getfId());
  2392. enclosure.setCreateBy(loginUser.getUser().getUserName());
  2393. enclosure.setCreateTime(new Date());
  2394. tEnclosureMapper.insertTEnclosure(enclosure);
  2395. }
  2396. }
  2397. // 收款明细添加
  2398. if (StringUtils.isNotEmpty(warehousebillsfeesDr) && !"[]".equals(warehousebillsfeesDr)) {
  2399. JSONArray jsonDrArray = JSONArray.parseArray(warehousebillsfeesDr);
  2400. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  2401. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  2402. wbDr.setfPid(tWarehouseBills.getfId());
  2403. wbDr.setfDc("D");
  2404. wbDr.setCreateBy(loginUser.getUser().getUserName());
  2405. wbDr.setCreateTime(new Date());
  2406. if (tWarehouseBills.getfBsdate() != null && !tWarehouseBills.getfBsdate().equals("")) {
  2407. wbDr.setfBsdate(tWarehouseBills.getfBsdate());
  2408. }
  2409. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  2410. }
  2411. }
  2412. // 付款明细添加
  2413. if (StringUtils.isNotNull(warehousebillsfeesCr) && !"[]".equals(warehousebillsfeesCr)) {
  2414. JSONArray jsonCrArray = JSONArray.parseArray(warehousebillsfeesCr);
  2415. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  2416. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  2417. wbCr.setfPid(tWarehouseBills.getfId());
  2418. wbCr.setfDc("C");
  2419. wbCr.setCreateBy(loginUser.getUser().getUserName());
  2420. wbCr.setCreateTime(new Date());
  2421. if (tWarehouseBills.getfBsdate() != null && !tWarehouseBills.getfBsdate().equals("")) {
  2422. wbCr.setfBsdate(tWarehouseBills.getfBsdate());
  2423. }
  2424. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  2425. }
  2426. }
  2427. map.put("warehousebillsitems", warehousebillsitemsList);
  2428. return AjaxResult.success("成功", map);
  2429. }
  2430. /**
  2431. * 出库、调拨、货转 确认
  2432. *
  2433. * @param warehouseBills
  2434. * @param warehousebillsitems
  2435. * @param loginUser
  2436. * @param billsType
  2437. * @return
  2438. */
  2439. @Override
  2440. @Transactional
  2441. public AjaxResult updateCredit(String warehouseBills, String warehousebillsitems, String tEnclosure, String warehousebillsfeesCr,
  2442. String warehousebillsfeesDr, LoginUser loginUser, String tCntr, String billsType) {
  2443. Long fPid = null;
  2444. Map<String, Object> map = new HashMap<>();
  2445. TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  2446. tWarehouseBills.setfItemsStatus(4L);
  2447. if (StringUtils.isNotNull(tWarehouseBills.getfId())) {
  2448. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  2449. tWarehouseBills.setUpdateTime(new Date());
  2450. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  2451. fPid = tWarehouseBills.getfId();
  2452. } else {
  2453. tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  2454. tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
  2455. tWarehouseBills.setCreateTime(new Date());
  2456. String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());
  2457. tWarehouseBills.setfBillno(billNo);
  2458. tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
  2459. fPid = tWarehouseBills.getfId();
  2460. }
  2461. tEnclosureMapper.deleteByFPid(fPid);
  2462. tWarehousebillsfeesMapper.deleteByFPid(fPid);
  2463. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(fPid);
  2464. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  2465. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  2466. int i = 1;
  2467. List<TFees> feesList = new ArrayList<>();
  2468. List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
  2469. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  2470. // 查询是否可以修改
  2471. TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wbItem.getfId());
  2472. if (tWarehousebillsitems.getfBillstatus() == 40) {
  2473. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2474. return AjaxResult.error("更新库存明细第" + i + "行失败,已处理,请刷新网页");
  2475. }
  2476. long warehouselocId = 0L;
  2477. long transferWarehouselocid = 0L;
  2478. if ("CKDB".equals(billsType) | "HWTG".equals(billsType)) {
  2479. warehouselocId = wbItem.getfWarehouselocid();
  2480. transferWarehouselocid = wbItem.getfTransferWarehouselocid();
  2481. // wbItem.setfWarehouselocid(transferWarehouselocid);
  2482. }
  2483. // 查询总账是否存在
  2484. TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem);
  2485. // 入库数特殊不判断入账
  2486. if ("SJCK".equals(billsType)) { // 出库 查询
  2487. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  2488. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2489. return AjaxResult.error("库存明细第" + i + "行库存为空");
  2490. } else { // 非空修改库存总账
  2491. // 库存 < 出库件数
  2492. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
  2493. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2494. return AjaxResult.error("库存明细第" + i + "行库存不足");
  2495. }
  2496. // 更新库存总账
  2497. updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
  2498. if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
  2499. return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
  2500. }
  2501. long dateDay = DateUtils.getDateDay(tWarehouseBills.getfBsdate(), wbItem.getfChargedate());
  2502. if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
  2503. return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
  2504. }
  2505. /*long fCorpid = tWarehouseBills.getfCorpid();
  2506. TGoods tGoods = tGoodsMapper.selectTGoodsById(wbItem.getfGoodsid());
  2507. long fGoodsid = tGoods.getfTypeid();
  2508. long fBillingway = wbItem.getfBillingway();
  2509. long fQty = wbItem.getfQty();
  2510. // 计算仓储费明细
  2511. Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, dateDay, fBillingway, fQty , 0L);
  2512. if (StringUtils.isNull(objectMap)) {
  2513. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2514. return AjaxResult.error("库存明细第" + i + "行没有维护出库明细的仓储协议,操作终止");
  2515. }
  2516. Long feeId = (Long) objectMap.get("feeId");
  2517. BigDecimal amt = (BigDecimal) objectMap.get("amt");
  2518. TFees tFees = tFeesMapper.selectTFeesById(feeId);
  2519. if (StringUtils.isNotNull(tFees)) {
  2520. feesList.add(tFees);
  2521. }
  2522. TWarehousebillsfees fees = new TWarehousebillsfees();
  2523. fees.setfPid(fPid);
  2524. fees.setfFeeid(feeId);
  2525. fees.setfCorpid(tWarehouseBills.getfCorpid());
  2526. fees.setfFeeUnitid(fBillingway);
  2527. fees.setfQty(new BigDecimal(1));
  2528. fees.setfUnitprice(amt);
  2529. fees.setfAmount(amt);
  2530. fees.setfExrate(new BigDecimal(1));
  2531. fees.setfCurrency("RMB");
  2532. fees.setRemark(dateDay + "天" + tFees.getfName());
  2533. warehousebillsfees.add(fees);*/
  2534. }
  2535. wbItem.setfBillstatus(40L);
  2536. } else if ("CKDB".equals(billsType) || "HWTG".equals(billsType)) { // 调拨查询
  2537. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  2538. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2539. return AjaxResult.error("库存明细第" + i + "行库存为空");
  2540. } else { // 非空修改库存总账
  2541. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  2542. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2543. return AjaxResult.error("库存明细第" + i + "行库存不足");
  2544. } else { // 2、 库存足够 先 进行出库操作
  2545. wbItem.setfWarehouselocid(warehouselocId);
  2546. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  2547. }
  2548. if ("HWTG".equals(billsType)) {
  2549. tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
  2550. }
  2551. // 3、 进行入库操作 查询是否存在库存
  2552. wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
  2553. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);
  2554. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  2555. instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
  2556. } else { // 4、 存在 进行跟新库存
  2557. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  2558. }
  2559. }
  2560. wbItem.setfWarehouselocid(warehouselocId);
  2561. wbItem.setfBillstatus(40L);
  2562. } else if ("HQZY".equals(billsType)) { // 货转
  2563. wbItem.setfBillstatus(6L);
  2564. wbItem.setfChargedate(tWarehouseBills.getfChargedate());
  2565. wbItem.setfBillingway(tWarehouseBills.getfBillingway());
  2566. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  2567. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2568. return AjaxResult.error("库存明细第" + i + "行库存为空");
  2569. } else { // 非空修改库存总账
  2570. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  2571. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2572. return AjaxResult.error("库存明细第" + i + "行库存不足");
  2573. } else { // 2、 库存足够 先 进行出库操作
  2574. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  2575. }
  2576. long corpId = tWarehouseBills.getfCorpid();
  2577. tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
  2578. // 3、 进行入库操作 查询是否存在库存
  2579. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);
  2580. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  2581. instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
  2582. } else { // 4、 存在 进行跟新库存
  2583. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  2584. }
  2585. tWarehouseBills.setfCorpid(corpId);
  2586. }
  2587. }
  2588. i++;
  2589. int num = 0;
  2590. wbItem.setfPid(fPid);
  2591. wbItem.setfBilltype(billsType);
  2592. wbItem.setfBillno(tWarehouseBills.getfBillno());
  2593. wbItem.setfBsdate(tWarehouseBills.getfBsdate());
  2594. if (StringUtils.isNotNull(wbItem.getfId())) {
  2595. wbItem.setUpdateBy(loginUser.getUser().getUserName());
  2596. wbItem.setUpdateTime(new Date());
  2597. num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
  2598. if ("SJCK".equals(billsType)) {
  2599. // 添加状态log
  2600. insertTWarehousebillsLog(wbItem, 40L, loginUser);
  2601. }
  2602. } else {
  2603. wbItem.setCreateTime(new Date());
  2604. wbItem.setCreateBy(loginUser.getUsername());
  2605. num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
  2606. }
  2607. if (num <= 0) {
  2608. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2609. return AjaxResult.error("库存明细更新失败");
  2610. }
  2611. }
  2612. // 箱型数据
  2613. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  2614. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  2615. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  2616. int line = 0;
  2617. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  2618. line++;
  2619. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  2620. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2621. return AjaxResult.error("箱型数据第"+line+"行数据缺少必填数据");
  2622. }
  2623. cntr.setfPid(tWarehouseBills.getfId());
  2624. cntr.setfGoodsid(0L);
  2625. cntr.setfPackageid("0");
  2626. cntr.setfCntrweight(new BigDecimal(0));
  2627. cntr.setCreateBy(loginUser.getUser().getUserName());
  2628. cntr.setCreateTime(new Date());
  2629. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  2630. }
  2631. }
  2632. // 附件添加
  2633. if (StringUtils.isNotEmpty(tEnclosure) && !"[]".equals(tEnclosure)) {
  2634. JSONArray jsonDrArray = JSONArray.parseArray(tEnclosure);
  2635. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  2636. for (TEnclosure enclosure : tEnclosureList) {
  2637. enclosure.setfPid(tWarehouseBills.getfId());
  2638. enclosure.setCreateBy(loginUser.getUser().getUserName());
  2639. enclosure.setCreateTime(new Date());
  2640. tEnclosureMapper.insertTEnclosure(enclosure);
  2641. }
  2642. }
  2643. // 收款明细添加
  2644. if (StringUtils.isNotEmpty(warehousebillsfeesDr) && !"[]".equals(warehousebillsfeesDr)) {
  2645. JSONArray jsonDrArray = JSONArray.parseArray(warehousebillsfeesDr);
  2646. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  2647. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  2648. wbDr.setfPid(tWarehouseBills.getfId());
  2649. wbDr.setfDc("D");
  2650. wbDr.setCreateBy(loginUser.getUser().getUserName());
  2651. wbDr.setCreateTime(new Date());
  2652. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  2653. }
  2654. }
  2655. // 付款明细添加
  2656. if (StringUtils.isNotNull(warehousebillsfeesCr) && !"[]".equals(warehousebillsfeesCr)) {
  2657. JSONArray jsonCrArray = JSONArray.parseArray(warehousebillsfeesCr);
  2658. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  2659. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  2660. wbCr.setfPid(tWarehouseBills.getfId());
  2661. wbCr.setfDc("C");
  2662. wbCr.setCreateBy(loginUser.getUser().getUserName());
  2663. wbCr.setCreateTime(new Date());
  2664. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  2665. }
  2666. }
  2667. map.put("fPid", fPid);
  2668. map.put("warehouse", tWarehouseBills);
  2669. map.put("warehouseItem", warehousebillsitemsList);
  2670. map.put("fees", feesList);
  2671. map.put("warehousebillsfees", warehousebillsfees);
  2672. // 添加成功 主键返回 前台
  2673. return AjaxResult.success("成功", map);
  2674. }
  2675. /**
  2676. * 打印作业单
  2677. *
  2678. * @param warehouseBills
  2679. * @param warehousebillsitems
  2680. * @param tEnclosure
  2681. * @param tWarehousebillsfeesCr
  2682. * @param tWarehousebillsfeesDr
  2683. * @param loginUser
  2684. * @param status
  2685. * @param billtystatus
  2686. * @return
  2687. */
  2688. @Override
  2689. @Transactional
  2690. public AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems,
  2691. String tEnclosure, String tWarehousebillsfeesCr, String tWarehousebillsfeesDr,
  2692. LoginUser loginUser, String tCntr, Long status, String billtystatus) {
  2693. Map<String, Object> map = new HashMap<>();
  2694. List<TWarehousebillsitems> mapList = new ArrayList<>();
  2695. if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
  2696. return AjaxResult.error("未找到主表信息");
  2697. }
  2698. if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
  2699. return AjaxResult.error("未找到入账信息");
  2700. }
  2701. TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  2702. if (status == 20) {
  2703. tWarehouseBills.setfItemsStatus(2L);
  2704. } else if (status == 30) {
  2705. tWarehouseBills.setfItemsStatus(3L);
  2706. }
  2707. if (StringUtils.isNotNull(tWarehouseBills.getfId())) {
  2708. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  2709. tWarehouseBills.setUpdateTime(new Date());
  2710. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  2711. }
  2712. tEnclosureMapper.deleteByFPid(tWarehouseBills.getfId());
  2713. tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId());
  2714. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(tWarehouseBills.getfId());
  2715. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  2716. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  2717. /**
  2718. * 1、 查询回收表是否有可用数据
  2719. * 2、 流水号生成 --> 打印一次 只记录一个号
  2720. */
  2721. Date time = new Date();
  2722. String serialNumber = null;
  2723. if (status == 20) {
  2724. if ("RK".equals(billtystatus)) {
  2725. serialNumber = billnoSerialServiceImpl.getSerialNumber("RK", time);
  2726. } else if ("CK".equals(billtystatus)) { //生成 出库 流水号
  2727. serialNumber = billnoSerialServiceImpl.getSerialNumber("CK", time);
  2728. } else if ("DB".equals(billtystatus)) { //生成 出库 流水号
  2729. serialNumber = billnoSerialServiceImpl.getSerialNumber("DB", time);
  2730. } else if ("TG".equals(billtystatus)) { //生成 出库 流水号
  2731. serialNumber = billnoSerialServiceImpl.getSerialNumber("TG", time);
  2732. }
  2733. }
  2734. int i = 1;
  2735. for (TWarehousebillsitems item : warehousebillsitemsList) {
  2736. // 查询是否可以修改
  2737. TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(item.getfId());
  2738. if (tWarehousebillsitems.getfBillstatus() == 30) {
  2739. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2740. return AjaxResult.error("更新库存明细第" + i + "行失败,已处理,请刷新网页");
  2741. }
  2742. if (item.getfBillstatus() < 30L) {
  2743. if (item.getfSerialNumber() == null || item.getfSerialNumber().equals("")) {
  2744. item.setfSerialNumber(serialNumber);
  2745. }
  2746. item.setfBillstatus(status);
  2747. item.setUpdateTime(new Date());
  2748. item.setUpdateBy(loginUser.getUser().getUserName());
  2749. int num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
  2750. // 添加状态log
  2751. insertTWarehousebillsLog(item, status, loginUser);
  2752. if (num <= 0) {
  2753. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2754. return AjaxResult.error("更新库存明细失败");
  2755. }
  2756. }
  2757. mapList.add(item);
  2758. i++;
  2759. }
  2760. // 箱型数据
  2761. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  2762. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  2763. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  2764. int line = 0;
  2765. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  2766. line++;
  2767. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  2768. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2769. return AjaxResult.error("箱型数据第"+line+"行数据缺少必填数据");
  2770. }
  2771. cntr.setfPid(tWarehouseBills.getfId());
  2772. cntr.setfGoodsid(0L);
  2773. cntr.setfPackageid("0");
  2774. cntr.setfCntrweight(new BigDecimal(0));
  2775. cntr.setCreateBy(loginUser.getUser().getUserName());
  2776. cntr.setCreateTime(new Date());
  2777. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  2778. }
  2779. }
  2780. // 附件添加
  2781. if (StringUtils.isNotEmpty(tEnclosure) && !"[]".equals(tEnclosure)) {
  2782. JSONArray jsonDrArray = JSONArray.parseArray(tEnclosure);
  2783. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  2784. for (TEnclosure enclosure : tEnclosureList) {
  2785. enclosure.setfPid(tWarehouseBills.getfId());
  2786. enclosure.setCreateBy(loginUser.getUser().getUserName());
  2787. enclosure.setCreateTime(new Date());
  2788. tEnclosureMapper.insertTEnclosure(enclosure);
  2789. }
  2790. }
  2791. // 收款明细添加
  2792. if (StringUtils.isNotEmpty(tWarehousebillsfeesDr) && !"[]".equals(tWarehousebillsfeesDr)) {
  2793. JSONArray jsonDrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  2794. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  2795. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  2796. wbDr.setfPid(tWarehouseBills.getfId());
  2797. wbDr.setfDc("D");
  2798. wbDr.setCreateBy(loginUser.getUser().getUserName());
  2799. wbDr.setCreateTime(new Date());
  2800. if (tWarehouseBills.getfBsdate() != null && !tWarehouseBills.getfBsdate().equals("")) {
  2801. wbDr.setfBsdate(tWarehouseBills.getfBsdate());
  2802. }
  2803. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  2804. }
  2805. }
  2806. // 付款明细添加
  2807. if (StringUtils.isNotNull(tWarehousebillsfeesCr) && !"[]".equals(tWarehousebillsfeesCr)) {
  2808. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  2809. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  2810. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  2811. wbCr.setfPid(tWarehouseBills.getfId());
  2812. wbCr.setfDc("C");
  2813. wbCr.setCreateBy(loginUser.getUser().getUserName());
  2814. wbCr.setCreateTime(new Date());
  2815. if (tWarehouseBills.getfBsdate() != null && !tWarehouseBills.getfBsdate().equals("")) {
  2816. wbCr.setfBsdate(tWarehouseBills.getfBsdate());
  2817. }
  2818. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  2819. }
  2820. }
  2821. // 添加成功 返回 前台
  2822. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  2823. tWarehousebillsitems.setfPid(tWarehouseBills.getfId());
  2824. List<TWarehousebillsitems> mapList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
  2825. map.put("warehousebillsitems", mapList);
  2826. map.put("warehousebillsitems1", mapList1);
  2827. return AjaxResult.success("成功", map);
  2828. }
  2829. /**
  2830. * 生成计算仓储费信息
  2831. *
  2832. * @param warehouseBills
  2833. * @param mapItem
  2834. * @param loginUser
  2835. * @return
  2836. */
  2837. public Map<String, Object> getWarehouseItems(TWarehouseBills warehouseBills, List<Map<String, Object>> mapItem, LoginUser loginUser) {
  2838. Map<String, Object> map = new HashMap<>();
  2839. long feeId = 0L;
  2840. BigDecimal sumAmt = new BigDecimal(0);
  2841. List<TWarehousebillsfees> itemsList = new ArrayList<>();
  2842. List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate");
  2843. for (Map<String, Object> item : mapItem) {
  2844. if (StringUtils.isNull(item.get("fBillingway"))) {
  2845. map.put("error", "单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到库存总账的计费单位,请确认");
  2846. return map;
  2847. }
  2848. Date fBsdate = (Date) item.get("fBsdate");
  2849. long fCorpid = warehouseBills.getfCorpid();
  2850. String fBilltype = (String) item.get("fBilltype");
  2851. long fGoodsid = Long.parseLong((String) item.get("fTypeid"));
  2852. long fId = Long.valueOf(String.valueOf(item.get("fId"))).longValue();
  2853. // 累计计费天数
  2854. long accumulatedDays = DateUtils.getDateDay((Date) item.get("fChargedate"), (Date) item.get("fOriginalbilldate"));
  2855. // 库存天数
  2856. long fInventoryDays = 0L;
  2857. // 要计费天数
  2858. long fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
  2859. if ("SJCK".equals(fBilltype)) {
  2860. fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate"));
  2861. fBillingDays = fInventoryDays;
  2862. } else if ("HQZY".equals(fBilltype)) {
  2863. fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), fBsdate);
  2864. } else {
  2865. fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fChargedate"));
  2866. fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
  2867. }
  2868. /*if ("KCZZ".equals(fBilltype)) {
  2869. } else {
  2870. fInventoryDays = Long.valueOf(String.valueOf(item.get("fBillingDays")));
  2871. }*/
  2872. Long dictLabel = Long.valueOf(String.valueOf(item.get("fBillingway")));
  2873. BigDecimal fQty = acquiredQuantity(item, dictLabel);
  2874. if (fQty.equals(BigDecimal.ZERO)) {
  2875. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2876. return AjaxResult.error("单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到计费单位,请确认");
  2877. }
  2878. // 计算仓储费明细
  2879. Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, fBillingDays, dictLabel, fQty, accumulatedDays);
  2880. if (StringUtils.isNull(objectMap)) {
  2881. map.put("error", "单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到仓储费协议,请确认");
  2882. return map;
  2883. }
  2884. String mblno = "";
  2885. if (StringUtils.isNotNull(item.get("fMblno"))) {
  2886. mblno = item.get("fMblno").toString();
  2887. }
  2888. String remark = objectMap.get("remark").toString();
  2889. feeId = Long.valueOf(String.valueOf(objectMap.get("feeId"))).longValue();
  2890. BigDecimal amt = (BigDecimal) objectMap.get("amt");
  2891. map.put("feeId", feeId);
  2892. map.put("itemFeeId", objectMap.get("feeId"));
  2893. sumAmt = sumAmt.add(amt).setScale(2, BigDecimal.ROUND_HALF_UP);
  2894. TWarehousebillsfees fees = new TWarehousebillsfees();
  2895. fees.setfFeeid(feeId);
  2896. fees.setfDc("D");
  2897. fees.setfAmt(amt);
  2898. fees.setSrcId(fId);
  2899. fees.setfMblno(mblno);
  2900. fees.setRemark(remark);
  2901. fees.setfFeeunitid(2L);
  2902. fees.setfAmount(sumAmt);
  2903. fees.setfBillstatus(2L);
  2904. fees.setfCurrency("RMB");
  2905. fees.setfBsdate(fBsdate);
  2906. fees.setfBillingQty(fQty);
  2907. fees.setfUnitprice(sumAmt);
  2908. fees.setfBilltype(fBilltype);
  2909. fees.setfBillingDays(fBillingDays);
  2910. fees.setCreateTime(new Date());
  2911. fees.setfQty(new BigDecimal(1));
  2912. fees.setfPid(warehouseBills.getfId());
  2913. fees.setfInventoryDays(fInventoryDays);
  2914. fees.setfExrate(new BigDecimal(1));
  2915. fees.setfCorpid(warehouseBills.getfCorpid());
  2916. fees.setfMarks(item.get("fMarks").toString());
  2917. fees.setSrcBillNo((String) item.get("fBillno"));
  2918. fees.setfChargedate((Date) item.get("fChargedate"));
  2919. fees.setCreateBy(loginUser.getUser().getUserName());
  2920. fees.setfProductName(item.get("fGoodsids").toString());
  2921. if ("SJCK".equals(fBilltype)) {
  2922. fees.setfBillingDeadline(fBsdate);
  2923. } else {
  2924. fees.setfBillingDeadline(warehouseBills.getfBillingDeadline());
  2925. }
  2926. fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
  2927. fees.setfOriginalbilldate((Date) item.get("fOriginalbilldate"));
  2928. fees.setfBillingway(Long.valueOf(String.valueOf(item.get("fBillingway"))).longValue());
  2929. tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
  2930. itemsList.add(fees);
  2931. }
  2932. map.put("sumAmt", sumAmt);
  2933. map.put("itemsList", itemsList);
  2934. return map;
  2935. }
  2936. /**
  2937. * 新增库存费计算
  2938. *
  2939. * @param tWarehouseBills 主表的查询条件
  2940. * @param loginUser 登录用户
  2941. * @param billsType 状态
  2942. * @return 结果
  2943. */
  2944. @Override
  2945. @Transactional
  2946. public AjaxResult calculateStorageFees(TWarehouseBills tWarehouseBills, LoginUser loginUser, String billsType) {
  2947. if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
  2948. return AjaxResult.error("请选择客户信息");
  2949. }
  2950. long fPid = 0L;
  2951. if (StringUtils.isNull(tWarehouseBills.getfId())) {
  2952. // 生成流水号
  2953. Date time = new Date();
  2954. String billNo = billnoSerialServiceImpl.getSerialNumber("JSCCF", time);
  2955. tWarehouseBills.setfBillno(billNo);
  2956. if (StringUtils.isNull(tWarehouseBills.getfBillstatus())) {
  2957. tWarehouseBills.setfBillstatus(2L);
  2958. }
  2959. tWarehouseBills.setfBilltype(billsType);
  2960. tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  2961. tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
  2962. tWarehouseBills.setCreateTime(new Date());
  2963. tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
  2964. fPid = tWarehouseBills.getfId();
  2965. } else {
  2966. tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId());
  2967. tWarehousebillsitemsMapper.deleteByFPid(tWarehouseBills.getfId());
  2968. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  2969. tWarehouseBills.setUpdateTime(new Date());
  2970. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  2971. fPid = tWarehouseBills.getfId();
  2972. }
  2973. // 计划物资明细
  2974. List<TWarehousebillsfees> itemsList = new ArrayList<>();
  2975. BigDecimal bigDecimal = new BigDecimal(0);
  2976. Map<String, Object> map = new HashMap<>();
  2977. // 库存总账id
  2978. long whgenlegFeeId = 0;
  2979. // 计费单位
  2980. long feeUnitid = 1;
  2981. // 查询 出库 货转的库存明细
  2982. List<Map<String, Object>> warehousebillsitemsList = tWarehousebillsitemsMapper.selectStorageFeeItemList(tWarehouseBills);
  2983. if (warehousebillsitemsList.size() != 0) {
  2984. Map<String, Object> mapItem = getWarehouseItems(tWarehouseBills, warehousebillsitemsList, loginUser);
  2985. if (mapItem.containsKey("error")) {
  2986. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2987. return AjaxResult.error((String) mapItem.get("error"));
  2988. }
  2989. itemsList = (List<TWarehousebillsfees>) mapItem.get("itemsList");
  2990. }
  2991. List<Map<String, Object>> tWhgenlegs = tWhgenlegMapper.selectStorageFeeItemList(tWarehouseBills);
  2992. if (tWhgenlegs.size() != 0) {
  2993. Map<String, Object> mapItem = getWarehouseItems(tWarehouseBills, tWhgenlegs, loginUser);
  2994. if (mapItem.containsKey("error")) {
  2995. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2996. return AjaxResult.error((String) mapItem.get("error"));
  2997. }
  2998. List<TWarehousebillsfees> itemList = (List<TWarehousebillsfees>) mapItem.get("itemsList");
  2999. if (itemList.size() != 0) {
  3000. for (TWarehousebillsfees ite : itemList) {
  3001. itemsList.add(ite);
  3002. }
  3003. }
  3004. }
  3005. TFees tFees = new TFees();
  3006. tFees.setfStatus("2");
  3007. tFees.setDelFlag("0");
  3008. List<TFees> feesList = tFeesMapper.selectTFeesList(tFees);
  3009. if (itemsList.size() <= 0) {
  3010. return AjaxResult.error("未找到合适的库存明细");
  3011. }
  3012. map.put("feesList", feesList);
  3013. map.put("warehouseBills", tWarehouseBills);
  3014. map.put("warehouseItemList", itemsList);
  3015. return AjaxResult.success(map);
  3016. }
  3017. /**
  3018. * 仓储费计算提交以及暂存
  3019. *
  3020. * @param warehouseBills
  3021. * @param warehouseItems
  3022. * @param warehouseFees
  3023. * @param loginUser
  3024. * @param billsType
  3025. * @return
  3026. */
  3027. @Override
  3028. @Transactional
  3029. public AjaxResult insertStorageFee(String warehouseBills, String warehouseItems, String warehouseFees, LoginUser loginUser, String billsType) {
  3030. TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  3031. long fPid = 0L;
  3032. boolean billstatus = tWarehousebills.getfBillstatus().equals(4L);
  3033. if (billstatus && (StringUtils.isNull(warehouseItems) || "[]".equals(warehouseItems))) {
  3034. return AjaxResult.error("未找到计费物资明细无法提交");
  3035. }
  3036. /*if (billstatus && (StringUtils.isNull(warehouseFees) || "[]".equals(warehouseFees))) {
  3037. return AjaxResult.error("未找到应收款明细无法提交");
  3038. }*/
  3039. if (StringUtils.isNotNull(tWarehousebills.getfId())) {
  3040. fPid = tWarehousebills.getfId();
  3041. tWarehousebills.setUpdateTime(new Date());
  3042. tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());
  3043. tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  3044. tWarehousebillsfeesMapper.deleteByFPid(fPid);
  3045. tWarehousebillsitemsMapper.deleteByFPid(fPid);
  3046. } else {
  3047. // 生成流水号
  3048. Date time = new Date();
  3049. String billNo = billnoSerialServiceImpl.getSerialNumber("JSCCF", time);
  3050. tWarehousebills.setfBillno(billNo);
  3051. tWarehousebills.setfDeptid(loginUser.getUser().getDeptId());
  3052. tWarehousebills.setfBsdeptid(loginUser.getUser().getDeptId());
  3053. tWarehousebills.setCreateBy(loginUser.getUser().getUserName());
  3054. tWarehousebills.setCreateTime(new Date());
  3055. tWarehousebills.setfBilltype(billsType);
  3056. tWarehouseBillsMapper.insertTWarehousebills(tWarehousebills);
  3057. fPid = tWarehousebills.getfId();
  3058. }
  3059. JSONArray warehouseJSON = JSONArray.parseArray(warehouseItems);
  3060. List<TWarehousebillsfees> itemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsfees.class);
  3061. for (TWarehousebillsfees item : itemsList) {
  3062. item.setfId(null);
  3063. item.setSrcBillNo(tWarehousebills.getfBillno());
  3064. item.setfPid(fPid);
  3065. item.setfBillstatus(tWarehousebills.getfBillstatus());
  3066. tWarehousebillsfeesMapper.insertTWarehousebillsfees(item);
  3067. }
  3068. if (StringUtils.isNotNull(warehouseFees) && !"[]".equals(warehouseFees)) {
  3069. JSONArray feesJSON = JSONArray.parseArray(warehouseFees);
  3070. List<TWarehousebillsfees> warehousebillsfeesList = JSONObject.parseArray(feesJSON.toJSONString(), TWarehousebillsfees.class);
  3071. for (TWarehousebillsfees fees : warehousebillsfeesList) {
  3072. fees.setfId(null);
  3073. fees.setfPid(fPid);
  3074. fees.setfDc("D");
  3075. fees.setfBilltype("JSCCF");
  3076. fees.setSrcBillNo(tWarehousebills.getfBillno());
  3077. fees.setfBillstatus(tWarehousebills.getfBillstatus());
  3078. tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
  3079. }
  3080. }
  3081. if (billstatus) {
  3082. String key = "warehouse.storageFeeCalculation.ApprovalFlow";
  3083. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  3084. if (StringUtils.isNull(sysConfig)) {
  3085. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3086. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  3087. }
  3088. if ("0".equals(sysConfig.getConfigValue())) {
  3089. AuditItems auditItems = new AuditItems();
  3090. auditItems.setLevelId(0L);
  3091. auditItems.setBillId(fPid);
  3092. auditItems.setActId(150L);
  3093. auditItems.setIffinalItem("F");
  3094. auditItems.setBillNo(tWarehousebills.getfBillno());
  3095. // 存储委托方(货权方)
  3096. auditItems.setRefno1(tWarehousebills.getfCorpid() + "");
  3097. // 存储业务类型(业务类型)
  3098. auditItems.setRefno2(tWarehousebills.getfBilltype());
  3099. // 存储提单号(提单号)
  3100. auditItems.setRefno3(tWarehousebills.getfMblno());
  3101. auditItems.setSendUserId(loginUser.getUser().getUserId());
  3102. auditItems.setSendName(loginUser.getUsername());
  3103. auditItems.setSendTime(new Date());
  3104. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  3105. auditItems.setAuditItem(new Date());
  3106. auditItems.setAuditOpTime(new Date());
  3107. auditItems.setAuditMsg("提交");
  3108. auditItems.setAuditStatus("O");
  3109. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  3110. String code = approvalFlow.get("code").toString();
  3111. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  3112. if ("500".equals(code)) {
  3113. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3114. }
  3115. return approvalFlow;
  3116. } else {
  3117. AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
  3118. String code = ajaxResult.get("code").toString();
  3119. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  3120. if ("500".equals(code)) {
  3121. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3122. }
  3123. return ajaxResult;
  3124. }
  3125. }
  3126. return AjaxResult.success(tWarehousebills);
  3127. }
  3128. /**
  3129. * 根据id查询仓储费计算信息
  3130. *
  3131. * @param fId
  3132. * @return
  3133. */
  3134. @Override
  3135. public AjaxResult selectStorageFeeById(Long fId) {
  3136. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  3137. if (StringUtils.isNull(tWarehouseBills)) {
  3138. return AjaxResult.error("未找到信息,请刷新页面重试");
  3139. }
  3140. Map<String, Object> map = new HashMap<>();
  3141. List<TWarehousebillsfees> feesList = new ArrayList<>();
  3142. List<TWarehousebillsfees> itemsList = new ArrayList<>();
  3143. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  3144. warehousebillsfees.setfPid(fId);
  3145. List<TWarehousebillsfees> warehouseFeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  3146. for (TWarehousebillsfees fees : warehouseFeesList) {
  3147. if (StringUtils.isNotNull(fees.getSrcId())) {
  3148. itemsList.add(fees);
  3149. } else {
  3150. feesList.add(fees);
  3151. }
  3152. }
  3153. TGoods tGoods = new TGoods();
  3154. tGoods.setfStatus("0");
  3155. tGoods.setDelFlag("0");
  3156. List<TGoods> goods = tGoodsMapper.selectTGoodsList(tGoods);
  3157. TFees tFees = new TFees();
  3158. tFees.setfStatus("2");
  3159. tFees.setDelFlag("0");
  3160. List<TFees> feesLists = tFeesMapper.selectTFeesList(tFees);
  3161. // 查询联系人
  3162. List<SysUser> sysUserList = new ArrayList<>();
  3163. SysUser sysUser = sysUserMapper.selectUserByUserName(tWarehouseBills.getCreateBy());
  3164. if (StringUtils.isNotNull(sysUser)) {
  3165. sysUserList.add(sysUser);
  3166. }
  3167. TCorps corps = tCorpsMapper.selectTCorpsById(tWarehouseBills.getfCorpid());
  3168. map.put("corps", corps);
  3169. map.put("goodsList", goods);
  3170. map.put("feesList", feesLists);
  3171. map.put("sysUser", sysUserList);
  3172. map.put("warehouse", tWarehouseBills);
  3173. map.put("warehouseFeesList", feesList);
  3174. map.put("warehouseItemsList", itemsList);
  3175. return AjaxResult.success(map);
  3176. }
  3177. /**
  3178. * 根据不同计费单位获取不同 计算库存明细数量
  3179. *
  3180. * @param item 库存明细
  3181. * @param dictLabel 计费单位
  3182. * @return 结果
  3183. */
  3184. public BigDecimal acquiredQuantity(Map<String, Object> item, Long dictLabel) {
  3185. BigDecimal fQty = new BigDecimal(0);
  3186. // 件数
  3187. long boxNum = 1;
  3188. // 毛重
  3189. long grossWeight = 2;
  3190. // 净重
  3191. long netWeight = 3;
  3192. // 尺码
  3193. long size = 4;
  3194. // 统一
  3195. long fixed = 5;
  3196. if (dictLabel.equals(boxNum)) {
  3197. fQty = new BigDecimal(((Number) item.get("fQty")).doubleValue());
  3198. return fQty.setScale(2, BigDecimal.ROUND_HALF_UP);
  3199. } else if (dictLabel.equals(grossWeight)) {
  3200. fQty = new BigDecimal(((Number) item.get("fGrossweight")).doubleValue());
  3201. } else if (dictLabel.equals(netWeight)) {
  3202. fQty = new BigDecimal(((Number) item.get("fNetweight")).doubleValue());
  3203. } else if (dictLabel.equals(size)) {
  3204. fQty = new BigDecimal(((Number) item.get("fVolumn")).doubleValue());
  3205. } else if (dictLabel.equals(fixed)) {
  3206. fQty = new BigDecimal(1);
  3207. }
  3208. //return fQty.setScale(2, BigDecimal.ROUND_HALF_UP);
  3209. // 结果值除以1000 保留两位
  3210. BigDecimal divisor = new BigDecimal("1000");
  3211. BigDecimal result = fQty.divide(divisor, 2, BigDecimal.ROUND_HALF_UP);
  3212. return result;
  3213. }
  3214. // 入库 收费明细 校验
  3215. public Long check(BigDecimal number, BigDecimal unitPrice) {
  3216. BigDecimal result1 = number.multiply(unitPrice);
  3217. // 保留两位小数且四舍五入
  3218. result1 = result1.setScale(2, BigDecimal.ROUND_HALF_UP);
  3219. // 转换去掉小数点
  3220. String result = result1.toString().replace(".", "");
  3221. return Long.valueOf(result);
  3222. }
  3223. /**
  3224. * 修改详情主表
  3225. *
  3226. * @param tWarehousebills 详情主表
  3227. * @return 结果
  3228. */
  3229. @Override
  3230. public int updateTWarehousebills(TWarehouseBills tWarehousebills) {
  3231. tWarehousebills.setUpdateTime(DateUtils.getNowDate());
  3232. return tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  3233. }
  3234. /**
  3235. * 批量删除详情主表
  3236. *
  3237. * @param fIds 需要删除的详情主表ID
  3238. * @return 结果
  3239. */
  3240. @Override
  3241. public int deleteTWarehousebillsByIds(Long[] fIds) {
  3242. // 取出业务编号、 放入 billno_del
  3243. for (Long id : fIds) {
  3244. // 1、查询主表信息
  3245. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(id);
  3246. // 2、业务编号、客存编号 放入 billno_del
  3247. BillnoDel billnoDel = new BillnoDel();
  3248. billnoDel.setBillType(tWarehousebills.getfBilltype());
  3249. billnoDel.setBillNo(tWarehousebills.getfBillno());
  3250. billnoDelMapper.insertBillnoDel(billnoDel);
  3251. }
  3252. return tWarehouseBillsMapper.deleteTWarehousebillsByIds(fIds);
  3253. }
  3254. @Override
  3255. public int deleteTWarehousebills(Long[] fIds) {
  3256. // 取出业务编号、 放入 billno_del
  3257. for (Long id : fIds) {
  3258. // 1、查询主表信息
  3259. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(id);
  3260. // 2、业务编号、客存编号 放入 billno_del
  3261. BillnoDel billnoDel = new BillnoDel();
  3262. billnoDel.setBillType(tWarehousebills.getfBilltype());
  3263. billnoDel.setBillNo(tWarehousebills.getfBillno());
  3264. billnoDelMapper.insertBillnoDel(billnoDel);
  3265. }
  3266. return tWarehouseBillsMapper.deleteKHTWarehousebillsByIds(fIds);
  3267. }
  3268. @Override
  3269. public AjaxResult queryRemove(Long fId) {
  3270. // 查询主表明细
  3271. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  3272. // 查询仓库明细从表数据
  3273. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  3274. tWarehousebillsitems.setfPid(tWarehousebills.getfId());
  3275. List<Map<String, Object>> mapList = tWarehousebillsitemsMapper.selectGoodsTransferitemsList(tWarehousebillsitems);
  3276. // 查询仓库费用明细表数据
  3277. TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees();
  3278. tWarehousebillsfees.setfPid(tWarehousebills.getfId());
  3279. List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees);
  3280. // 查询附件表数据
  3281. TEnclosure enclosure = new TEnclosure();
  3282. enclosure.setfPid(tWarehousebills.getfId());
  3283. List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
  3284. if (StringUtils.isNull(tWarehousebills)) {
  3285. return AjaxResult.success("0");
  3286. } else if (StringUtils.isNotNull(tWarehousebills)
  3287. && StringUtils.isEmpty(warehousebillsfees)
  3288. && StringUtils.isEmpty(enclosures)
  3289. && StringUtils.isEmpty(mapList)) {
  3290. return AjaxResult.success("1");
  3291. } else {
  3292. return AjaxResult.success("2");
  3293. }
  3294. }
  3295. /**
  3296. * 删除详情主表信息
  3297. *
  3298. * @param fId 详情主表ID
  3299. * @return 结果
  3300. */
  3301. @Override
  3302. public int deleteTWarehousebillsById(Long fId) {
  3303. return tWarehouseBillsMapper.deleteTWarehousebillsById(fId);
  3304. }
  3305. @Override
  3306. public String getWarehouseInStockBillsNo(TWarehouseBills tWarehouseBills) {
  3307. return null;
  3308. }
  3309. @Override
  3310. public String getWarehouseOutStockBillsNo(TWarehouseBills tWarehouseBills) {
  3311. return null;
  3312. }
  3313. /**
  3314. * 撤销入库
  3315. *
  3316. * @param fId
  3317. * @param loginUser
  3318. * @param billsType
  3319. * @return
  3320. */
  3321. @Override
  3322. @Transactional
  3323. public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType) {
  3324. // 查询 仓库主表信息、库存明细信息
  3325. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  3326. // 修改主表信息
  3327. tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());
  3328. tWarehousebills.setUpdateTime(new Date());
  3329. tWarehousebills.setfBillstatus(2L); //撤销状态
  3330. tWarehousebills.setfReviewDate(null);// 审核通过时间清空
  3331. tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  3332. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(tWarehousebills.getfId(), 2L, new Date());
  3333. if ("JSCCF".equals(tWarehousebills.getfBilltype())) {
  3334. List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(fId);
  3335. for (TWarehousebillsfees wareItem : feesList) {
  3336. if (StringUtils.isNull(wareItem.getSrcId())) {
  3337. continue;
  3338. }
  3339. if ("KCZZ".equals(wareItem.getfBilltype())) {
  3340. TWhgenleg whgenleg = new TWhgenleg();
  3341. whgenleg.setfId(wareItem.getSrcId());
  3342. whgenleg.setfChargedate(wareItem.getfChargedate());
  3343. int i = tWhgenlegMapper.updateTWhgenleg(whgenleg);
  3344. if (i <= 0) {
  3345. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3346. return AjaxResult.error("更新库存费用状态失败,请联系管理员");
  3347. }
  3348. } else {
  3349. TWarehousebillsitems billsItem = new TWarehousebillsitems();
  3350. billsItem.setfId(wareItem.getSrcId());
  3351. billsItem.setfBilltype(wareItem.getfBilltype());
  3352. if (!"SJCK".equals(wareItem.getfBilltype())) {
  3353. billsItem.setfChargedate(wareItem.getfBillingDeadline());
  3354. tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
  3355. } else {
  3356. billsItem.setfChargedate(wareItem.getfChargedate());
  3357. }
  3358. tWarehousebillsitemsMapper.agreementApprovalRejected(billsItem);
  3359. }
  3360. }
  3361. }
  3362. return AjaxResult.success();
  3363. }
  3364. /**
  3365. * 撤销入账
  3366. *
  3367. * @param warehouseBills 主表
  3368. * @param warehousebillsitems 明细
  3369. * @param loginUser 当前登录人
  3370. * @param billsType 状态
  3371. * @return 结果
  3372. */
  3373. @Override
  3374. @Transactional
  3375. public AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, String tEnclosure,
  3376. String warehousebillsfeesCr, String warehousebillsfeesDr, LoginUser loginUser, String tCntr, String billsType) {
  3377. if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
  3378. return AjaxResult.error("未找到主表信息");
  3379. }
  3380. if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
  3381. return AjaxResult.error("未找到入账信息");
  3382. }
  3383. TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  3384. tWarehousebills.setfItemsStatus(1L); //撤销状态
  3385. tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  3386. tEnclosureMapper.deleteByFPid(tWarehousebills.getfId());
  3387. tWarehousebillsfeesMapper.deleteByFPid(tWarehousebills.getfId());
  3388. tWarehousebillsCntrMapper.deleteTWarehousebillsCntrfPid(tWarehousebills.getfId());
  3389. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  3390. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  3391. /**
  3392. * 流水号回收
  3393. * 1、 获取所有流水号
  3394. */
  3395. List<String> SerialNumberList = new ArrayList<>();
  3396. if (StringUtils.isNotEmpty(warehousebillsitemsList)) {
  3397. int i = 1;
  3398. for (TWarehousebillsitems wb : warehousebillsitemsList) {
  3399. SerialNumberList.add(wb.getfSerialNumber()); // 流水号回收
  3400. // 查询库存总账
  3401. TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);
  3402. if ("SJRKRevoke".equals(billsType)) { // 撤销 入库
  3403. if (wb.getfIsInventory().equals(0L)) {
  3404. if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数
  3405. updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
  3406. } else { // 撤销数>结余数
  3407. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3408. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  3409. }
  3410. }
  3411. wb.setfBillstatus(10L);
  3412. } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库
  3413. if (StringUtils.isNotNull(tWhgenle)) { // 非空
  3414. updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
  3415. } else {
  3416. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3417. return AjaxResult.error("第" + i + "行未查询到库存信息");
  3418. }
  3419. wb.setfBillstatus(10L);
  3420. } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销
  3421. Long warehouselocid = wb.getfWarehouselocid();// 原货仓库
  3422. Long transferWarehouselocid = wb.getfTransferWarehouselocid(); // 新仓库
  3423. // 1、新货权方撤销入库
  3424. // 查询库存总账
  3425. wb.setfWarehouselocid(transferWarehouselocid);
  3426. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
  3427. if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
  3428. updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
  3429. } else {
  3430. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3431. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  3432. }
  3433. // 2、原货权方撤销出库
  3434. // 查询库存总账
  3435. wb.setfWarehouselocid(warehouselocid);
  3436. TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
  3437. updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
  3438. wb.setfBillstatus(10L);
  3439. } else if ("HWTGRevoke".equals(billsType)) { // 调拨 撤销
  3440. // 贸易方式
  3441. Long oldfTrademodeid = tWarehousebills.getfTrademodeid();
  3442. // 新贸易方式
  3443. Long newfTrademodeid = tWarehousebills.getfNewTrademodeid();
  3444. Long warehouselocid = wb.getfWarehouselocid();// 原货仓库
  3445. Long transferWarehouselocid = wb.getfTransferWarehouselocid(); // 新仓库
  3446. // 1、新货权方撤销入库
  3447. // 查询库存总账
  3448. wb.setfWarehouselocid(transferWarehouselocid);
  3449. tWarehousebills.setfTrademodeid(newfTrademodeid); // 查询用新的
  3450. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
  3451. if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
  3452. updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
  3453. } else {
  3454. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3455. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  3456. }
  3457. // 2、原货权方撤销出库
  3458. // 查询库存总账
  3459. wb.setfWarehouselocid(warehouselocid);
  3460. tWarehousebills.setfTrademodeid(oldfTrademodeid); // 撤销回到旧的
  3461. TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
  3462. updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
  3463. wb.setfBillstatus(10L);
  3464. } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销
  3465. Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
  3466. Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
  3467. // 1、新货权方撤销入库
  3468. // 查询库存总账
  3469. tWarehousebills.setfCorpid(fTocorpid);
  3470. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
  3471. if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
  3472. updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
  3473. } else {
  3474. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3475. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  3476. }
  3477. // 2、原货权方撤销出库
  3478. // 查询库存总账
  3479. tWarehousebills.setfCorpid(fCorpid);
  3480. TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
  3481. updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
  3482. wb.setfBillstatus(1L);
  3483. }
  3484. i++;
  3485. wb.setUpdateBy(loginUser.getUser().getUserName());
  3486. wb.setUpdateTime(new Date());
  3487. wb.setfSerialNumber(null);
  3488. if (tWarehousebillsitemsMapper.updateTWarehousebillsitems(wb) <= 0) {
  3489. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3490. return AjaxResult.error("新增库存明细失败");
  3491. }
  3492. }
  3493. }
  3494. /**
  3495. * 流水号回收
  3496. * 2、 流水号去重
  3497. * 3、 添加到 billno_del
  3498. */
  3499. List<String> serialNumberNewList = delRepeat(SerialNumberList);
  3500. serialNumberNewList.forEach(item -> {
  3501. BillnoDel billnoDel = new BillnoDel();
  3502. billnoDel.setBillType(item.substring(0, 2));
  3503. billnoDel.setBillNo(item);
  3504. billnoDelMapper.insertBillnoDel(billnoDel);
  3505. });
  3506. // 箱型数据
  3507. if (StringUtils.isNotNull(tCntr) && !"[]".equals(tCntr)) {
  3508. JSONArray jsonDrArray = JSONArray.parseArray(tCntr);
  3509. List<TWarehousebillsCntr> tWarehousebillsCntrs = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsCntr.class);
  3510. int line = 0;
  3511. for (TWarehousebillsCntr cntr : tWarehousebillsCntrs) {
  3512. line++;
  3513. if (StringUtils.isNull(cntr.getfCntrid()) || StringUtils.isNull(cntr.getfCntrcount()) || cntr.getfCntrcount() == 0) {
  3514. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3515. return AjaxResult.error("箱型数据第"+line+"行数据缺少必填数据");
  3516. }
  3517. cntr.setfPid(tWarehousebills.getfId());
  3518. cntr.setfGoodsid(0L);
  3519. cntr.setfPackageid("0");
  3520. cntr.setfCntrweight(new BigDecimal(0));
  3521. cntr.setCreateBy(loginUser.getUser().getUserName());
  3522. cntr.setCreateTime(new Date());
  3523. tWarehousebillsCntrMapper.insertTWarehousebillsCntr(cntr);
  3524. }
  3525. }
  3526. // 附件添加
  3527. if (StringUtils.isNotEmpty(tEnclosure) && !"[]".equals(tEnclosure)) {
  3528. JSONArray jsonDrArray = JSONArray.parseArray(tEnclosure);
  3529. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  3530. for (TEnclosure enclosure : tEnclosureList) {
  3531. enclosure.setfPid(tWarehousebills.getfId());
  3532. enclosure.setCreateBy(loginUser.getUser().getUserName());
  3533. enclosure.setCreateTime(new Date());
  3534. tEnclosureMapper.insertTEnclosure(enclosure);
  3535. }
  3536. }
  3537. // 收款明细添加
  3538. if (StringUtils.isNotEmpty(warehousebillsfeesDr) && !"[]".equals(warehousebillsfeesDr)) {
  3539. JSONArray jsonDrArray = JSONArray.parseArray(warehousebillsfeesDr);
  3540. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  3541. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  3542. wbDr.setfPid(tWarehousebills.getfId());
  3543. wbDr.setfDc("D");
  3544. wbDr.setCreateBy(loginUser.getUser().getUserName());
  3545. wbDr.setCreateTime(new Date());
  3546. if (tWarehousebills.getfBsdate() != null && !tWarehousebills.getfBsdate().equals("")) {
  3547. wbDr.setfBsdate(tWarehousebills.getfBsdate());
  3548. }
  3549. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  3550. }
  3551. }
  3552. // 付款明细添加
  3553. if (StringUtils.isNotNull(warehousebillsfeesCr) && !"[]".equals(warehousebillsfeesCr)) {
  3554. JSONArray jsonCrArray = JSONArray.parseArray(warehousebillsfeesCr);
  3555. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  3556. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  3557. wbCr.setfPid(tWarehousebills.getfId());
  3558. wbCr.setfDc("C");
  3559. wbCr.setCreateBy(loginUser.getUser().getUserName());
  3560. wbCr.setCreateTime(new Date());
  3561. if (tWarehousebills.getfBsdate() != null && !tWarehousebills.getfBsdate().equals("")) {
  3562. wbCr.setfBsdate(tWarehousebills.getfBsdate());
  3563. }
  3564. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  3565. }
  3566. }
  3567. return AjaxResult.success();
  3568. }
  3569. public static List<String> delRepeat(List<String> list) {
  3570. List<String> myList = list.stream().distinct().collect(Collectors.toList());
  3571. return myList;
  3572. }
  3573. /**
  3574. * 添加 库存明细状态
  3575. *
  3576. * @param wbItem
  3577. * @param status
  3578. * @param loginUser
  3579. */
  3580. public void insertTWarehousebillsLog(TWarehousebillsitems wbItem, Long status, LoginUser loginUser) {
  3581. // 添加状态log
  3582. TWarehousebillsLog tWarehousebillsLog = new TWarehousebillsLog();
  3583. tWarehousebillsLog.setfPid(wbItem.getfPid());
  3584. tWarehousebillsLog.setfItmeid(wbItem.getfId());
  3585. tWarehousebillsLog.setfItmestatus(status);
  3586. tWarehousebillsLog.setCreateTime(new Date());
  3587. tWarehousebillsLog.setCreateBy(loginUser.getUser().getUserName());
  3588. tWarehousebillsLogMapper.insertTWarehousebillsLog(tWarehousebillsLog);
  3589. }
  3590. /**
  3591. * 删除 库存明细
  3592. *
  3593. * @param fid
  3594. * @param tWarehousebillsitems
  3595. */
  3596. public void deleteBillsitems(Long fid, String tWarehousebillsitems) {
  3597. List<Long> oldList = new ArrayList<Long>();
  3598. List<Long> newList = new ArrayList<Long>();
  3599. // 查询所有从表数据
  3600. TWarehousebillsitems tWarehousebillsitem = new TWarehousebillsitems();
  3601. tWarehousebillsitem.setfPid(fid);
  3602. List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitem);
  3603. warehousebillsitemsList.forEach(wb ->
  3604. oldList.add(wb.getfId())
  3605. );
  3606. // 获取提交从表数据ID
  3607. if (tWarehousebillsitems != null) {
  3608. JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
  3609. List<TWarehousebillsitems> warehousebillsitemsLists = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  3610. warehousebillsitemsLists.forEach(wb ->
  3611. newList.add(wb.getfId())
  3612. );
  3613. }
  3614. // 删除多余的ID
  3615. List<Long> reduce1 = oldList.stream().filter(item -> !newList.contains(item)).collect(toList());
  3616. reduce1.forEach(id ->
  3617. tWarehousebillsitemsMapper.deleteTWarehousebillsitemsById(id)
  3618. );
  3619. }
  3620. /**
  3621. * 库容-结余毛重
  3622. *
  3623. * @param fTotalgross
  3624. * @param fGrossweightblc
  3625. * @return
  3626. */
  3627. public static BigDecimal calculation1(String fTotalgross, String fGrossweightblc) {
  3628. BigDecimal num1 = new BigDecimal(fTotalgross);
  3629. BigDecimal num2 = new BigDecimal(fGrossweightblc);
  3630. BigDecimal result = num1.subtract(num2);
  3631. return result.setScale(2, BigDecimal.ROUND_HALF_UP);
  3632. }
  3633. /**
  3634. * 判断 是否允许 入库
  3635. *
  3636. * @param fId
  3637. */
  3638. public int calculation(Long fId, BigDecimal fGrossweight) {
  3639. // 仓库库容
  3640. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(fId);
  3641. // 毛重公斤转化为吨
  3642. fGrossweight = fGrossweight.divide(new BigDecimal(1000), 0, BigDecimal.ROUND_HALF_UP);
  3643. // 总账使用
  3644. List<Map<String, Object>> whouseList = tWhgenlegMapper.selectWareHouseListWhouse(fId);
  3645. if (whouseList != null && whouseList.size() > 0) {
  3646. String fTotalgross = null;
  3647. String fGrossweightblc = null;
  3648. for (Map<String, Object> m : whouseList) {
  3649. for (String k : m.keySet()) {
  3650. // 获取毛重库容
  3651. if (k.equals("fTotalgross")) {
  3652. fTotalgross = m.get(k).toString();
  3653. }
  3654. if (k.equals("fGrossweightD")) {
  3655. fGrossweightblc = m.get(k).toString();
  3656. }
  3657. }
  3658. }
  3659. BigDecimal bd = new BigDecimal(fGrossweightblc);
  3660. fGrossweightblc = bd.divide(new BigDecimal(1000), 0, BigDecimal.ROUND_HALF_UP).toString();
  3661. BigDecimal result = calculation1(fTotalgross, fGrossweightblc);
  3662. if (result.compareTo(fGrossweight) == -1) {
  3663. return 0;// 结余库容小于入库数
  3664. } else {
  3665. return 1;
  3666. }
  3667. } else {
  3668. if (tWarehouse.getfTotalgross() != null) {
  3669. if (tWarehouse.getfTotalgross().compareTo(fGrossweight) == -1) {
  3670. return 0;// 库容小于入库数
  3671. } else {
  3672. return 1;
  3673. }
  3674. } else {
  3675. return 0;// 库容小于入库数
  3676. }
  3677. }
  3678. }
  3679. @Transactional
  3680. public AjaxResult updateKaHeOrder(Long fPid, long fettle,Date auditItem ) {
  3681. if (StringUtils.isNull(fPid)) {
  3682. return AjaxResult.error("协议更新状态未找到主表信息,请与管理员联系");
  3683. }
  3684. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  3685. tWarehouseBills.setfId(fPid);
  3686. tWarehouseBills.setfBillstatus(fettle);
  3687. if (fettle==11L){
  3688. tWarehouseBills.setfReviewDate(auditItem);
  3689. }
  3690. int tFeeUpdateResult = tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  3691. if (tFeeUpdateResult <= 0) {
  3692. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  3693. return AjaxResult.error("更新订单主表状态失败,请联系管理员");
  3694. }
  3695. return AjaxResult.success();
  3696. }
  3697. /**
  3698. * 根据fid获取订单主表信息
  3699. *
  3700. * @param fid
  3701. * @return
  3702. */
  3703. public TWarehouseBills selectKaHeById(Long fid) {
  3704. return tWarehouseBillsMapper.selectTWarehousebillsById(fid);
  3705. }
  3706. }