王佳豪
2021-04-30 ed72baa5f60f2d86cc58799ce96c658321a54d79
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -3,21 +3,31 @@
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<LocNormalMapper, LocNormal> implements LocNormalService {
    @Autowired
    ErpSqlServer erpSqlServer;
    @Autowired
    OutStockMapper outStockMapper;
    @Override
    public List<LocNormal> getLocNormalData() {
@@ -44,11 +54,44 @@
        // 平仓入库后更新中间表数据,Fflag_finish改为1,表示平仓入库成功
        if (list.size() > 0) {
            for (Integer i = 0; i < list.size(); i++) {
                String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = '" + list.get(i).getSupplier() + "' and Fnumber = '" + list.get(i).getMatnr() +"'";
                erpSqlServer.update(sql);
                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<CPICMO> 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
@@ -83,4 +126,39 @@
    public void pdaLocNormalMove(List<LocNormal> list) {
        baseMapper.pdaLocNormalMove(list);
    }
    @Override
    public List<LocNormal> queryLocNorlMatnr(String fbillNo) {
        List<OutStockBillEntry> matList = outStockMapper.queryMatnrWithBillNo(fbillNo);
        List<LocNormal> locNormal = new ArrayList<>();
        List<LocNormal> 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;
    }
}