123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package com.tld.service.impl;
- import com.tld.mapper.*;
- import com.tld.model.*;
- import com.tld.model.Dictionary;
- import com.tld.service.WarehouseTransferService;
- 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 java.text.SimpleDateFormat;
- import java.util.*;
- @Service
- @RequiredArgsConstructor
- public class WarehouseTransferServiceImpl implements WarehouseTransferService {
- //移库
- private final WarehouseTransferMapper warehouseTransferMapper;
- //redis锁
- private final RedissonClient redissonClient;
- //出库
- private final AskGoodsMapper askGoodsMapper;
- //入库
- private final WarehousingMapper warehousingMapper;
- //字典
- private final DictionaryMapper dictionaryMapper;
- //用户
- private final UserMapper userMapper;
- @Override
- public Map<String, Object> getWarehouseTransfer(WarehouseTransfer warehouseTransfer) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<WarehouseTransfer> list = warehouseTransferMapper.getWarehouseTransfer(warehouseTransfer);
- map.put("data", list);
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- public Map<String, Object> getRecommend(WarehouseTransfer warehouseTransfer) {
- Map<String, Object> map = new HashMap<>();
- try{
- Dictionary dictionary = dictionaryMapper.getWarehouseInfo(warehouseTransfer);
- if(dictionary.getName().equals("原材料库")){
- map.put("msg", "500");
- map.put("errMsg", "请扫描标签");
- return map;
- }
- List<Inventory> list = new LinkedList<>();
- for(Inventory inventory : warehouseTransferMapper.getMaterialCk(warehouseTransfer)){
- AskGoods askGoods1 = warehouseTransferMapper.getAsk(inventory);
- if(askGoods1 != null){
- if(Double.parseDouble(askGoods1.getNum()) != Double.parseDouble(inventory.getAmount())){
- list.add(inventory);
- }
- } else {
- list.add(inventory);
- }
- }
- map.put("data", list);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- }
- return map;
- }
- @Override
- public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId) {
- Map<String, Object> map = new HashMap<>();
- //redis并发锁
- RLock lock = redissonClient.getLock(uniqueCode);
- lock.lock();
- try{
- List<AskGoods> list = askGoodsMapper.getVirtualUniqueCode(uniqueCode, type, askGoodsId);
- //入库信息
- // List<WarehousingVirtual> warehousing = new LinkedList<>();
- String warehouseTransferCode = codeGenerateYK(); //移库单
- for(AskGoods askGoods : list){
- askGoods.setStorageCode(warehouseTransferCode);
- Inventory inventory = askGoodsMapper.getInventory(askGoods);
- if(inventory == null){
- throw new Exception("库存不存在");
- }
- //如果出库库存等于虚拟表库存则删除此库存
- if(Integer.parseInt(askGoods.getNum()) == Integer.parseInt(inventory.getAmount())){
- askGoodsMapper.deleteInventory(inventory);
- } else {
- inventory.setAmount(askGoods.getNum());
- askGoodsMapper.updateInventory(inventory);
- }
- String materialId = askGoodsMapper.getMaterialId(askGoods.getWllbCode());//查询物料id
- WarehouseTransfer warehouseTransfer = warehouseTransferMapper.getWarehouseTransferDetailed(askGoodsId, materialId);//查询移库申请内容
- // //入库流水信息
- // WarehousingVirtual WarehousingVirtual1 = new WarehousingVirtual()
- // .setWllbCode(askGoods.getWllbCode()) //物料code
- // .setSuppId(askGoods.getSupplierId())//供应商id
- // .setSerial(askGoods.getSerial())//连翻号
- // .setProducDate(askGoods.getProducDate())//批次
- // .setNum(askGoods.getNum())//入库数量
- // .setSeq("0")
- // .setType(askGoods.getType())//入库类型
- // .setUserId(askGoods.getUserId())//用户
- // .setDepartmentId(askGoods.getDepartmentId())//部门
- // .setStorageLocationCode(askGoods.getStorageLocationCode())//库位编号
- // .setStorageCode(warehouseTransferCode)//移库单号
- // .setWbs(warehouseTransfer.getWbs());//wbs
- // warehousing.add(WarehousingVirtual1);
- askGoodsMapper.addRemoval(askGoods);//插入出库流水
- askGoodsMapper.deleteVirtual(askGoods.getId());//删除已出虚拟表库存
- warehouseTransferMapper.updateOutNum(askGoods.getNum(), askGoodsId, materialId);//修改出库数量
- WarehouseTransfer warehouseTransfer1 = new WarehouseTransfer()
- .setWarehouseTransferId(warehouseTransfer.getWarehouseTransferId()) //移库单id
- .setEntryNumber(warehouseTransfer.getEntryNumber())//分录号
- .setSupplyWarehouseId(warehouseTransfer.getSupplyWarehouseId())//供货仓库id
- .setMaterialId(materialId)//物料id
- .setWbs(warehouseTransfer.getWbs())//wbs
- .setOutNum(askGoods.getNum()); //出库数量
- warehouseTransferMapper.addReturnGsWarehouseTransfer(warehouseTransfer1);//新增返回gs数据子表信息
- }
- WarehouseTransfer warehouseTransferF = warehouseTransferMapper.getWarehouseTransferDetailedF(askGoodsId);//查询父表移库单申请
- WarehouseTransfer warehouseTransfer1 = new WarehouseTransfer()
- .setWarehouseTransferId(warehouseTransferF.getWarehouseTransferId()) //移库单id
- .setWarehouseTransferCode(warehouseTransferCode)//移库单编号
- .setAskGoodsWarehouseId(warehouseTransferF.getAskGoodsWarehouseId()) //要货仓库id
- .setWarehouseTransferType(warehouseTransferF.getWarehouseTransferType()); //移库类型
- warehouseTransferMapper.addReturnGsWarehouseTransferF(warehouseTransfer1);//新增返回gs数据父表信息
- // warehousingMapper.addStorage(warehousing);//入库流水
- map.put("data", warehouseTransferCode);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- } finally {
- //释放锁
- lock.unlock();
- }
- return map;
- }
- @Override
- public Map<String, Object> warehousing(String uniqueCode, String type) {
- Map<String, Object> map = new HashMap<>();
- try{
- //入库信息
- List<WarehousingVirtual> list = new LinkedList<>();
- List<WarehousingVirtual> warehousingVirtualList = warehousingMapper.getVirtual(uniqueCode, type);
- String warehouseTransferCode = codeGenerateYK(); //移库单
- //查询入库所需要的信息
- for(WarehousingVirtual warehousingVirtual : warehousingVirtualList) {
- //查询采购单信息
- String materialId = askGoodsMapper.getMaterialId(warehousingVirtual.getWllbCode());//查询物料id
- WarehouseTransfer warehouseTransfer = warehouseTransferMapper.getWarehouseTransferDetailed(warehousingVirtual.getWarehouseTransferId(), materialId);//查询移库申请内容
- if(warehouseTransfer != null) {
- //WBS
- warehousingVirtual.setWbs(warehouseTransfer.getWbs());
- warehousingVirtual.setWbs(warehouseTransfer.getWbs());
- }
- //查询部门编号
- List<User> listUser = userMapper.getAllUser(new User().setId(Integer.parseInt(warehousingVirtual.getUserId())));
- warehousingVirtual.setDepartmentId(listUser.get(0).getDepartmentId());
- //查询物料分类
- WarehousingVirtual warehousingVirtual1 = warehousingMapper.getWlClass(warehousingVirtual);
- warehousingVirtual.setWllbClass(warehousingVirtual1.getWllbClass());
- warehousingVirtual.setMaterialId(warehousingVirtual1.getMaterialId());
- warehousingVirtual.setStorageCode(warehouseTransferCode);
- list.add(warehousingVirtual);
- warehouseTransferMapper.updateOutNum(warehousingVirtual.getNum(), warehousingVirtual.getWarehouseTransferId(), materialId);//修改出库数量
- WarehouseTransfer warehouseTransfer1 = new WarehouseTransfer()
- .setWarehouseTransferId(warehouseTransfer.getWarehouseTransferId()) //移库单id
- .setEntryNumber(warehouseTransfer.getEntryNumber())//分录号
- .setSupplyWarehouseId(warehouseTransfer.getSupplyWarehouseId())//供货仓库id
- .setMaterialId(materialId)//物料id
- .setWbs(warehouseTransfer.getWbs())//wbs
- .setOutNum(warehousingVirtual.getNum()); //出库数量
- warehouseTransferMapper.addReturnGsWarehouseTransfer(warehouseTransfer1);//新增返回gs数据子表信息
- }
- //入库
- warehousingMapper.addStorage(list);//入库流水
- warehousingMapper.addInventory(list);//库存
- warehousingMapper.delVirtual(uniqueCode);//删除临时表数据
- WarehouseTransfer warehouseTransferF = warehouseTransferMapper.getWarehouseTransferDetailedF(warehousingVirtualList.get(0).getWarehouseTransferId());//查询父表移库单申请
- WarehouseTransfer warehouseTransfer1 = new WarehouseTransfer()
- .setWarehouseTransferId(warehouseTransferF.getWarehouseTransferId()) //移库单id
- .setWarehouseTransferCode(warehouseTransferCode)//移库单编号
- .setAskGoodsWarehouseId(warehouseTransferF.getAskGoodsWarehouseId()) //要货仓库id
- .setWarehouseTransferType(warehouseTransferF.getWarehouseTransferType()); //移库类型
- warehouseTransferMapper.addReturnGsWarehouseTransferF(warehouseTransfer1);//新增返回gs数据父表信息
- map.put("data", warehouseTransferCode);
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- /**
- * 移库单生成
- * @return
- */
- public String codeGenerateYK(){
- StringBuilder stringBuilder = new StringBuilder("YK");
- Date date = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
- stringBuilder.append(sdf.format(date));
- int count = warehouseTransferMapper.getReturnWarehouseTransferCount();
- for(int i = 0; i < 4 - (count + "").length(); i++){
- stringBuilder.append("0");
- }
- return (stringBuilder.append(count + 1)).toString();
- }
- }
|