ComplaintSignclosedInfoServiceImpl.java 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712
  1. package com.iamberry.rst.service.fm;
  2. import com.auth0.jwt.internal.org.apache.commons.lang3.StringUtils;
  3. import com.github.pagehelper.PageHelper;
  4. import com.iamberry.redis.RedisUtils;
  5. import com.iamberry.rst.core.cm.*;
  6. import com.iamberry.rst.core.fm.*;
  7. import com.iamberry.rst.core.order.Product;
  8. import com.iamberry.rst.core.order.ProductColor;
  9. import com.iamberry.rst.core.page.PageRequest;
  10. import com.iamberry.rst.core.page.PagedResult;
  11. import com.iamberry.rst.faces.cm.InventoryService;
  12. import com.iamberry.rst.faces.fm.ComplaintSignclosedInfoService;
  13. import com.iamberry.rst.faces.sms.SmsService;
  14. import com.iamberry.rst.service.cm.mapper.*;
  15. import com.iamberry.rst.service.fm.mapper.*;
  16. import com.iamberry.rst.service.product.mapper.ProductMapper;
  17. import com.iamberry.rst.util.PageUtil;
  18. import com.iamberry.rst.util.ProduceNoUtil;
  19. import com.iamberry.rst.util.SmsConfig;
  20. import net.sf.json.JSONArray;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import java.text.MessageFormat;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. @Service
  30. public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedInfoService {
  31. private Logger logger = LoggerFactory.getLogger(ComplaintSignclosedInfoServiceImpl.class);
  32. @Autowired
  33. private ComplaintSignclosedInfoMapper complaintSignclosedInfoMapper;
  34. @Autowired
  35. private ProductMapper productMapper;
  36. @Autowired
  37. private AwaitingSignclosedProductMapper awaitingSignclosedProductMapper;
  38. @Autowired
  39. private ComplaintSignclosedProductInfoMapper complaintSignclosedProductInfoMapper;
  40. @Autowired
  41. private FittingsInfoMapper fittingsInfoMapper;
  42. @Autowired
  43. private ComplaintDetectInfoMapper complaintDetectInfoMapper;
  44. @Autowired
  45. private CustomerInfoMapper customerInfoMapper;
  46. @Autowired
  47. private InventoryMapper inventoryMapper;
  48. @Autowired
  49. private InventoryLogMapper inventoryLogMapper;
  50. @Autowired
  51. private SmsService smsService;
  52. @Autowired
  53. private InventoryService inventoryService;
  54. @Override
  55. @Transactional
  56. public Integer insert(ComplaintSignclosedInfo record,
  57. String orderItemString,String[] componentsImgs) {
  58. Integer msg = 0;
  59. int num = 0;
  60. Integer signclosedId = null;
  61. Integer flag = 0;
  62. List<ComplaintSignclosedInfo> sinfoList = new ArrayList<>();
  63. //查询是否已存在相同单号
  64. if(record.getSignclosedLogisticsNumber() != null){
  65. ComplaintSignclosedInfo info = new ComplaintSignclosedInfo();
  66. //判断是否是京东
  67. if (record.getSignclosedLogisticsNumber().contains("-")){
  68. //截取-前的内容搜索一次
  69. info.setSignclosedLogisticsNumber(StringUtils.substringBefore(record.getSignclosedLogisticsNumber(), "-"));
  70. sinfoList = complaintSignclosedInfoMapper.listSignclosed(info);
  71. if(sinfoList.size() <= 0){//如果没有搜索到数据,则用完整单号搜索
  72. info.setSignclosedLogisticsNumber(record.getSignclosedLogisticsNumber());
  73. sinfoList = complaintSignclosedInfoMapper.listSignclosed(info);
  74. }
  75. }else{
  76. info.setSignclosedLogisticsNumber(record.getSignclosedLogisticsNumber());
  77. sinfoList = complaintSignclosedInfoMapper.listSignclosed(info);
  78. }
  79. if(sinfoList.size() <= 0){
  80. num = complaintSignclosedInfoMapper.insert(record);
  81. msg = 1;//添加成功
  82. signclosedId = record.getSignclosedId();
  83. }else{
  84. //将签收记录改为已签收
  85. ComplaintSignclosedInfo complaintSignclosedInfo = sinfoList.get(0);
  86. if(complaintSignclosedInfo.getSignclosedIsReceiving() == 1){
  87. complaintSignclosedInfo.setSignclosedIsReceiving(2);
  88. complaintSignclosedInfo.setSignclosedDate(new Date());
  89. complaintSignclosedInfoMapper.updateSignclosedById(complaintSignclosedInfo);
  90. msg = 3;//已存在相同单号的签收信息并修改状态为已签收
  91. signclosedId = complaintSignclosedInfo.getSignclosedId();
  92. }else{
  93. msg = 4;//已存在相同单号的已签收信息
  94. }
  95. }
  96. }
  97. if(num > 0){
  98. if(orderItemString != null){
  99. JSONArray jsonArray = JSONArray.fromObject(orderItemString);
  100. List<SalesOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
  101. for (SalesOrderItem salesOrderItem:salesOrderItemList) {
  102. if(salesOrderItem.getItemNum() > 0 && salesOrderItem.getItemColorId() > 0){
  103. int i = 0;
  104. SignclosedProductInfo signclosedProductInfo = new SignclosedProductInfo();
  105. //根据颜色id获取产品信息获取产品信息
  106. ProductColor productColor = productMapper.getProduceColor(salesOrderItem.getItemColorId());
  107. // Product product = productMapper.getProduce(productColor.getColorProductId());
  108. if(productColor == null){
  109. msg = 2;
  110. }
  111. signclosedProductInfo.setSignclosedId(record.getSignclosedId());
  112. signclosedProductInfo.setProductName(productColor.getProductName());
  113. signclosedProductInfo.setProductNum(salesOrderItem.getItemNum());
  114. signclosedProductInfo.setSignclosedProductType(1);
  115. signclosedProductInfo.setSignclosedProductId(productColor.getColorProductId());
  116. signclosedProductInfo.setSignclosedProductColor(salesOrderItem.getItemColorId());
  117. signclosedProductInfo.setSignclosedCreateTime(new Date());
  118. signclosedProductInfo.setSignclosedState(2);
  119. complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
  120. }
  121. }
  122. }
  123. //添加签收图片
  124. if(componentsImgs != null) {
  125. if (componentsImgs.length > 0) {
  126. for (String componentsImg : componentsImgs) {
  127. ComplaintSignclosedImg complaintSignclosedImg = new ComplaintSignclosedImg();
  128. complaintSignclosedImg.setImgUrl(componentsImg);
  129. complaintSignclosedImg.setSignclosedId(record.getSignclosedId());
  130. complaintSignclosedInfoMapper.insertImg(complaintSignclosedImg);
  131. }
  132. }
  133. }
  134. //没有匹配上并且销售公司为‘优尼雅’,‘上朵’时不展示到待联系列表,并且生成维修信息,状态为‘待完善客户信息’
  135. if(sinfoList.size() <= 0){
  136. if(record.getSignclosedCompanyId() == 3 || record.getSignclosedCompanyId() == 4){
  137. addDet(signclosedId,40);
  138. }
  139. }
  140. //关联客诉/判断是否关联客诉信息
  141. try {
  142. addDetect(record,2);
  143. }catch (Exception e){
  144. throw new RuntimeException("------------关联客诉出错------------");
  145. }
  146. }
  147. // 代签收 - > 已签收 需要入库到售后仓库
  148. if(msg==1 || msg == 3){
  149. List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(signclosedId);
  150. for (SignclosedProductInfo spi:signclosedProductInfoList) {
  151. //增加售后仓库的良品
  152. InventoryInfo inventoryInfo2 = new InventoryInfo();
  153. inventoryInfo2.setInventoryDefectiveProductNum(spi.getProductNum());
  154. inventoryInfo2.setInventoryProductBar(spi.getColorBar());
  155. inventoryInfo2.setWarehouseId(2);
  156. inventoryInfo2.setLogType(3); //售后签收,都是次品
  157. inventoryInfo2.setInventoryRecentRecord("售后签收产品(签收ID:"+spi.getSignclosedId()+")");
  158. flag = inventoryService.addInventory(inventoryInfo2);
  159. if(flag < 1){
  160. throw new RuntimeException("签收失败,更新库存失败。");
  161. }
  162. }
  163. }
  164. return msg;
  165. }
  166. /**
  167. * 关联客诉
  168. * @param record
  169. * type 1新增签收 2客服关联客诉
  170. * @return
  171. */
  172. public int addDetect(ComplaintSignclosedInfo record,Integer type){
  173. CustomerInfo customerInfo = new CustomerInfo();
  174. List<CustomerInfo> listCustomer = new ArrayList<>();
  175. if(record.getSignclosedCustomerId() != null){
  176. customerInfo.setCustomerId(record.getSignclosedCustomerId());
  177. listCustomer = customerInfoMapper.listCustomer(customerInfo);
  178. }else if(record.getSignclosedLogisticsNumber() != null){
  179. //判断是否是京东
  180. if (record.getSignclosedLogisticsNumber().contains("-")){
  181. //截取-前的内容搜索一次
  182. customerInfo.setSendLogisticsNo(StringUtils.substringBefore(record.getSignclosedLogisticsNumber(), "-"));
  183. listCustomer = customerInfoMapper.listCustomer(customerInfo);
  184. if(listCustomer.size() <= 0){//如果没有搜索到数据,则用完整单号搜索
  185. customerInfo.setSendLogisticsNo(record.getSignclosedLogisticsNumber());
  186. listCustomer = customerInfoMapper.listCustomer(customerInfo);
  187. }
  188. }else{
  189. customerInfo.setSendLogisticsNo(record.getSignclosedLogisticsNumber());
  190. listCustomer = customerInfoMapper.listCustomer(customerInfo);
  191. }
  192. }
  193. ComplaintSignclosedInfo sigInfo = complaintSignclosedInfoMapper.getSignclosedById(record.getSignclosedId());
  194. boolean m = false;
  195. if(listCustomer.size() > 0){
  196. customerInfo = listCustomer.get(0);
  197. ComplaintSignclosedInfo signclosedInfo = new ComplaintSignclosedInfo();
  198. if(customerInfo.getSendbackInfoList().size()>0){
  199. for (SendbackInfo info : customerInfo.getSendbackInfoList()){
  200. if(info.getSendbackLogisticsNo() != null){
  201. if(info.getSendbackLogisticsNo().equals(sigInfo.getSignclosedLogisticsNumber())){
  202. m = true;
  203. //修改该寄回信息为已签收
  204. info.setSendbackStatus(3);
  205. customerInfoMapper.updateSendbackInfo(info);
  206. //同步寄回id到签收信息
  207. record.setSendbackId(info.getSendbackId());
  208. complaintSignclosedInfoMapper.updateSignclosedById(record);
  209. }
  210. }
  211. }
  212. }
  213. SendbackInfo info = new SendbackInfo();
  214. if(!m || customerInfo.getSendbackInfoList().size() == 0){
  215. info.setSendbackStatus(3);
  216. info.setSendbackLogisticsCompany(sigInfo.getSignclosedLogistics());
  217. info.setSendbackLogisticsNo(sigInfo.getSignclosedLogisticsNumber());
  218. info.setSendbackName(sigInfo.getSignclosedSendName());
  219. info.setSendbackTel(sigInfo.getSignclosedSendTel());
  220. info.setRelationId(customerInfo.getRelationId());
  221. info.setSendbackSignTime(sigInfo.getSignclosedDate());
  222. List<SendbackItem> list = new ArrayList<>();
  223. if(customerInfoMapper.addSendbackInfo(info) > 0){
  224. //添加寄回产品项
  225. for(SignclosedProductInfo productInfo : sigInfo.getSignclosedProductInfoList()){
  226. SendbackItem sendbackItem = new SendbackItem();
  227. sendbackItem.setSendbackId(info.getSendbackId());
  228. sendbackItem.setSendbackColorId(productInfo.getSignclosedProductColor());
  229. sendbackItem.setSendbackProductId(productInfo.getSignclosedProductId());
  230. sendbackItem.setSendbackProdcueNumber(productInfo.getProductNum());
  231. list.add(sendbackItem);
  232. }
  233. customerInfoMapper.addSendbackItemList(list);
  234. }
  235. }
  236. //同步寄回id到签收信息
  237. signclosedInfo.setSendbackId(info.getSendbackId());
  238. signclosedInfo.setSignclosedCustomerId(customerInfo.getCustomerId());
  239. signclosedInfo.setSignclosedId(record.getSignclosedId());
  240. Integer msg = complaintSignclosedInfoMapper.updateSignclosedById(signclosedInfo);
  241. if(msg == 1){
  242. ComplaintSignclosedInfo infos = complaintSignclosedInfoMapper.getSignclosedById(record.getSignclosedId());
  243. //判断是否需要生成维修记录
  244. if(infos.getSignclosedProductInfoList().size() > 0) {
  245. for (SignclosedProductInfo productInfo : infos.getSignclosedProductInfoList()) {
  246. ProductColor productColor = productMapper.getProduceColor(productInfo.getSignclosedProductColor());
  247. Product product = productMapper.getProduce(productColor.getColorProductId());
  248. if(product.getProductIsDetection() != null){
  249. if (product.getProductIsDetection() == 1) {
  250. for (int j = 0; j < productInfo.getProductNum(); j++) {
  251. //添加待检测信息
  252. //查询签收信息
  253. ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
  254. //生成维修编号
  255. String number = detectNumber();
  256. detectInfo.setDetectNumber(number);
  257. detectInfo.setProductId(productColor.getColorProductId());
  258. detectInfo.setProductColorId(productInfo.getSignclosedProductColor());
  259. detectInfo.setDetectProductNumber(product.getProductNumber());
  260. detectInfo.setDetectState(1);
  261. detectInfo.setCustomerId(infos.getSignclosedCustomerId());
  262. detectInfo.setIsMaintenance(0);
  263. detectInfo.setDetectRenovation(0);
  264. detectInfo.setDetectProcessingResults(0);
  265. detectInfo.setSignclosedId(infos.getSignclosedId());
  266. detectInfo.setDetectSource(1);
  267. Calendar date = Calendar.getInstance();
  268. date.setTime(new Date());
  269. boolean fl = false;
  270. for (int i = 1 ; i <= 3; i++){
  271. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  272. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  273. if(week == 1){
  274. fl = true;
  275. }
  276. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  277. }
  278. if(fl){
  279. date.set(Calendar.DATE, date.get(Calendar.DATE) + 4);
  280. }else{
  281. date.set(Calendar.DATE, date.get(Calendar.DATE) + 3);
  282. }
  283. detectInfo.setMaintenanceCutTime(date.getTime());
  284. try {
  285. complaintDetectInfoMapper.insert(detectInfo);
  286. if(type == 1){//客服关联客诉才发送通知短信
  287. //发送短信通知维修检测人员
  288. String text = MessageFormat.format(SmsConfig.CUSTOMER_CONTACT, sigInfo.getSignclosedLogisticsNumber(),number);
  289. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  290. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送关联客诉通知维修人员:"+result);
  291. }
  292. } catch (Exception e) {
  293. throw new RuntimeException("------------生成检测信息出错------------");
  294. }
  295. }
  296. }
  297. }
  298. }
  299. }
  300. }
  301. }
  302. return 1;
  303. }
  304. /**
  305. * 根据签收id生成维修信息
  306. * @param signclosedId 签收id detectState 状态
  307. * @return
  308. */
  309. public void addDet(Integer signclosedId,Integer detectState){
  310. ComplaintSignclosedInfo sigInfo = complaintSignclosedInfoMapper.getSignclosedById(signclosedId);
  311. //判断是否需要生成维修记录
  312. if(sigInfo.getSignclosedProductInfoList().size() > 0) {
  313. for (SignclosedProductInfo productInfo : sigInfo.getSignclosedProductInfoList()) {
  314. ProductColor productColor = productMapper.getProduceColor(productInfo.getSignclosedProductColor());
  315. Product product = productMapper.getProduce(productColor.getColorProductId());
  316. if(product.getProductIsDetection() != null){
  317. if (product.getProductIsDetection() == 1) {
  318. for (int j = 0; j < productInfo.getProductNum(); j++) {
  319. //添加待检测信息
  320. //查询签收信息
  321. ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
  322. //生成维修编号
  323. String number = detectNumber();
  324. detectInfo.setDetectNumber(number);
  325. detectInfo.setProductId(productColor.getColorProductId());
  326. detectInfo.setProductColorId(productInfo.getSignclosedProductColor());
  327. detectInfo.setDetectProductNumber(product.getProductNumber());
  328. detectInfo.setDetectState(detectState);
  329. detectInfo.setCustomerId(sigInfo.getSignclosedCustomerId());
  330. detectInfo.setIsMaintenance(0);
  331. detectInfo.setDetectRenovation(0);
  332. detectInfo.setDetectProcessingResults(0);
  333. detectInfo.setSignclosedId(sigInfo.getSignclosedId());
  334. if(detectState != 40){
  335. detectInfo.setDetectSource(1);
  336. Calendar date = Calendar.getInstance();
  337. date.setTime(new Date());
  338. boolean fl = false;
  339. for (int i = 1 ; i <= 3; i++){
  340. date.set(Calendar.DATE, date.get(Calendar.DATE) + i);
  341. int week = date.get(Calendar.DAY_OF_WEEK);//1--7的值,对应:星期日,星期一,星期二,星期三....星期六
  342. if(week == 1){
  343. fl = true;
  344. }
  345. date.set(Calendar.DATE, date.get(Calendar.DATE) - i);
  346. }
  347. if(fl){
  348. date.set(Calendar.DATE, date.get(Calendar.DATE) + 4);
  349. }else{
  350. date.set(Calendar.DATE, date.get(Calendar.DATE) + 3);
  351. }
  352. detectInfo.setMaintenanceCutTime(date.getTime());
  353. }else{
  354. detectInfo.setDetectSource(2);
  355. }
  356. try {
  357. complaintDetectInfoMapper.insert(detectInfo);
  358. } catch (Exception e) {
  359. throw new RuntimeException("------------生成检测信息出错------------");
  360. }
  361. }
  362. }
  363. }
  364. }
  365. }
  366. }
  367. /**
  368. * 生成维修编号
  369. * @return
  370. */
  371. public String detectNumber(){
  372. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
  373. String year = sdf.format(new Date());
  374. String detectNum = RedisUtils.get("detect_"+year);
  375. Integer detectNumber;
  376. if(detectNum == null){
  377. //查询当前月份所有维修机器
  378. Integer num = complaintDetectInfoMapper.getDetectNum();
  379. RedisUtils.put("detect_"+year,num);/*
  380. RedisUtils.expire(SC_DETECT+year,new Date(System.currentTimeMillis() + 2678400000L));*/
  381. detectNumber = num;
  382. }else{
  383. detectNumber =Integer.parseInt(detectNum)+ 1;
  384. RedisUtils.put("detect_"+year,detectNumber);
  385. }
  386. switch (detectNumber.toString().length()){
  387. case 1:
  388. detectNum = "000"+detectNumber;
  389. break;
  390. case 2:
  391. detectNum = "00"+detectNumber;
  392. break;
  393. case 3:
  394. detectNum = "0"+detectNumber;
  395. break;
  396. case 4:
  397. detectNum = detectNumber.toString();
  398. break;
  399. }
  400. return year+detectNum;
  401. }
  402. @Override
  403. public List<SignclosedProductInfo> listSignclosedById(Integer signclosedId) {
  404. return complaintSignclosedInfoMapper.listSignclosedById(signclosedId);
  405. }
  406. @Override
  407. public Integer insertImg(ComplaintSignclosedImg complaintSignclosedImg) {
  408. return complaintSignclosedInfoMapper.insertImg(complaintSignclosedImg);
  409. }
  410. @Override
  411. public List<ComplaintSignclosedImg> listSignclosedImgById(Integer signclosedId) {
  412. return complaintSignclosedInfoMapper.listSignclosedImgById(signclosedId);
  413. }
  414. @Override
  415. public Integer delSignclosedImg(Integer signclosedId) {
  416. return complaintSignclosedInfoMapper.delSignclosedImg(signclosedId);
  417. }
  418. @Override
  419. public Integer delSignclosedBySendbackId(Integer sendbackId) {
  420. return complaintSignclosedInfoMapper.delSignclosedBySendbackId(sendbackId);
  421. }
  422. @Override
  423. public Integer getSignclosedDay(ComplaintSignclosedInfo complaintSignclosedInfo) {
  424. return complaintSignclosedInfoMapper.getSignclosedDay(complaintSignclosedInfo);
  425. }
  426. @Override
  427. @Transactional
  428. public Integer updateSignclosedByYny(ComplaintSignclosedInfo record) {
  429. int num = complaintSignclosedInfoMapper.updateSignclosedById(record);
  430. if(num > 0){
  431. try {
  432. ComplaintSignclosedInfo signclosedInfo = complaintSignclosedInfoMapper.getSignclosedById(record.getSignclosedId());
  433. //新增维修记录
  434. if(signclosedInfo != null && signclosedInfo.getSignclosedProductInfoList().size() > 0){
  435. for (SignclosedProductInfo productInfo : signclosedInfo.getSignclosedProductInfoList()){
  436. Product product = productMapper.getProduce(productInfo.getSignclosedProductId());
  437. if (product.getProductIsDetection() == 1) {
  438. ComplaintDetectInfo info = new ComplaintDetectInfo();
  439. //生成维修编号
  440. String number = detectNumber();
  441. info.setDetectNumber(number);
  442. info.setDetectState(40);
  443. info.setDetectSource(2);
  444. info.setProductId(productInfo.getSignclosedProductId());
  445. info.setProductColorId(productInfo.getSignclosedProductColor());
  446. info.setSignclosedId(record.getSignclosedId());
  447. complaintDetectInfoMapper.insert(info);
  448. }
  449. }
  450. }
  451. }catch (Exception e){
  452. e.printStackTrace();
  453. throw new RuntimeException("------------改为优尼雅客户生成检测信息出错------------");
  454. }
  455. }else{
  456. return num;
  457. }
  458. return 1;
  459. }
  460. private Integer addSifnclosed(Map<String,Integer> Map,Integer signclosedId) {
  461. Integer msg = 0;
  462. for (Map.Entry<String, Integer> entry : Map.entrySet()) {
  463. AwaitingSignclosedProductInfo awaitingSignclosedInfo = new AwaitingSignclosedProductInfo();
  464. //根据颜色id获取产品信息获取产品信息
  465. Product product = productMapper.getProductById(Integer.valueOf(entry.getKey()));
  466. if (product == null) {
  467. return 0;
  468. }
  469. awaitingSignclosedInfo.setSignclosedId(signclosedId);
  470. awaitingSignclosedInfo.setProductName(product.getProductName());
  471. awaitingSignclosedInfo.setProductNum(entry.getValue());
  472. awaitingSignclosedInfo.setSignclosedProductType(1);
  473. awaitingSignclosedInfo.setSignclosedProductId(product.getProductId());
  474. awaitingSignclosedInfo.setSignclosedProductColor(Integer.valueOf(entry.getKey()));
  475. awaitingSignclosedInfo.setSignclosedCreateTime(new Date());
  476. msg = awaitingSignclosedProductMapper.insert(awaitingSignclosedInfo);
  477. }
  478. return msg;
  479. }
  480. @Override
  481. public ComplaintSignclosedInfo getSignclosedById(Integer signclosedId) {
  482. return complaintSignclosedInfoMapper.getSignclosedById(signclosedId);
  483. }
  484. @Transactional
  485. @Override
  486. public boolean updateSignclosedById(ComplaintSignclosedInfo record,
  487. Map<String,Integer> alreadyColorMap,
  488. Map<String,String[]> machineNumberMap,
  489. Map<String,Integer> alreadyFittingsMap) {
  490. boolean msg = true;
  491. int num = complaintSignclosedInfoMapper.updateSignclosedById(record);
  492. if(num < 1){
  493. msg = false;
  494. }else{
  495. if(alreadyColorMap != null || alreadyColorMap.size() != 0){
  496. for (Map.Entry<String,Integer> entry : alreadyColorMap.entrySet()) {
  497. int i = 0;
  498. SignclosedProductInfo signclosedProductInfo = new SignclosedProductInfo();
  499. //根据颜色id获取产品信息获取产品信息
  500. Product product = productMapper.getProductById(Integer.valueOf(entry.getKey()));
  501. if(product == null){
  502. return false;
  503. }
  504. for (int j = 0;j<entry.getValue();j++){
  505. signclosedProductInfo.setSignclosedId(record.getSignclosedId());
  506. signclosedProductInfo.setProductName(product.getProductName());
  507. signclosedProductInfo.setProductNum(1);
  508. signclosedProductInfo.setSignclosedProductType(1);
  509. signclosedProductInfo.setSignclosedProductId(product.getProductId());
  510. signclosedProductInfo.setSignclosedProductColor(Integer.valueOf(entry.getKey()));
  511. signclosedProductInfo.setSignclosedCreateTime(new Date());
  512. complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
  513. i++;
  514. }
  515. }
  516. }
  517. }
  518. return msg;
  519. }
  520. @Transactional
  521. @Override
  522. public boolean updateSignclosedById(ComplaintSignclosedInfo record, String orderItemString, String[] componentsImgs) {
  523. boolean msg = true;
  524. int num = complaintSignclosedInfoMapper.updateSignclosedById(record);
  525. if(num < 1){
  526. msg = false;
  527. }else{
  528. //删除待收货产品
  529. complaintSignclosedProductInfoMapper.delSignclosedProduct(record.getSignclosedId());
  530. //删除签收图片
  531. complaintSignclosedInfoMapper.delSignclosedImg(record.getSignclosedId());
  532. if(orderItemString != null){
  533. JSONArray jsonArray = JSONArray.fromObject(orderItemString);
  534. List<SalesOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
  535. for (SalesOrderItem salesOrderItem:salesOrderItemList) {
  536. if(salesOrderItem.getItemNum() > 0 && salesOrderItem.getItemColorId() > 0){
  537. int i = 0;
  538. SignclosedProductInfo signclosedProductInfo = new SignclosedProductInfo();
  539. //根据颜色id获取产品信息获取产品信息
  540. ProductColor productColor = productMapper.getProduceColor(salesOrderItem.getItemColorId());
  541. Product product = productMapper.getProduce(productColor.getColorProductId());
  542. if(productColor == null){
  543. msg = false;
  544. }
  545. signclosedProductInfo.setSignclosedId(record.getSignclosedId());
  546. signclosedProductInfo.setProductName(productColor.getProductName());
  547. signclosedProductInfo.setProductNum(1);
  548. signclosedProductInfo.setSignclosedProductType(1);
  549. signclosedProductInfo.setSignclosedProductId(productColor.getColorProductId());
  550. signclosedProductInfo.setSignclosedProductColor(salesOrderItem.getItemColorId());
  551. signclosedProductInfo.setSignclosedCreateTime(new Date());
  552. signclosedProductInfo.setSignclosedState(2);
  553. try {
  554. complaintSignclosedProductInfoMapper.insert(signclosedProductInfo);
  555. }catch (Exception e){
  556. throw new RuntimeException("------------生成签收产品出错------------");
  557. }
  558. /*for (int j = 0;j<salesOrderItem.getItemNum();j++){
  559. //判断是否需要生成维修记录
  560. if(product.getProductIsDetection() == 1){
  561. //添加待检测信息
  562. //查询签收信息
  563. ComplaintSignclosedInfo signclosedInfo = complaintSignclosedInfoMapper.getSignclosedById(record.getSignclosedId());
  564. ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
  565. detectInfo.setProductId(productColor.getColorProductId());
  566. detectInfo.setProductColorId(salesOrderItem.getItemColorId());
  567. detectInfo.setDetectProductNumber(product.getProductNumber());
  568. detectInfo.setDetectState(1);
  569. detectInfo.setCustomerId(signclosedInfo.getSignclosedCustomerId());
  570. detectInfo.setIsMaintenance(0);
  571. detectInfo.setDetectRenovation(0);
  572. detectInfo.setDetectProcessingResults(0);
  573. try {
  574. complaintDetectInfoMapper.insert(detectInfo);
  575. }catch (Exception e){
  576. throw new RuntimeException("------------生成检测信息出错------------");
  577. }
  578. }
  579. j++;
  580. }*/
  581. }
  582. }
  583. }
  584. //添加签收图片
  585. if(componentsImgs != null){
  586. if(componentsImgs.length > 0){
  587. for(String componentsImg : componentsImgs){
  588. ComplaintSignclosedImg complaintSignclosedImg = new ComplaintSignclosedImg();
  589. complaintSignclosedImg.setImgUrl(componentsImg);
  590. complaintSignclosedImg.setSignclosedId(record.getSignclosedId());
  591. complaintSignclosedInfoMapper.insertImg(complaintSignclosedImg);
  592. }
  593. }
  594. }
  595. //同步客诉寄回状态和物流信息
  596. ComplaintSignclosedInfo signclosedInfo = complaintSignclosedInfoMapper.getSignclosedById(record.getSignclosedId());
  597. SendbackInfo sendbackInfo = new SendbackInfo();
  598. sendbackInfo.setSendbackId(signclosedInfo.getSendbackId());
  599. sendbackInfo.setSendbackStatus(3);
  600. sendbackInfo.setSendbackLogisticsCompany(signclosedInfo.getSignclosedLogistics());
  601. sendbackInfo.setSendbackLogisticsNo(signclosedInfo.getSignclosedLogisticsNumber());
  602. sendbackInfo.setSendbackSignTime(signclosedInfo.getSignclosedDate());
  603. customerInfoMapper.updateSendbackInfo(sendbackInfo);
  604. Integer flag = 0;
  605. // 代签收 - > 已签收 需要入库到售后仓库
  606. List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(record.getSignclosedId());
  607. for (SignclosedProductInfo spi:signclosedProductInfoList) {
  608. //增加售后仓库的良品
  609. InventoryInfo inventoryInfo2 = new InventoryInfo();
  610. inventoryInfo2.setInventoryDefectiveProductNum(spi.getProductNum());
  611. inventoryInfo2.setInventoryProductBar(spi.getColorBar());
  612. inventoryInfo2.setWarehouseId(2);
  613. inventoryInfo2.setLogType(3); //售后签收,都是次品
  614. inventoryInfo2.setInventoryRecentRecord("售后签收产品(签收ID:"+spi.getSignclosedId()+")");
  615. flag = inventoryService.addInventory(inventoryInfo2);
  616. if(flag < 1){
  617. throw new RuntimeException("签收失败,更新库存失败。");
  618. }
  619. }
  620. // 代签收 - > 已签收 需要入库到售后仓库
  621. // Integer flag = 0;
  622. // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  623. // List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(record.getSignclosedId());
  624. // for (SignclosedProductInfo spi:signclosedProductInfoList) {
  625. // InventoryInfo info = inventoryMapper.getByInventoryByBar(spi.getColorBar(),2);
  626. // info.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum()+spi.getProductNum());
  627. // info.setInventoryRecentRecord(sdf.format(new Date())+"不良品入库:"+ spi.getProductNum() + "件");
  628. // flag = inventoryMapper.updateById(info);
  629. // if(flag < 1){
  630. // throw new RuntimeException("更新库存失败,更新库存失败。");
  631. // }
  632. // //添加日志
  633. // InventoryLog inventoryLog = new InventoryLog();
  634. // inventoryLog.setLogProductName(info.getInventoryProductName());
  635. // inventoryLog.setLogProductBar(info.getInventoryProductBar());
  636. // inventoryLog.setLogRemainingNum(spi.getProductNum());
  637. // inventoryLog.setLogType(3);
  638. // inventoryLog.setLogOperationType(1);
  639. // inventoryLog.setLogDesc(sdf.format(new Date())+"不良品入库:"+spi.getProductNum()+"件");
  640. // inventoryLog.setLogQualityType(2);
  641. // inventoryLog.setLogWarehouseId(2); //售后仓库
  642. // flag = inventoryLogMapper.insert(inventoryLog);
  643. // if(flag < 1){
  644. // throw new RuntimeException("更新库存失败,增加库存记录失败。");
  645. // }
  646. // }
  647. }
  648. //关联客诉/判断是否生成客诉信息
  649. try {
  650. addDet(record.getSignclosedId(),1);
  651. }catch (Exception e){
  652. throw new RuntimeException("------------关联客诉出错------------");
  653. }
  654. return msg;
  655. }
  656. @Override
  657. public Integer updateSignclosedById(ComplaintSignclosedInfo record) {
  658. return complaintSignclosedInfoMapper.updateSignclosedById(record);
  659. }
  660. @Override
  661. public Integer updateSignclosedByCustomerId(ComplaintSignclosedInfo record) {
  662. return complaintSignclosedInfoMapper.updateSignclosedByCustomerId(record);
  663. }
  664. @Override
  665. public PagedResult<ComplaintSignclosedInfo> listSignclosed(PageRequest<ComplaintSignclosedInfo> pageRequest) {
  666. PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
  667. List<ComplaintSignclosedInfo> signclosedList = complaintSignclosedInfoMapper.listSignclosed(pageRequest.getData());
  668. return PageUtil.getPage(signclosedList);
  669. }
  670. @Override
  671. public List<ComplaintSignclosedInfo> listSignclosed(ComplaintSignclosedInfo complaintSignclosedInfo) {
  672. return complaintSignclosedInfoMapper.listSignclosed(complaintSignclosedInfo);
  673. }
  674. }