自动化立体仓库 - WMS系统
LSH
2022-08-18 fef3b0760b7394847f143151e8bdce238290e1dc
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,13 +4,18 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.Review;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkLogHandler;
import com.zy.asrs.utils.MatUtils;
import com.zy.common.CodeRes;
import com.zy.common.constant.MesConstant;
@@ -21,13 +26,14 @@
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.*;
/**
 * 移动端服务核心类
@@ -35,7 +41,7 @@
 */
@Slf4j
@Service
public class MobileServiceImpl implements MobileService {
public class MobileServiceImpl extends AbstractHandler<String> implements MobileService{
    @Autowired
    private MatService matService;
@@ -69,6 +75,25 @@
    private StaDescService staDescService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private NodeService nodeService;
    @Autowired
    private ManLocDetlService manLocDetlService;
    @Autowired
    private TestMastService testMastService;
    @Autowired
    private WorkService workService;
    @Value("${mes.url}")
    private String mesUrl;
    @Value("${mes.startUpTestPACK}")
    private String startUpTestPACK;
    @Value("${mes.startUpTestPACK}")
    private String suspendTestPACK;
    @Override
    @Transactional
@@ -180,6 +205,39 @@
            orderService.updateSettle(order.getId(), 2L, userId);
        }
    }
    @Override
    public void onSale(CombParam param) {
        // 获取库位号
        String locno = param.getLocno();
        Node node = nodeService.selectByUuid(locno);
        if (Cools.isEmpty(node)) {
            throw new CoolException(param.getLocno() + ":库位不存在");
        }
        // 获取商品列表
        for(CombParam.CombMat combMat : param.getCombMats()){
            Mat mat = matService.selectByMatnr(combMat.getMatnr());
            if (Cools.isEmpty(mat)){
                throw new CoolException(combMat.getMatnr() + ":商品档案不存在!");
            }
            if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
                throw new CoolException(combMat.getMatnr() + ":商品数量有误!");
            }
            if (Cools.isEmpty(combMat.getBatch())){
                throw new CoolException(combMat.getMatnr() + ":商品批号有误!");
            }
            ManLocDetl manLocDetl = new ManLocDetl();
            manLocDetl.setLocNo(locno);
            manLocDetl.setNodeId(node.getId());
            manLocDetl.setMatnr(combMat.getMatnr());
            manLocDetl.setBatch(combMat.getBatch());
            manLocDetl.setAnfme(combMat.getAnfme());
            if (!manLocDetlService.insert(manLocDetl)) {
                throw new CoolException("商品上架失败!");
            }
        }
    }
    @Override
@@ -554,4 +612,122 @@
            throw new CoolException(locDetl.getLocNo() + "库位不是在库状态");
        }
    }
    /*...........................赣州新增..............以下.............赣州新增...........................*/
    @Override
    @Transactional
    public void startUpTestPACK(TestMast testMast) {
        //启动测试请求
//        ReturnT<String> result=startUpTestPACK1(testMast);
//        if (!result.isSuccess()) {
//            log.error("测试申请失败", testMast.getBarcode());
//            throw new CoolException("测试申请失败");
//        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", testMast.getLocNo()));
        if (Cools.isEmpty(locMast)) {
            throw new CoolException(BaseRes.PARAM);
        }
        Date now = new Date();
        testMast.setStatus(1);
        testMast.setModiTime(now);
        testMast.setAppeTime(now);
        if (!testMastService.insert(testMast)){
            throw new CoolException("添加testMast失败");
        }
        locMast.setPackStatus(1);
        locMast.setModiTime(now);
        if (!locMastService.update(locMast,new EntityWrapper<LocMast>().eq("loc_no", testMast.getLocNo()))){
            throw new CoolException("申请测试失败");
        }
    }
    @Override
    @Transactional
    public void suspendTestPACK() {
        ReturnT<String> result=suspendTestPACK1();
        if (!result.isSuccess()) {
            log.error("暂停测试失败");
        }
    }
    @Transactional
    public ReturnT<String> startUpTestPACK1(TestMast testMast){
        try {
            CombParam combParam = new CombParam();
            combParam.setPackNo(testMast.getLocNo());
            combParam.setPackName(testMast.getUserId());
            combParam.setLocno(testMast.getBarcode());
            combParam.setRequestTime(DateUtils.convert(new Date()));
            return postMesData(startUpTestPACK,combParam);
        }catch (Exception e) {
            log.error("fail", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
    }
    @Transactional
    public ReturnT<String> suspendTestPACK1(){
        try {
            Review review=new Review();
            review.setPause(true);
            review.setRequestTime(DateUtils.convert(new Date()));
            return postMesData(suspendTestPACK,review);
        }catch (Exception e) {
            log.error("fail", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
    }
    private ReturnT<String> postMesData(String mesPath,Object combParam){
        if(combParam != null){
            String response = "";
            boolean success = false;
            try {
                Map<String, Object> map = new HashMap<>();
                map.put("appkey","ea1f0459efc02a79f046f982767939ae");
                response = new HttpHandler.Builder().setHeaders(map)
                        .setUri(mesUrl)
                        .setPath(mesPath)
                        .setJson(JSON.toJSONString(combParam))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code").equals(200)) {
                    if (jsonObject.getDate("isComplete").equals(true)){
                        success = true;
                    }else if (jsonObject.getDate("isComplete").equals(false)){
                        success = false;
                    }else {
                        log.error("返回值出错!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(combParam), response);
                        throw new CoolException("返回值出错");
                    }
                } else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(combParam), response);
                    throw new CoolException("上报mes系统失败");
                }
            } catch (Exception e) {
                log.error("fail", e);
//                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "成品库入库上报",
                            MesConstant.URL + MesConstant.PAKIN_URL,
                            null,
                            "127.0.0.1",
                            JSON.toJSONString(combParam),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        }
        return SUCCESS;
    }
    /*...........................赣州新增..............以上.............赣州新增...........................*/
}