123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package com.tld.service.impl;
- import com.tld.mapper.WebPrintMapper;
- import com.tld.model.TldPrint;
- import com.tld.service.WebPrintService;
- import com.tld.util.DateUtil;
- import lombok.RequiredArgsConstructor;
- import org.redisson.api.RLock;
- import org.redisson.api.RedissonClient;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.servlet.http.HttpServletRequest;
- import java.util.HashMap;
- import java.util.Map;
- @Service
- @RequiredArgsConstructor
- public class WebPrintServiceImpl implements WebPrintService {
- private final WebPrintMapper webPrintMapper;
- //redis锁
- @Autowired
- private RedissonClient redissonClient;
- @Override
- public Map<String, Object> getSerial(TldPrint tldPrint, HttpServletRequest request) {
- Map<String, Object> map = new HashMap<>();
- //redis并发锁
- RLock lock = redissonClient.getLock(request.getHeader("userId"));
- lock.lock();
- try{
- tldPrint.setUserId(request.getHeader("userId"));
- tldPrint.setProducDate(DateUtil.dateConversion(tldPrint.getProducDate()));
- int count = webPrintMapper.getSerialCount(tldPrint);
- String serial = generateSerial((count + 1) + "");
- String num = generateNum(tldPrint.getNum());
- String materialCode = generateMaterialCode(tldPrint.getMaterialCode());
- String supplierCode = generateSupplierCode(tldPrint.getSupplierId());
- tldPrint.setNum(num);
- tldPrint.setSerial(serial);
- webPrintMapper.addPrint(tldPrint);
- String barCode = materialCode + supplierCode + tldPrint.getProducDate() + num + serial;
- map.put("data", barCode);
- map.put("msg", "200");
- }catch (Exception e){
- map.put("msg", "500");
- map.put("errMsg", "失败");
- e.printStackTrace();
- } finally {
- //释放锁
- lock.unlock();
- }
- return map;
- }
- /**
- * 供应商编号生成
- * @param code 参数
- * @return 供应商编号
- */
- public String generateSupplierCode(String code){
- StringBuilder stringBuilder = new StringBuilder();
- for(int i = 0; i < 7 - code.length(); i++){
- stringBuilder.append("#");
- }
- stringBuilder.append(code);
- return stringBuilder.toString();
- }
- /**
- * 物料编号生成
- * @param code 参数
- * @return 物料编号
- */
- public String generateMaterialCode(String code){
- StringBuilder stringBuilder = new StringBuilder();
- for(int i = 0; i < 16 - code.length(); i++){
- stringBuilder.append("#");
- }
- stringBuilder.append(code);
- return stringBuilder.toString();
- }
- /**
- * 连番号生成
- * @param count 参数
- * @return 连番号
- */
- public String generateSerial(String count){
- StringBuilder stringBuilder = new StringBuilder("1");
- for(int i = 0; i < 5 - count.length(); i++){
- stringBuilder.append("0");
- }
- stringBuilder.append(count);
- return stringBuilder.toString();
- }
- /**
- * 数量生成
- * @param num 参数
- * @return 数量
- */
- public String generateNum(String num){
- StringBuilder stringBuilder = new StringBuilder();
- for(int i = 0; i < 6 - num.length(); i++){
- stringBuilder.append("#");
- }
- stringBuilder.append(num);
- return stringBuilder.toString();
- }
- }
|