123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package com.steerinfo.dil.service.impl;
- import com.steerinfo.dil.mapper.WmspInboundDistributeMapper;
- import com.steerinfo.dil.model.WmspInboundDistribute;
- import com.steerinfo.dil.service.IWmspInboundDistributeService;
- import com.steerinfo.dil.util.IDUtils;
- import com.steerinfo.framework.mapper.IBaseMapper;
- import com.steerinfo.framework.service.impl.BaseServiceImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.util.*;
- /**
- * WmspInboundDistribute服务实现:
- * @author generator
- * @version 1.0-SNAPSHORT 2022-01-10 02:48
- * 类描述
- * 修订历史:
- * 日期:2022-01-10
- * 作者:generator
- * 参考:
- * 描述:WmspInboundDistribute服务实现
- * @see null
- * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
- */
- @Service(value = "wmspInboundDistributeService")
- public class WmspInboundDistributeServiceImpl extends BaseServiceImpl<WmspInboundDistribute, Short> implements IWmspInboundDistributeService {
- @Autowired
- private WmspInboundDistributeMapper wmspInboundDistributeMapper;
- @Autowired
- private CommonServiceImpl commonService;
- @Autowired
- private WmspInboundDistributeServiceImpl wmspInboundDistributeService;
- @Override
- protected IBaseMapper<WmspInboundDistribute, Short> getMapper() {
- return wmspInboundDistributeMapper;
- }
- @Override
- public WmspInboundDistribute initAndCreateInboundDistribute(BigDecimal personnelWorkshopid,BigDecimal groupId, String userName, int batch) {
- //一、创建一个批次信息
- WmspInboundDistribute wmspInboundDistribute=new WmspInboundDistribute();
- //初始化下发批次信息
- //主键
- wmspInboundDistribute.setDistributeId(IDUtils.createIDYMDHMS(commonService.getSeqCount("seq_WMSP_INBOUND_DISTRIBUTE")));
- //分组
- wmspInboundDistribute.setInboundGroupId(groupId);
- //入库状态 1、下发中、2、已完成、3、已接受、4、已结束
- //如果两个都已经下发改变状态为已下发、只有一个下发改变状态为下发中
- //2、并且当前改变当前用户的,未下发状态为已经下发(给扫码实绩赋值入库实绩id)
- wmspInboundDistribute.setResultStatus(new BigDecimal(1));
- //当前用户批次
- wmspInboundDistribute.setBatch(new BigDecimal(batch));
- //行车工 没有接收是没有这个字段的
- //wmspInboundDistribute.setDistributeId();
- //创建用户
- wmspInboundDistribute.setInsertUsername(userName);
- //创建时间
- wmspInboundDistribute.setInsertTime(new Date());
- //仓库
- wmspInboundDistribute.setPersonnelWorkshopid(personnelWorkshopid);
- //插入数据库
- int status = wmspInboundDistributeMapper.insertSelective(wmspInboundDistribute);
- return status>0?wmspInboundDistribute:null;
- }
- @Override
- public List<Map<String,Object>> getNewDistribute(Integer personnelWorkshopid) {
- List<Map<String,Object>> result= wmspInboundDistributeMapper.getNewDistribute(personnelWorkshopid);
- return wmspInboundDistributeService.getInboundList(result);
- }
- /**
- * 改变状态,添加行车工信息
- * @param mapValue
- * @return
- */
- @Override
- public synchronized Integer grabDistribute(Map<String, Object> mapValue) {
- //判断这一批是否被其他人抢了
- Integer status= wmspInboundDistributeMapper.getDistributeStatus(mapValue.get("distributeId"));
- //如果没有被抢就设置位当前用户得单
- if (status==2){
- return wmspInboundDistributeMapper.grabDistribute(mapValue);
- }
- return 0;
- }
- // 根据获取到的带吊装list进行处理
- @Override
- public List<Map<String, Object>> getInboundList(List<Map<String, Object>> result) {
- // 创建set集合用来存储唯一的number
- HashSet<String> set =new HashSet<>();
- List<Map<String ,Object>> result1=new ArrayList<>();
- // 遍历result
- for(Map<String ,Object> map:result){
- // 判断number是否取值为空
- if (map.get("gridSequenceNumber")!=null) {
- // 取出map中的number值
- // 层序号
- BigDecimal gridSequenceNumber = (BigDecimal) map.get("gridSequenceNumber");
- // 月台Id
- BigDecimal platformId = (BigDecimal)map.get("platformId");
- // 层次号
- BigDecimal gridGradationNumber = (BigDecimal)map.get("gridGradationNumber");
- // 仓库Id
- String warehouseId = map.get("warehouseId").toString();
- // 垛位Id
- BigDecimal stackingId = (BigDecimal)map.get("stackingId");
- // 拼接物资的存储位置
- String number = warehouseId.toString()+platformId.toString()+stackingId.toString()+gridSequenceNumber.toString()+gridGradationNumber.toString();
- // 判断这个number值在set集合中是否已经存在,如果不存在则进行存储
- System.out.println(number);
- if (!set.contains(number)){
- set.add(number);
- result1.add(map);
- }
- }else {
- // 月台Id
- BigDecimal platformId = (BigDecimal)map.get("platformId");
- // 仓库Id
- String warehouseId = map.get("warehouseId").toString();
- // 垛位Id
- BigDecimal resultNumber = (BigDecimal)map.get("resultNumber");
- // 拼接物资的存储位置
- String number = warehouseId.toString()+platformId.toString()+resultNumber.toString();
- // 判断这个number值在set集合中是否已经存在,如果不存在则进行存储
- System.out.println(number);
- if (!set.contains(number)){
- set.add(number);
- result1.add(map);
- }
- }
- }
- // 遍历list集合,对数据按照resultNumber从小到大排序
- // 方法1:
- // 遍历result1,获取关于resultNumber正确排序的集合
- int [] array =new int[result1.size()];
- int i=0;
- for (Map<String ,Object> map:result1){
- Integer num = Integer.valueOf(map.get("resultNumber").toString());
- array[i] = num;
- i++;
- }
- // 对list排序
- Arrays.sort(array);
- // 根据排序好的array数组进行对list的重新排序
- List<Map<String ,Object>> result2=new ArrayList<>();
- // 遍历result1和遍历数组
- for(int j=0;j<array.length;j++){
- for (Map<String ,Object> map:result1){
- int a = Integer.valueOf(map.get("resultNumber").toString());
- if (array[j]==a){
- result2.add(map);
- }
- }
- }
- // 返回过滤之后的list
- return result2;
- }
- @Override
- public int updateDistributeStatus(String distributeId) {
- return wmspInboundDistributeMapper.updateDistributeStatus(distributeId);
- }
- }
|