package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.MatCode; import com.zy.asrs.entity.PltBarcode; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.service.*; import com.zy.ints.entity.WaitMatin; import com.zy.ints.service.WaitMatinService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.time.chrono.IsoEra; import java.util.Date; import java.util.List; import java.util.Random; /** * 移动端服务核心类 * Created by vincent on 2020/6/28 */ @Service public class MobileServiceImpl implements MobileService { @Autowired private MatCodeService matCodeService; @Autowired private WaitMatinService waitMatinService; @Autowired private LocDetlService locDetlService; @Autowired private WrkDetlService wrkDetlService; @Autowired private PltBarcodeService pltBarcodeService; @Override @Transactional public void comb(CombParam param, Long userId) { if (Cools.isEmpty(param.getBarcode()) || param.getCombMats().isEmpty()) { throw new CoolException(BaseRes.PARAM); } // int countPak = waitPakinService.selectCount(new EntityWrapper().eq("zpallet", param.getBarcode())); // eq("zpallet", param.getBarcode()).eq("io_status", "N")); int countLoc = locDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getBarcode())); int countWrk = wrkDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getBarcode())); int countPlt = pltBarcodeService.selectCount(new EntityWrapper().eq("barcode",param.getBarcode())); if (countPlt > 0 || countLoc > 0 || countWrk > 0) { throw new CoolException("条码数据已存在"); } Date now = new Date(); if (Cools.isEmpty(param.getBillNo())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Random rand = new Random(); Integer r = rand.nextInt(900)+ 100; String billNo = sdf.format(new Date()) + r; Integer seqNo=0; for (CombParam.CombMat combMat : param.getCombMats()) { MatCode matCode = matCodeService.selectOne(new EntityWrapper().eq("mat_no", combMat.getMatNo())); if (Cools.isEmpty(matCode)) { throw new CoolException("物料数据错误"); } seqNo++; PltBarcode pltBarcode = new PltBarcode(); pltBarcode.setBarcode(param.getBarcode()); pltBarcode.setBillNo(billNo); pltBarcode.setSeqNo(seqNo); pltBarcode.setBillType(5); pltBarcode.setMatNo(matCode.getMatNo()); pltBarcode.setMatName(matCode.getMatName()); pltBarcode.setQty(combMat.getCount()); pltBarcode.setUnit(matCode.getUnit()); pltBarcode.setSpecs(matCode.getSpecs()); pltBarcode.setSize(matCode.getSize()); if(Cools.isEmpty(combMat.getSupplier())){ String supp = sdf.format(new Date()) + r; pltBarcode.setSupplier(supp); }else{ pltBarcode.setSupplier(combMat.getSupplier()); } pltBarcode.setMemo(combMat.getMemo()); pltBarcode.setColor(matCode.getColor()); pltBarcode.setLinkErp(0); pltBarcode.setModiUser(userId); pltBarcode.setModiTime(now); pltBarcode.setAppeUser(userId); pltBarcode.setAppeTime(now); if(matCode.getWeight()==null){ matCode.setWeight(0.0); } if(matCode.getStr6()==null){ matCode.setStr6(0.0); pltBarcode.setAllQty(pltBarcode.getQty()); }else { pltBarcode.setAllQty(matCode.getStr6()*pltBarcode.getQty()); } pltBarcode.setWeight(matCode.getWeight()); pltBarcode.setAllWeight(matCode.getWeight()*pltBarcode.getQty()+30); pltBarcode.setVendor(combMat.getVendor()); pltBarcode.setSource(combMat.getSource()); pltBarcode.setQtyBox(matCode.getStr6()); if (!pltBarcodeService.insert(pltBarcode)) { throw new CoolException("保存数据失败"); } } } else { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Random rand = new Random(); Integer r = rand.nextInt(900)+ 100; // 关联通知单组托 for (CombParam.CombMat combMat : param.getCombMats()) { WaitMatin waitMatin = waitMatinService.selectOne(new EntityWrapper() .eq("bill_no",param.getBillNo()).eq("seq_no",combMat.getSeqNo())); MatCode matCode = matCodeService.selectOne(new EntityWrapper().eq("mat_no", combMat.getMatNo())); if (waitMatin == null) { throw new CoolException("通知单不存在" + combMat.getMatNo() + "数据!"); } if (combMat.getCount() > (waitMatin.getQty()-waitMatin.getInQty())) { throw new CoolException(combMat.getMatNo() + "组托物料数量不足!"); } PltBarcode pltBarcode = new PltBarcode(); pltBarcode.setBarcode(param.getBarcode()); pltBarcode.setBillNo(waitMatin.getBillNo()); pltBarcode.setSeqNo(waitMatin.getSeqNo()); pltBarcode.setBillType(waitMatin.getBillType()); pltBarcode.setMatNo(waitMatin.getMatNo()); pltBarcode.setMatName(waitMatin.getMatName()); pltBarcode.setQty(combMat.getCount()); pltBarcode.setUnit(waitMatin.getUnit()); pltBarcode.setSpecs(waitMatin.getSpecs()); pltBarcode.setSize(waitMatin.getSize()); pltBarcode.setColor(waitMatin.getColor()); pltBarcode.setLinkErp(waitMatin.getLinkErp()); pltBarcode.setModiUser(userId); pltBarcode.setModiTime(now); pltBarcode.setAppeUser(userId); pltBarcode.setAppeTime(now); if(Cools.isEmpty(combMat.getSupplier())){ String supp = sdf.format(new Date()) + r; pltBarcode.setSupplier(supp); }else{ pltBarcode.setSupplier(combMat.getSupplier()); } if(matCode.getWeight()==null){ matCode.setWeight(0.0); } if(matCode.getStr6()==null){ matCode.setStr6(0.0); pltBarcode.setAllQty(pltBarcode.getQty()); }else { pltBarcode.setAllQty(matCode.getStr6()*pltBarcode.getQty()); } pltBarcode.setWeight(matCode.getWeight()); pltBarcode.setAllWeight(matCode.getWeight()*pltBarcode.getQty()+30); pltBarcode.setVendor(combMat.getVendor()); pltBarcode.setSource(combMat.getSource()); if (!pltBarcodeService.insert(pltBarcode)) { throw new CoolException("保存数据失败"); } waitMatin.setInQty(combMat.getCount() + waitMatin.getInQty()); if (!waitMatinService.update(waitMatin,new EntityWrapper() .eq("bill_no",param.getBillNo()).eq("seq_no",combMat.getSeqNo()))){ throw new CoolException("更新数据失败"); } } } } }