| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- package com.tld.service.impl;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.tld.excel.ExcelUtils;
- import com.tld.mapper.UserMapper;
- import com.tld.mapper.WarehousingMapper;
- import com.tld.model.*;
- import com.tld.service.WarehousingService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.servlet.http.HttpServletResponse;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Service
- public class WarehousingServiceImpl implements WarehousingService {
- @Autowired
- private WarehousingMapper warehousingMapper;
- @Autowired
- private UserMapper userMapper;
- @Override
- public Map<String, Object> getRecommend(String wllbCode, String suppId, String num, String unique, String producDate) {
- Map<String, Object> map = new HashMap<>();
- try{
- Map<String, Object> mapVal = warehousingMapper.getScanIsNot(wllbCode, suppId, unique, producDate);
- if(Integer.parseInt(mapVal.get("inventoryCount").toString()) != 0 || Integer.parseInt(mapVal.get("virtualCount").toString()) != 0){
- map.put("msg", "500");
- map.put("errMsg", "已被扫描");
- return map;
- }
- //判断如果是混合则走单独逻辑
- String isNotSisable = warehousingMapper.getIsNotSisable(wllbCode);
- if(isNotSisable.equals("1")){
- List<StorageLocation> list1 = warehousingMapper.getIsNotSisableLocation("1");
- map.put("data", list1);
- map.put("msg", "200");
- return map;
- }
- List<MaterialClass> listMaterialClass = warehousingMapper.getMaterialClass(wllbCode);
- if(listMaterialClass.size() == 0){
- listMaterialClass = warehousingMapper.getMaterialClassType(wllbCode);
- }
- StringBuffer stringBuffer = new StringBuffer();
- List<Integer> listString = new LinkedList<>();//库存剩余数量
- for(int i = 0; i < listMaterialClass.size(); i++) {
- Map<String, Object> map1 = warehousingMapper.getScanNum(listMaterialClass.get(i).getStorageLocationCode(), num);
- if(Double.parseDouble(String.valueOf(map1.get("scanNum"))) < Double.parseDouble(String.valueOf(map1.get("storageLocationCapacity")))){
- stringBuffer.append(listMaterialClass.get(i).getStorageLocationCode() + ",");
- int surplusNum = (int) (Double.parseDouble(String.valueOf(map1.get("storageLocationCapacity"))) - Double.parseDouble(String.valueOf(map1.get("scanNum"))) + Double.parseDouble(num));
- listString.add(surplusNum);
- }
- }
- List<StorageLocation> list = warehousingMapper.recommend(stringBuffer.toString());
- map.put("data", list);
- map.put("listString", listString);//返回库位剩余数量
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Map<String, Object> addWarehousingVirtual(WarehousingVirtual warehousingVirtual) {
- Map<String, Object> map = new HashMap<>();
- try{
- warehousingMapper.addWarehousingVirtual(warehousingVirtual);
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Map<String, Object> delWarehousingVirtual(WarehousingVirtual warehousingVirtual) {
- Map<String, Object> map = new HashMap<>();
- try{
- warehousingMapper.delWarehousingVirtual(warehousingVirtual);
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- public Map<String, Object> warehousing(String uniqueCode) {
- Map<String, Object> map = new HashMap<>();
- try{
- //入库信息
- List<WarehousingVirtual> list = new LinkedList<>();
- //查询入库所需要的信息
- for(WarehousingVirtual warehousingVirtual : warehousingMapper.getVirtual(uniqueCode)){
- //查询采购单信息
- List<ReceiveGoods> receiveGoods = warehousingMapper.getReceiveGoods(warehousingVirtual);
- if(receiveGoods.size() != 0) {
- //所属账套
- warehousingVirtual.setAccountSleeve(receiveGoods.get(0).getCompanyNumber());
- //WBS
- warehousingVirtual.setWbs(receiveGoods.get(0).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());
- list.add(warehousingVirtual);
- }
- //入库
- warehousingMapper.addStorage(list);//入库流水
- warehousingMapper.addInventory(list);//库存
- //返回采购单id
- StringBuilder stringBuilder = new StringBuilder();
- //入质检入库数量
- for(WarehousingVirtual warehousingVirtual1 : warehousingMapper.getVirtual(uniqueCode)) {
- //查询采购单信息
- List<ReceiveGoods> receiveGoods = warehousingMapper.getReceiveGoods(warehousingVirtual1);
- for(ReceiveGoods receiveGoods1 : receiveGoods) {
- if(Integer.parseInt(warehousingVirtual1.getNum()) <= 0){
- break;
- }
- //采购单剩余入库数量
- int surplusNum = Integer.parseInt(receiveGoods1.getQualifiedNum()) - Integer.parseInt(receiveGoods1.getWarehousingNum());
- //剩余入库数量
- int numInto = Integer.parseInt(warehousingVirtual1.getNum()) - surplusNum;
- if(numInto < 0){
- receiveGoods1.setWarehousingNum(warehousingVirtual1.getNum());
- warehousingMapper.updateReceiveGood(receiveGoods1);
- } else {
- receiveGoods1.setWarehousingNum(String.valueOf(surplusNum));
- warehousingMapper.updateReceiveGood(receiveGoods1);
- //存入给gs的返回数据
- ReturnWarehousing returnWarehousing = new ReturnWarehousing()
- .setWarehousingNum(receiveGoods1.getWarehousingNum())
- .setGsCk(warehousingVirtual1.getGsCk())
- .setSourceType(receiveGoods1.getSourceType())
- .setMoveType(receiveGoods1.getMoveType())
- .setEntryNumber(receiveGoods1.getEntryNumber())
- .setWbs(receiveGoods1.getWbs())
- .setReceiveGoodsId(receiveGoods1.getId())
- .setMaterialId(receiveGoods1.getMaterialId())
- .setStorageCode(codeGenerateRk())
- .setOrderNumber(receiveGoods1.getOrderNumber());
- warehousingMapper.addReturnWarehousing(returnWarehousing);
- //判断是否有已存在的采购单号
- if(!stringBuilder.toString().contains(receiveGoods1.getOrderNumber() + ",")){
- stringBuilder.append(receiveGoods1.getOrderNumber() + ",");
- }
- }
- warehousingVirtual1.setNum(String.valueOf(numInto));
- }
- }
- warehousingMapper.delVirtual(uniqueCode);//删除临时表数据
- map.put("data", stringBuilder.toString());
- map.put("msg", "200");
- } catch (Exception e){
- e.printStackTrace();
- map.put("msg", "500");
- map.put("errMsg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- public void plugOutWarehousing(String orderNumber) {
- try{
- Calendar cal = Calendar.getInstance();
- int year = cal.get(Calendar.YEAR);
- int month = cal.get(Calendar.MONTH) + 1;
- int day = cal.get(Calendar.DATE) ;
- List<ReturnWarehousing> list = new ArrayList<>();
- for(ReturnWarehousing returnWarehousing : warehousingMapper.getPlugOutWarehousing(orderNumber)){
- returnWarehousing.setYear(String.valueOf(year));
- returnWarehousing.setMonth(String.valueOf(month));
- returnWarehousing.setTime(year + "-" + month + "-" + day);
- returnWarehousing.setIsNotRed("0");
- list.add(returnWarehousing);
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- @Override
- public Map<String, Object> warehousingFlowing(Storage storage) {
- Map<String, Object> map = new HashMap<>();
- try{
- PageHelper.startPage(storage.getPage(), storage.getLimit());
- PageInfo<Storage> list = new PageInfo<>(warehousingMapper.warehousingFlowing(storage));
- 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> getWarehousingVirtual(String uniqueCode) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<WarehousingVirtual> list = warehousingMapper.getWarehousingVirtual(uniqueCode);
- 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(Storage storage, HttpServletResponse response) {
- try{
- //导出数据汇总
- List<List<Object>> sheetDataList = new ArrayList<>();
- //表头数据
- List<Object> head = Arrays.asList("物料名称", "供应商名称", "连翻号", "生产日期", "生产批次", "容量", "序列号", "类型", "用户名称", "部门", "库位名称", "入库日期");
- //查询数据
- PageHelper.startPage(storage.getPage(), storage.getLimit());
- PageInfo<Map<String, Object>> list = new PageInfo<>(warehousingMapper.export(storage));
- 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();
- }
- }
- /**
- * 入库单生成
- * @return
- */
- public String codeGenerateRk(){
- StringBuilder stringBuilder = new StringBuilder("RK");
- Date date = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
- stringBuilder.append(sdf.format(date));
- int count = warehousingMapper.getWarehousingCount();
- for(int i = 0; i < 4 - (count + "").length(); i++){
- stringBuilder.append("0");
- }
- return (stringBuilder.append(count + 1)).toString();
- }
- }
|