123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- package com.tld.service.impl;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.tld.excel.ExcelUtils;
- import com.tld.mapper.AskGoodsMapper;
- import com.tld.model.AskGoods;
- import com.tld.model.Inventory;
- import com.tld.model.ReturRemoval;
- import com.tld.service.AskGoodsService;
- 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.HttpServletResponse;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Service
- public class AskGoodsServiceImpl implements AskGoodsService {
- @Autowired
- private AskGoodsMapper askGoodsMapper;
- //redis锁
- @Autowired
- private RedissonClient redissonClient;
- @Override
- public Map<String, Object> addAskGoods(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- int count = askGoodsMapper.getAskGoods(askGoods);
- if(count != 0){
- askGoodsMapper.updateAskGoodsNum(askGoods);
- } else {
- if(askGoodsMapper.getAskGoodsf(askGoods) == 0){
- askGoodsMapper.addAskGoodsf(askGoods);
- }
- askGoodsMapper.addAskGoods(askGoods);
- }
- askGoodsMapper.addAskGoodsLog(askGoods);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- }
- return map;
- }
- @Override
- public Map<String, Object> getAskGoodsfList(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> list = askGoodsMapper.getAskGoodsfList(askGoods);
- 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> getAskGoodsMaterial(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> list = askGoodsMapper.getAskGoodsMaterial(askGoods);
- List<String> scanNum = new LinkedList<>();
- for(AskGoods askGoods1 : list){
- askGoods1.setUniqueCode(askGoods.getUniqueCode());
- askGoods1.setAskGoodsId(askGoods.getAskGoodsId());
- scanNum.add(askGoodsMapper.getScanNum(askGoods1));//扫描总数
- }
- map.put("scanNum", scanNum);
- 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> getMaterialCk(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<Inventory> list = new LinkedList<>();
- for(Inventory inventory : askGoodsMapper.getMaterialCk(askGoods)){
- AskGoods askGoods1 = askGoodsMapper.getAsk(inventory);
- if(askGoods1 != null){
- if(Integer.parseInt(askGoods1.getNum()) != Integer.parseInt(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> addAskGoodsVitrual(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- Map<String, Object> mapVal = askGoodsMapper.getScanIsNot(askGoods);
- if((Integer.parseInt(mapVal.get("inventoryNum").toString()) - Integer.parseInt(mapVal.get("virtualNum").toString())) == 0){
- map.put("msg", "500");
- map.put("errMsg", "已全部出库");
- return map;
- }
- Inventory inventory = askGoodsMapper.getInventory(askGoods); //库存数量
- AskGoods askGoods1 = askGoodsMapper.getAsknInfo(askGoods); //要货单数量
- int alreadyNum = askGoodsMapper.getAskInfoNumVitrual(askGoods);//已扫描总数
- int inventoryAlready = askGoodsMapper.getInventoryAlready(askGoods);//库存已扫描数量
- int inventorySurplus = Integer.parseInt(inventory.getAmount()) - inventoryAlready; //库存剩余数量
- int surplusNum = Integer.parseInt(askGoods1.getNum()) - alreadyNum; //剩余要扫描数量
- if(surplusNum >= inventorySurplus){
- askGoods.setNum(String.valueOf(inventorySurplus));
- } else {
- askGoods.setNum(String.valueOf(surplusNum));
- }
- askGoods.setStorageLocationCode(inventory.getStorageLocationCode());//库存编号
- askGoodsMapper.addAskGoodsVitrual(askGoods);
- 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);
- for(AskGoods askGoods : list){
- Inventory inventory = askGoodsMapper.getInventory(askGoods);
- //如果出库库存等于虚拟表库存则删除此库存
- 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
- AskGoods askGoods1 = askGoodsMapper.getAskDetailed(askGoodsId, materialId);//查询要料申请单内容
- ReturRemoval returRemoval = new ReturRemoval()
- .setMaterialId(materialId)
- .setAskGoodsId(askGoodsId)
- .setWbs(askGoods1.getWbs())
- .setNum(askGoods.getNum())
- .setEntryNumber(askGoods1.getEntryNumber())
- .setAskId(askGoods1.getId())
- .setStorageLocationCode(askGoods.getStorageLocationCode());
- askGoodsMapper.addRemoval(askGoods);//插入出库流水
- askGoodsMapper.deleteVirtual(askGoods.getId());//删除已出虚拟表库存
- askGoodsMapper.addReturnGsRemoval(returRemoval);//新增返回gs数据子表信息
- askGoodsMapper.updateOutNum(askGoods.getNum(), askGoodsId, materialId);//修改出库数量
- }
- //查询要货单父级信息
- AskGoods askGoods3 = askGoodsMapper.getAskDetailedF(askGoodsId);
- String removalCode = codeGenerateCk();
- ReturRemoval returRemoval1 = new ReturRemoval()
- .setAskGoodsId(askGoods3.getAskGoodsId())
- .setRemovalCode(removalCode)
- .setSourceType(askGoods3.getSourceType())
- .setMoveType(askGoods3.getMoveType());
- askGoodsMapper.addReturnGsRemovalF(returRemoval1);//新增返回gs数据父表信息
- map.put("data", removalCode);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- } finally {
- //释放锁
- lock.unlock();
- }
- return map;
- }
- @Override
- public void plugOutRemoval(String removalCode) {
- try{
- Map<String, Object> map = askGoodsMapper.plugOutRemoval(removalCode);
- Calendar cal = Calendar.getInstance();
- int year = cal.get(Calendar.YEAR);
- int month = cal.get(Calendar.MONTH) + 1;
- int day = cal.get(Calendar.DATE) ;
- map.put("child", askGoodsMapper.getRemovalz(map.get("askGoodsId").toString()));
- map.put("isNotRed", "0");
- map.put("year", year);
- map.put("month", month);
- map.put("time", year + "-" + month + "-" + day);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- @Override
- public Map<String, Object> getRemoval(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<AskGoods> list = new PageInfo<>(askGoodsMapper.getRemoval(askGoods));
- map.put("data", list);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- }
- return map;
- }
- @Override
- public void export(AskGoods askGoods, HttpServletResponse response) {
- try{
- //导出数据汇总
- List<List<Object>> sheetDataList = new ArrayList<>();
- //表头数据
- List<Object> head = Arrays.asList("物料名称", "供应商名称", "连翻号", "类型", "出库用户", "领用部门", "库位名称", "出库日期", "出库数量");
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<Map<String, Object>> list = new PageInfo<>(askGoodsMapper.export(askGoods));
- sheetDataList.add(head);
- for(Map<String, Object> userMap : list.getList()){
- List<Object> listSheet = new ArrayList<>();
- for(String key: userMap.keySet()){
- listSheet.add(userMap.get(key));
- }
- sheetDataList.add(listSheet);
- }
- //当前时间
- Date time = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss");
- ExcelUtils.export(response, "出库流水数据导出" + sdf.format(time), sheetDataList);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- @Override
- public Map<String, Object> getAskGoodsVitrual(String uniqueCode, String type) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> list = askGoodsMapper.getAskGoodsVitrual(uniqueCode, type);
- 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> delAskGoodsVitrual(String id) {
- Map<String, Object> map = new HashMap<>();
- try{
- askGoodsMapper.delAskGoodsVitrual(id);
- map.put("msg", "200");
- }catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "失败");
- }
- return map;
- }
- /**
- * 出库单生成
- * @return
- */
- public String codeGenerateCk(){
- StringBuilder stringBuilder = new StringBuilder("CK");
- Date date = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
- stringBuilder.append(sdf.format(date));
- int count = askGoodsMapper.getReturnRemovalCount();
- for(int i = 0; i < 4 - (count + "").length(); i++){
- stringBuilder.append("0");
- }
- return (stringBuilder.append(count + 1)).toString();
- }
- }
|