cy
2023-12-02 8053bbe2796ca90b142a3030d921a8b74727a0dd
consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java
@@ -1,14 +1,17 @@
package com.consum.base.core;
import com.consum.base.core.tools.SqlParameter;
import com.consum.base.core.util.DateUtil;
import com.consum.base.core.param.BaseWarehouseParam;
import com.consum.base.core.utils.DateUtil;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.SqlParameter;
import com.consum.model.po.*;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.jdbc.service.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
@@ -20,6 +23,7 @@
 */
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public class WarehouseCoreService extends BaseServiceImpl {
    public static void main(String[] args) {
@@ -45,7 +49,7 @@
            List<CheckUsingResult> results;
            String key = param.getLending_id();
            String key = param.getLending_id().toString();
            /**
             * 此处将同一个仓库下的同一个型号上锁,不同仓库、不同型号不受影响。
@@ -68,7 +72,7 @@
    /**
     * 统一出入库
     */
    public List<CheckWarehouseResult> unifyCheck(CheckWarehouseParam param) {
    public List<CheckWarehouseResult> unifyCheck(BaseWarehouseParam param) {
        // TODO: 10/10/2023 此处加了唯一锁,会影响性能,思考是否有更合适的办法
        try {
            Assert.notNull(param, "wareHouse param can not null !");
@@ -125,6 +129,12 @@
            CheckUsingResult result = new CheckUsingResult();
            DepFormLendingGoods goods = get(new DepFormLendingGoods(),"id=?",new Object[]{model.getDepFormLendingGoodsId()});
            //如果是A类物品,则需要与持有人等同
            if (goods.getClassification() == "A" && (goods.getGoodsUserName().equals(param.getUser_name()))) {
                continue;
            }
            //如果当前持有人持有物品数量大于出库数量,则直接减掉数量即可。
            if (model.getUsingCount() > shengyu){
                result.setInitial_count(model.getUsingCount());
@@ -181,7 +191,7 @@
                //如果出库的型号与分发单里的型号相同
                if (goods.getBaseGoodsModelsId().longValue() == output.getWhGoods().getBaseGoodsModelsId().longValue()){
                    DepFormLendingModel model = new DepFormLendingModel();
                    model.setId(NumberGenerator.getLongSequenceNumber());
                    model.setId(IdUtil.generateId());
                    model.setCounts(goods.getCounts());
                    model.setDepFormLendingGoodsId(goods.getId());
                    model.setDepFormLendingId(goods.getDepFormLendingId());
@@ -214,7 +224,7 @@
    /**
     * 出库
     */
    private List<CheckWarehouseResult> checkout(CheckWarehouseParam param) {
    private List<CheckWarehouseResult> checkout(BaseWarehouseParam param) {
        //查询出指定仓库、指定型号,状态为正常的的库存物品,按照采购时间倒叙、价格倒叙排列
       String sql = "SELECT\n" +
                "   * \n" +
@@ -261,7 +271,7 @@
                    //变更状态为调拨
                    nGoods.setStates(param.getOutput_type());
                    nGoods.setWhCount(param.getCount());
                    nGoods.setId(NumberGenerator.getLongSequenceNumber());
                    nGoods.setId(IdUtil.generateId());
                    insert(nGoods);
                    CheckWarehouseResult nresult = new CheckWarehouseResult();
@@ -303,7 +313,7 @@
    /**
     * 入库
     */
    private CheckWarehouseResult checkin(CheckWarehouseParam param) throws RuntimeException {
    private CheckWarehouseResult checkin(BaseWarehouseParam param) throws RuntimeException {
        //如果是采购入库
        if (param.getFirst_input_type() ==1){
@@ -311,7 +321,7 @@
            WhFormProcure procure = get(new WhFormProcure(),"ID=?",new Object[]{procureModel.getWhFormProcureId()});
            WhGoods goods = new WhGoods();
            goods.setId(NumberGenerator.getLongSequenceNumber());
            goods.setId(IdUtil.generateId());
            goods.setBaseGoodsTemplateId(procureModel.getBaseGoodsTemplateId());
            goods.setGoodsTemplateName(procureModel.getGoodsTemplateName());
            goods.setBaseGoodsModelsId(procureModel.getBaseGoodsModelsId());