package com.mandi.fendan.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.Resource; import com.mandi.basicconfig.mapper.NczsjMapper; import com.mandi.basicconfig.persist.Nckh; import com.mandi.fendan.mapper.*; import com.mandi.fendan.util.ConvertTool; import com.mandi.servlet.file.impl.FileLoadImpl; import com.mandi.springmvc.logs.OpLogs; import com.mandi.system.persist.ModuleEnum; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.apache.poi.ss.usermodel.charts.ScatterChartSeries; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mandi.basicconfig.penum.PrefixEnum; import com.mandi.common.BigDecimalfiter; import com.mandi.common.JSONobj; import com.mandi.common.Jacksonmethod; import com.mandi.common.Wxhtmethod; import com.mandi.common.ParamFileter.Fileoperation; import com.mandi.dao.common.ObjectResult; import com.mandi.fendan.persist.Fd_Bsheet; import com.mandi.fendan.persist.Fd_Company; import com.mandi.fendan.persist.Fd_Company_Vehicle; import com.mandi.fendan.persist.Fd_Vehicle; import com.mandi.fendan.persist.Fd_XSTD; import com.mandi.fendan.persist.Fd_XSTDMX; import com.mandi.fendan.persist.Fd_wlgs_fhdq; import com.mandi.fendan.persist.VehicleStatus; import com.mandi.fendan.persist.VehicleType; import com.mandi.fendan.persist.Vehicle_XSTD; import com.mandi.fendan.service.Ifd_bsheetService; import com.mandi.fendan.util.Contants; import com.mandi.fendan.util.FdtoNc; import com.mandi.fendan.util.persist.Serviceenum; import com.mandi.fendan.util.persist.WaitXSTD; import com.mandi.fendan.util.persist.YktBsheet; import com.mandi.system.persist.Login; import com.mandi.system.persist.UserType; import static com.mandi.fendan.util.Contants.*; @Service public class Fd_BsheetService implements Ifd_bsheetService { private Logger log= Logger.getLogger(Fd_BsheetService.class); @Resource private Fd_BsheetMapper bsper; @Resource private Fd_VehicleMapper fdvper; @Resource private Fd_BsheetitemMapper bsiper; @Resource private VehicleXSTDMapper vhxper; @Resource private Fd_CompanyMapper fdcper; @Resource private Fd_ComVehicleMapper cvper; @Resource private Fd_XSTDMXMapper mxper; @Resource private Fd_XSTDMapper tdper; @Resource private Fd_fhdqMapper dqper; @Resource private FdtoNc fdtonc; @Resource private Fd_YKTMapper yktmper; @Resource private FdMxWlgsMapper fdMxWlgsMapper; @Resource private NczsjMapper zsjper; @Override @Transactional(rollbackFor=Exception.class) public ObjectResult<Map<String, Object>> saveFd_Bsheet(String vehicleInfo,String xstdNo, String bsitemlistStr, Login lg) throws Exception { ObjectResult<Map<String, Object>> orr=new ObjectResult<Map<String,Object>>(); if(StringUtils.isEmpty(bsitemlistStr)){ orr.setCode(1); orr.setErrmsg("ä¸šåŠ¡å‚æ•°ä¸ºç©ºï¼Œä¸èƒ½ä¿å˜ï¼"); return orr; } if(lg==null){ orr.setCode(1); orr.setErrmsg("请登录账å·ï¼"); return orr; } if(StringUtils.isBlank(xstdNo)){ orr.setCode(1); orr.setErrmsg("æå•ç¼–å·ä¸ºç©ºï¼"); return orr; } if(UserType.admin.toString().equals(lg.getWorkerno())){ orr.setCode(1); orr.setErrmsg("管ç†å‘˜è´¦å·æ²¡æœ‰åˆ†å•æƒé™ï¼"); return orr; } Fd_Company fdc=fdcper.getByCompanyNo(lg.getDepartno()); if(fdc==null){ orr.setCode(1); orr.setErrmsg("è´¦å·æ²¡æœ‰é…置物æµå…¬å¸,请è”系管ç†å‘˜è¿›è¡Œé…ç½®ï¼"); return orr; } Fd_XSTD xstd=this.tdper.getbyttdbh(xstdNo); if(xstd==null){ orr.setCode(1); orr.setErrmsg("æå•ç¼–å·ï¼š"+xstdNo+" 䏿£ç¡®ï¼ŒæœªæŸ¥è¯¢åˆ°è¯¥æå•ï¼"); return orr; } if(xstd.isTd_zcwcbz()){ orr.setCode(1); orr.setErrmsg("该æå•å·²ç»å®Œæˆè£…车,ä¸èƒ½åˆ†å•ï¼"); return orr; } if(xstd.getTd_wfdsl()<=0){ orr.setCode(1); orr.setErrmsg("该æå•å·²ç»åˆ†å•完æˆï¼Œä¸èƒ½åˆ†å•ï¼"); return orr; } //é€è´§ if(xstd.getTd_ztbz()==2){ if(fdc!=null){ if(!fdc.isHasSPR()){ orr.setCode(1); orr.setErrmsg("è¯¥è´¦å·æ²¡æœ‰è‡ªææƒé™ï¼"); return orr; } } }else{ // Fd_wlgs_fhdq wldq = this.dqper.getbyNos(lg.getDepartno(),xstd.getTd_shddbh(), ConvertTool.ncGetDefault(xstd.getTd_ywdybh())); Fd_wlgs_fhdq wldq = this.dqper.getbyNos(lg.getDepartno(),xstd.getTd_shddbh(), ConvertTool.ncGetDefault(xstd.getTd_cqNo())); int total = fdMxWlgsMapper.selectCountByTdTdls(xstd.getTd_tdls()); if(wldq==null && total == 0){ orr.setCode(1); orr.setErrmsg("è¯¥è´¦å·æ²¡æœ‰é…ç½®è¯¥åœ°åŒºçš„åˆ†å•æƒé™ï¼"); return orr; } } String Rcompany=""; Map<String, Object> mm=this.dqper.getKH(xstd.getTd_khbh()); if(StringUtils.isBlank(xstd.getTd_fpbh())){ if(mm!=null) Rcompany=mm.get("name")==null?"":mm.get("name").toString(); // åˆ¤æ–æ˜¯å¦å˜åœ¨å®¢æˆ· if(mm == null || mm.size() == 0) { // 客户必须å˜åœ¨ï¼Œå¦åˆ™æ— æ³•åˆ†å• orr.setCode(1); orr.setErrmsg("该æå•客户ä¸å˜åœ¨ï¼Œè¯·æ£€æŸ¥æ•°æ®ï¼"); return orr; } }else{ // Rcompany = ConvertTool.covertToCustoms(xstd.getTd_ywdybh()); Rcompany = ConvertTool.covertToCustoms(xstd.getTd_cqNo()); } List<Fd_XSTD> tdl= new ArrayList<Fd_XSTD>(); Map<String, List<Fd_XSTDMX>> mxMp=new HashMap<String, List<Fd_XSTDMX>>(); List<Fd_XSTDMX> mxl=new ArrayList<Fd_XSTDMX>(); //是å¦ä¿å˜ä¸€å¡é€šä¸šåŠ¡å•è¡¨å¤´ä¿¡æ¯ boolean saveBT=false; String bsDE = ConvertTool.ncCovertToYkt(xstd.getTd_cqNo()); String bbsNo=""; String ziti="";//是å¦è‡ªæ // 系统部门未找到 if (StringUtils.isBlank(bsDE)) { orr.setCode(1); orr.setErrmsg("æå•æœªæ‰¾åˆ°ç³»ç»Ÿéƒ¨é—¨å—æ®µï¼Œè¯·é‡æ–°æ“作ï¼"); return orr; } try { JsonParser jp=new JsonParser(); JsonObject vjo=jp.parse(vehicleInfo).getAsJsonObject(); Fd_Vehicle fdv=new Fd_Vehicle(); fdv=JSONobj.getobj(vjo, fdv); String driver=JSONobj.getstring(vjo, "driver"); String phone=JSONobj.getstring(vjo, "phone"); String vehicleId=JSONobj.getstring(vjo, "vehicleId").toUpperCase(); // String IDNum=JSONobj.getstring(vjo, "IDNum"); fdv.setVehicleId(vehicleId); if(StringUtils.isEmpty(fdv.getVehicleId())||StringUtils.isEmpty(fdv.getDriver())||StringUtils.isEmpty(fdv.getIDNum())||StringUtils.isEmpty(fdv.getPhone())){ orr.setCode(1); orr.setErrmsg("车辆必填项ä¸èƒ½ä¸ºç©ºï¼"); return orr; } Fd_Vehicle fdv1=this.fdvper.getByVehicleId(fdv.getVehicleId()); if(fdv1==null){ fdv.setCompanyNo(lg.getDepartno()); fdv.setId(UUID.randomUUID()+""); fdv.setNote(""); fdv.setState(true); fdv.setStatus(VehicleStatus.å·²é…车); fdv.setType(VehicleType.临时车); fdvper.insert(fdv); }else{ if(fdv1.getType()==VehicleType.临时车){ fdv.setDriver(fdv.getDriver()); fdv.setPhone(fdv.getPhone()); fdv.setIDNum(fdv.getIDNum()); fdvper.update(fdv1); } } // xstd.getTd_ywdybh().equals(Contants.zzywdyNo)?Contants.zzSdepartNo:Contants.kjSdepartNo Fd_Bsheet fb=this.bsper.getbyVehicleId(fdv.getVehicleId(), Serviceenum.在办,bsDE); if(fb==null){ JsonObject pfob=Wxhtmethod.postJsonStr(Contants.YKTgetPrefix_url,PrefixEnum.productsale.toString()); ObjectResult<String> pfor=new ObjectResult<String>(); String bsNo=JSONobj.getstring(pfob, "item"); int code=JSONobj.getint(pfob, "code"); String errmsg=JSONobj.getstring(pfob, "errmsg"); pfor.setCode(code); pfor.setErrmsg(errmsg); pfor.setItem(bsNo); if(pfor==null||pfor.getCode()!=0){ throw new Exception(pfor.getErrmsg()); } fb=new Fd_Bsheet(); fb.setBsNo(pfor.getItem()); fb.setCompanyName(lg.getDepartname()); fb.setCompanyNo(lg.getDepartno()); fb.setCreateid(lg.getUserid()); fb.setCreateName(lg.getWorkername()); fb.setCtime(new Date()); fb.setDriver(driver); fb.setFdsheetNo(pfor.getItem()); fb.setId(UUID.randomUUID()+""); fb.setPhone(phone); fb.setSendmsg(false); fb.setStatus(Serviceenum.在办); fb.setVehicleId(fdv.getVehicleId()); fb.setSdepartNo(bsDE); fb.setUpdateTime(new Date()); this.bsper.insert(fb); saveBT=true; }else{ fb.setDriver(driver); fb.setPhone(phone); fb.setUpdateTime(new Date()); this.bsper.update(fb); } Fd_Company_Vehicle fdcv=cvper.getbyIDs(fdv.getVehicleId(), lg.getDepartno(),bsDE); if(fdcv==null){ fdcv=new Fd_Company_Vehicle(); fdcv.setCompanyNo(lg.getDepartno()); fdcv.setVehicleId(fdv.getVehicleId()); fdcv.setSdepartNo(bsDE); cvper.insertIDs(fdcv); } // if(StringUtils.isBlank(fb.getSdepartNo())){ // if(xstd.getTd_ywdybh().equals(Contants.zzywdyNo)){ // this.bsper.updatesdepartNo(fb.getId(), Contants.zzSdepartNo); // fb.setSdepartNo(Contants.zzSdepartNo); // Fd_Company_Vehicle fdcv=cvper.getbyIDs(fdv.getVehicleId(), lg.getDepartno(),Contants.zzSdepartNo); // if(fdcv==null){ // fdcv=new Fd_Company_Vehicle(); // fdcv.setCompanyNo(lg.getDepartno()); // fdcv.setVehicleId(fdv.getVehicleId()); // fdcv.setSdepartNo(Contants.zzSdepartNo); // cvper.insertIDs(fdcv); // } // }else{ // this.bsper.updatesdepartNo(fb.getId(), Contants.kjSdepartNo); // fb.setSdepartNo(Contants.kjSdepartNo); // Fd_Company_Vehicle fdcv=cvper.getbyIDs(fdv.getVehicleId(), lg.getDepartno(),Contants.kjSdepartNo); // if(fdcv==null){ // fdcv=new Fd_Company_Vehicle(); // fdcv.setCompanyNo(lg.getDepartno()); // fdcv.setVehicleId(fdv.getVehicleId()); // fdcv.setSdepartNo(Contants.kjSdepartNo); // cvper.insertIDs(fdcv); // } // } // } if(StringUtils.isBlank(ziti)){ ziti=xstd.getTd_ztbz()==2?"自æ":"éžè‡ªæ"; } // if(StringUtils.isBlank(fb.getSdepartNo())){ // throw new Exception("生æˆçš„分å•业务å•:"+fb.getFdsheetNo()+"厂区未找到ï¼"); // } //郑州 // if(fb.getSdepartNo().equals(Contants.zzSdepartNo)){ // if(!xstd.getTd_ywdybh().equals(Contants.zzywdyNo)){ //// throw new Exception("车辆生æˆçš„æ˜¯éƒ‘州厂区一å¡é€šä¸šåŠ¡å•,科技æå•:"+xstd.getTd_tdbh()+"ä¸èƒ½é…车ï¼"); // if(saveBT){ // throw new Exception("科技厂区æå•和郑州厂区æå•ä¸èƒ½åŒæ—¶ä½¿ç”¨åŒä¸€è¾†è½¦ï¼"); // }else{ // throw new Exception(fb.getVehicleId()+" 有郑州厂区一å¡é€šé”€å”®ä¸šåŠ¡å•,科技æå•:"+xstd.getTd_tdbh()+"ä¸èƒ½ä½¿ç”¨è¯¥è½¦ï¼"); // } // } // }else{ // if(xstd.getTd_ywdybh().equals(Contants.zzywdyNo)){ //// throw new Exception("车辆生æˆçš„æ˜¯ç§‘技厂区一å¡é€šä¸šåŠ¡å•,郑州æå•:"+xstd.getTd_tdbh()+"ä¸èƒ½é…车ï¼"); // if(saveBT){ // throw new Exception("科技厂区æå•和郑州厂区æå•ä¸èƒ½åŒæ—¶ä½¿ç”¨åŒä¸€è¾†è½¦ï¼"); // }else{ // throw new Exception(fb.getVehicleId()+" 有科技厂区一å¡é€šé”€å”®ä¸šåŠ¡å•,郑州æå•:"+xstd.getTd_tdbh()+"ä¸èƒ½ä½¿ç”¨è¯¥è½¦ï¼"); // } // } // } JsonArray ja=jp.parse(bsitemlistStr).getAsJsonArray(); //åˆ†å•æ•°é‡å’Œæ¯›é‡ int fdsl=0; double fdmz=0; for (JsonElement je: ja) { JsonObject itemJo=je.getAsJsonObject(); //主键 String tdmx_tdfl=JSONobj.getstring(itemJo, "tdfl"); Fd_XSTDMX tdmx=this.mxper.get(tdmx_tdfl); //未找到的过滤掉 已分å•的过滤掉 已装车的ä¸å¤„ç† if(tdmx==null||tdmx.getTdmx_fdbz()!=0||tdmx.getTdmx_zcbz()!=0){ continue; } //关闿 ‡å¿—ä¸ä¸º0ä¸åšå¤„ç† if(tdmx.getTdmx_gbbz()!=0){ continue; } fdsl++; fdmz=BigDecimalfiter.addscal(fdmz, tdmx.getTdmx_mz(), Contants.scale); tdmx.setTdmx_fdbz(1); tdmx.setTdmx_fdcph(fdv.getVehicleId()); tdmx.setTdmx_fdywbh(fb.getBsNo()); tdmx.setTdmx_fdwlgsbh(lg.getDepartno()); this.mxper.updateFD(tdmx); mxl.add(tdmx); } Vehicle_XSTD vhxstd=this.vhxper.getbyIDs(fdv.getVehicleId(), xstdNo,lg.getDepartno()); if(vhxstd==null){ vhxstd=new Vehicle_XSTD(); vhxstd.setBsNo(fb.getBsNo()); vhxstd.setCompanyNo(lg.getDepartno()); vhxstd.setFd_num(fdsl); vhxstd.setFd_weight(fdmz); vhxstd.setVehicleId(fdv.getVehicleId()); vhxstd.setXstdNo(xstdNo); this.vhxper.insert(vhxstd); }else{ vhxstd.setBsNo(fb.getBsNo()); vhxstd.setCompanyNo(lg.getDepartno()); vhxstd.setFd_num(vhxstd.getFd_num()+fdsl); vhxstd.setFd_weight(BigDecimalfiter.add(vhxstd.getFd_weight(),fdmz)); vhxstd.setVehicleId(fdv.getVehicleId()); vhxstd.setXstdNo(xstdNo); this.vhxper.updatewithIDs(vhxstd); } xstd.setTd_wfdsl(xstd.getTd_wfdsl()-fdsl); xstd.setTd_wfdzl(BigDecimalfiter.subscal(xstd.getTd_wfdzl(), fdmz, Contants.scale)); this.tdper.updateFD(xstd); if(saveBT){ YktBsheet bs=new YktBsheet(); // if(iskj==1){ // bs.setSdepartNo(Contants.kjSdepartNo); // bs.setDcompany("明泰科技"); // }else{ // bs.setSdepartNo(Contants.zzSdepartNo); // bs.setDcompany("郑州眀泰"); // } bs.setSdepartNo(fb.getSdepartNo()); /*bs.setDcompany(fb.getSdepartNo().equals(Contants.kjSdepartNo)?"明泰科技": fb.getSdepartNo().equals(Contants.msSdepartNo)?"æ²³å—æ˜Žæ™Ÿæ–°ææ–™": "郑州眀泰" );*/ bs.setDcompany(ConvertTool.covertToFactoryName(fb.getSdepartNo())); bs.setDriver(fdv.getDriver()); bs.setNumberplates(StringUtils.upperCase(fdv.getVehicleId())); bs.setPhone(fdv.getPhone()); bs.setRcompany(Rcompany); bs.setBussinessNo(fb.getBsNo()); bs.setNote(ziti+";"+lg.getDepartname()+":"+lg.getWorkername()+"; 分å•系统自动生æˆ"); String bsStr=Jacksonmethod.tojson(bs, false); bsDE=bs.getSdepartNo(); bbsNo=bs.getBussinessNo(); JsonObject joADDYWD=Wxhtmethod.postJsonStr(Contants.YKTaddYwd_url,bsStr); ObjectResult<String> ors=new ObjectResult<String>(); String bsNo=JSONobj.getstring(joADDYWD, "item"); int code=JSONobj.getint(joADDYWD, "code"); String errmsg=JSONobj.getstring(joADDYWD, "errmsg"); ors.setItem(bsNo); ors.setCode(code); ors.setErrmsg(errmsg); if(ors.getCode()!=0){ throw new Exception(ors.getErrmsg()); } this.bsper.updateShdw(fb.getId(), StringUtils.isBlank(Rcompany)?"未知å‘è´§å•ä½":Rcompany); }else { List<WaitXSTD> l=this.bsper.getAllKH(fb.getBsNo(), fb.getId()); if(l!=null) { boolean iscz=false;//æ”¶è´§å•ä½åœ¨æ˜Žç»†ä¸æ˜¯å¦å˜åœ¨ WaitXSTD wt=null; for (WaitXSTD waitXSTD : l) { if(fb.getShdw().equals(waitXSTD.getTd_khmc())) { iscz=true; break; }else { if(wt==null&&StringUtils.isNotBlank(waitXSTD.getTd_khmc())) { wt=waitXSTD; } } } if(!iscz&&wt!=null) { fb.setShdw(wt.getTd_khmc()); this.yktmper.updateshcompany(fb.getBsNo(), wt.getTd_khmc(),wt.getTd_shdd()); } } } tdl.add(xstd); mxMp.put(xstdNo, mxl); //åˆ†å•æŽ¨é€NC系统 if(tdl!=null&&tdl.size()>0){ String fdhx=this.fdtonc.getNcdata(tdl, mxMp); Fileoperation.AppendContentToFile(Fileoperation.gettestFileName(), "明细é…车 è¯·æ±‚å‚æ•° ::"+fdhx); //todo 先注释掉NC部分,接å£ä¸é€š JsonObject joADDYWD=Wxhtmethod.postJsonStr(Contants.NCfdhx_url,fdhx); Fileoperation.AppendContentToFile(Fileoperation.gettestFileName(), "明细é…车 url返回值 ::"+joADDYWD); if(joADDYWD==null||JSONobj.getint(joADDYWD, "code")!=0){ throw new Exception(StringUtils.isEmpty(joADDYWD.get("msg").getAsString())?"分å•回写NC系统出错ï¼":joADDYWD.get("msg").getAsString()); }else{ String restult=joADDYWD.get("result").getAsString(); JsonObject jr=jp.parse(restult).getAsJsonObject(); if(jr==null||JSONobj.getint(jr, "respcode")!=111){ throw new Exception(jr.get("respmsg").getAsString()); } } } }catch(Exception e){ e.printStackTrace(); if(saveBT){ JsonObject jo=new JsonObject(); jo.addProperty("bussinessNo", bbsNo); jo.addProperty("sdepartNo",bsDE); Wxhtmethod.postJsonStr(Contants.YKTdelYwd_url,jo.toString()); } throw new Exception(StringUtils.isEmpty(e.getMessage())?"æå•明细分å•出错ï¼":e.getMessage()); } orr.setCode(0); Map map = new HashMap<>(); // 返回业务å•å·ï¼Œç»™å‰ç«¯ä½¿ç”¨ map.put("businessNo",bbsNo); orr.setItem(map); return orr; } @Override @Transactional(rollbackFor=Exception.class) public ObjectResult<String> sendMsg(Login lg, String bussinessNo)throws Exception { ObjectResult<String> orr=new ObjectResult<String>(); if(lg==null){ orr.setCode(1); orr.setErrmsg("请登录账å·ï¼"); return orr; } if(UserType.admin.toString().equals(lg.getWorkerno())){ orr.setCode(1); orr.setErrmsg("管ç†å‘˜è´¦å·æ²¡æœ‰åˆ†å•æƒé™ï¼"); return orr; } if(StringUtils.isEmpty(bussinessNo)){ orr.setCode(1); orr.setErrmsg("业务å•傿•°ä¸ºç©ºï¼"); return orr; } Fd_Bsheet fdb=bsper.getbybsNo(bussinessNo); if(fdb==null){ orr.setCode(1); orr.setErrmsg("ä¸šåŠ¡å•æœªæ‰¾åˆ°ï¼"); return orr; } if(fdb.getStatus()!=Serviceenum.在办){ orr.setCode(1); orr.setErrmsg("业务å•䏿˜¯åœ¨åŠžçŠ¶æ€ï¼"); return orr; } JsonObject jos=new JsonObject(); jos.addProperty("bussinessNo", bussinessNo); JsonObject jo=Wxhtmethod.postJsonStr(Contants.YKTsendMsg_url,jos.toString()); if(jo==null||jo.get("code").getAsInt()!=0){ throw new Exception(jo.get("errmsg").getAsString()); } fdb.setSendmsg(true); fdb.setInvitecode(jo.get("item").getAsString()); bsper.updateInvitaCode(fdb); orr.setCode(0); return orr; } }