package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.asrs.entity.LocNormal; import com.zy.asrs.mapper.LocNormalMapper; import com.zy.asrs.mapper.OutStockMapper; import com.zy.asrs.service.LocNormalService; import com.zy.common.service.erp.ErpSqlServer; import com.zy.common.service.erp.entity.CPICMO; import com.zy.common.service.erp.entity.OutStockBillEntry; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Slf4j @Service("locNormalService") public class LocNormalServiceImpl extends ServiceImpl implements LocNormalService { @Autowired ErpSqlServer erpSqlServer; @Autowired OutStockMapper outStockMapper; @Override public List getLocNormalData() { return baseMapper.getLocNormalData(); } @Override public void updateLocNormal(String matnr, BigDecimal anfme, Long modiUser, Date modiTime, Integer id) { baseMapper.updateLocNormal(matnr, anfme, modiUser, modiTime, id); } @Override public void outLocNormal(String matnr, Long modiUser, Date modiTime, Integer id) { baseMapper.outLocNormal(matnr, modiUser, modiTime, id); } @Override public void removeLocNormal(String matnr, Long modiUser, Date modiTime, Integer id) { baseMapper.removeLocNormal(matnr, modiUser, modiTime, id); } @Override public void locNormalIn(List list) { // 平仓入库后更新中间表数据,Fflag_finish改为1,表示平仓入库成功 if (list.size() > 0) { for (Integer i = 0; i < list.size(); i++) { if (!Cools.isEmpty(list.get(i).getSupplier())) { // 存在入库单号的才进行erp更新 String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''"; sql = MessageFormat.format(sql, list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getSupplier()); if (erpSqlServer.update(sql) > 0) { sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''"; sql = MessageFormat.format(sql, list.get(i).getMatnr(), list.get(i).getSupplier()); List select = erpSqlServer.select(sql, CPICMO.class); CPICMO cpicmo = select.get(0); boolean complete = false; if (cpicmo.getFQty() > 0) { if (cpicmo.getFAuxCommitQty() >= cpicmo.getFQty()) { complete = true; } } else { if (cpicmo.getFAuxCommitQty() >= cpicmo.getFAuxQty()) { complete = true; } } if (complete) { if (!completeCPakIn(list.get(i).getSupplier(), list.get(i).getMatnr())) { log.error("{}平仓入库单标记完成失败", list.get(i).getSupplier()); } } } } } } // 平仓入库逻辑 baseMapper.locNormalIn(list); } /** * 成品入库单标记完成 */ private boolean completeCPakIn(String FBillNo, String Fnumber){ String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''"; sql = MessageFormat.format(sql, FBillNo, Fnumber); return erpSqlServer.update(sql) > 0; } @Override public void pdaLocNormalIn(List list) { baseMapper.pdaLocNormalIn(list); } @Override public List pdaLocNormalQuery(String matnr, String warehouse, String billNo) { return baseMapper.pdaLocNormalQuery(matnr, warehouse, billNo); } @Override public void pdaLocNormalOut(List list) { for (Integer i = 0; i < list.size(); i++) { if (list.get(i).getAnfme().equals(list.get(i).getAnfmeOut())) { baseMapper.pdaLocNormalOut1(list.get(i).getId(), list.get(i).getMatnr(), list.get(i).getModiUser(), list.get(i).getModiTime(), list.get(i).getWarehouse()); } if (list.get(i).getAnfmeOut().compareTo(list.get(i).getAnfme()) == -1) { BigDecimal diff = (list.get(i).getAnfme()).subtract(list.get(i).getAnfmeOut()); baseMapper.pdaLocNormalOut2(list.get(i).getId(), list.get(i).getMatnr(), diff, list.get(i).getModiUser(), list.get(i).getModiTime(), list.get(i).getWarehouse()); } } } @Override public List pdaLocNormalWarehouseQuery(String warehouse, String matnr) { return baseMapper.pdaLocNormalWarehouseQuery(warehouse, matnr); } @Override public void pdaLocNormalMove(List list) { baseMapper.pdaLocNormalMove(list); } @Override public List queryLocNorlMatnr(String fbillNo) { List matList = outStockMapper.queryMatnrWithBillNo(fbillNo); List locNormal = new ArrayList<>(); List locNormalResult = new ArrayList<>(); for (Integer i = 0; i < matList.size(); i++) { locNormal = baseMapper.queryLocNorlMatnr(matList.get(i).getFnumber()) ; if (locNormal.size() > 0) { for (LocNormal e:locNormal) { LocNormal obj = new LocNormal(); obj.setMatnr(e.getMatnr()); obj.setMaktx(e.getMaktx()); obj.setLgnum(e.getLgnum()); obj.setType(e.getType()); obj.setMnemonic(e.getMnemonic()); obj.setSupplier(e.getSupplier()); obj.setWarehouse(e.getWarehouse()); obj.setBrand(e.getBrand()); obj.setAnfme(e.getAnfme()); obj.setBname(e.getBname()); obj.setMemo(e.getMemo()); obj.setModiUser(e.getModiUser()); obj.setModiTime(e.getModiTime()); obj.setAppeUser(e.getAppeUser()); obj.setAppeTime(e.getAppeTime()); obj.setState(e.getState()); obj.setWarehouseName(e.getWarehouseName()); obj.setId(e.getId()); locNormalResult.add(obj); } } } return locNormalResult; } }