From 06e2ce23ba5944161e5bd32dd2ac63a6aee60013 Mon Sep 17 00:00:00 2001 From: 杨凯 <398860375@qq.com> Date: 星期三, 18 十月 2023 12:03:27 +0800 Subject: [PATCH] 数据库WH_GOODS删除调拨数量,总数量。在调拨时重新生成调拨物品WH_GOODS表中重新生成记录。 --- consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java | 160 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 116 insertions(+), 44 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java index e21dd52..324bf71 100644 --- a/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java +++ b/consum-base/src/main/java/com/consum/base/core/WarehouseCoreService.java @@ -1,14 +1,16 @@ package com.consum.base.core; import com.consum.base.core.tools.SqlParameter; +import com.consum.base.core.util.DateUtil; 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.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import java.util.ArrayList; import java.util.List; @@ -18,7 +20,6 @@ @Service @Slf4j public class WarehouseCoreService extends BaseServiceImpl { - public static void main(String[] args) { WhGoods goods = new WhGoods(); @@ -34,20 +35,21 @@ /** * 缁熶竴鍑哄叆搴� */ - public CheckWarehouseResult unifyCheck(CheckWarehouseParam param) { + public List<CheckWarehouseResult> unifyCheck(CheckWarehouseParam param) { // TODO: 10/10/2023 姝ゅ鍔犱簡鍞竴閿侊紝浼氬奖鍝嶆�ц兘锛屾�濊�冩槸鍚︽湁鏇村悎閫傜殑鍔炴硶 try { Assert.notNull(param, "wareHouse param can not null !"); Assert.notNull(param.getWarehouseId(), "wareHouse id can not null"); - CheckWarehouseResult result; + List<CheckWarehouseResult> results; synchronized (param.getWarehouseId()) { if (param.getIsCheckIn()) { - result = checkin(param); + results = new ArrayList<>(); + results.add(checkin(param)); } else { - result = checkout(param); + results = checkout(param); } } - return result; + return results; } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e.getMessage()); @@ -58,25 +60,101 @@ /** * 鍑哄簱 */ - private CheckWarehouseResult checkout(CheckWarehouseParam param) { - return new CheckWarehouseResult(); + private List<CheckWarehouseResult> checkout(CheckWarehouseParam param) { + //鏌ヨ鍑烘寚瀹氫粨搴撱�佹寚瀹氬瀷鍙凤紝鐘舵�佷负姝e父鐨勭殑搴撳瓨鐗╁搧锛屾寜鐓ч噰璐椂闂村�掑彊銆佷环鏍煎�掑彊鎺掑垪 + String sql = "SELECT\n" + + " * \n" + + "FROM\n" + + " WH_GOODS \n" + + "WHERE\n" + + " WAREHOUSE_ID =:WAREHOUSE_ID \n" + + " AND BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID \n" + + " AND STATES =1 \n" + + " AND WH_COUNT > 0 \n" + + " order by PROCURE_DATE asc PRICE DESC"; + SqlParameter parameter = new SqlParameter(); + parameter.add("WAREHOUSE_ID",param.getWarehouseId()) + .add("BASE_GOODS_MODELS_ID",param.getModelId()); + List<WhGoods> goodsList = select(sql,parameter,new WhGoods()); + List<CheckWarehouseResult> resultList = new ArrayList<>(); + + int shengyu = param.getCount(); + + for (WhGoods goods : goodsList){ + if (shengyu <= 0 ) break; + + //濡傛灉搴撳瓨鏁伴噺澶т簬鍑哄簱鏁伴噺锛岀洿鎺ュ噺搴撳瓨 + if (shengyu <= goods.getWhCount()){ + shengyu = 0; + + CheckWarehouseResult result = new CheckWarehouseResult(); + result.setWhGoods(goods); + result.setInitial_count(goods.getWhCount()); + goods.setWhCount(goods.getWhCount() - param.getCount()); + result.setEnd_count(goods.getWhCount()); + resultList.add(result); + + //濡傛灉鍑忓簱瀛樺悗锛屽簱瀛樻暟涓�0锛屽垯鍙樻洿鐘舵�佷负宸插垹闄� + if (goods.getWhCount() == 0){ + goods.setStates(0); + } + update(goods); + + //濡傛灉鏄皟鎷ㄥ嚭搴� 2:璋冩嫧锛�3锛氭姤搴� + if (param.getOutput_type() == 2 || param.getOutput_type() == 3){ + WhGoods nGoods = new WhGoods(); + BeanUtils.copyProperties(goods,nGoods); + //鍙樻洿鐘舵�佷负璋冩嫧 + nGoods.setStates(param.getOutput_type()); + nGoods.setWhCount(param.getCount()); + nGoods.setId(NumberGenerator.getLongSequenceNumber()); + insert(nGoods); + + CheckWarehouseResult nresult = new CheckWarehouseResult(); + nresult.setWhGoods(nGoods); + nresult.setInitial_count(0); + nresult.setEnd_count(nresult.getEnd_count()); + resultList.add(nresult); + } + + return resultList; + + } + + //濡傛灉搴撳瓨鏁伴噺灏忎簬鍑哄簱鏁伴噺锛屽垯闇�瑕佸嚑涓簱瀛樼墿鍝佷竴璧峰嚭搴撱�� + + CheckWarehouseResult result = new CheckWarehouseResult(); + result.setInitial_count(goods.getWhCount()); + result.setEnd_count(0); + result.setWhGoods(goods); + resultList.add(result); + + shengyu = param.getCount() - goods.getWhCount(); + if (shengyu < 0){ + throw new RuntimeException("鍑哄簱鏃讹紝璁$畻閿欒"); + } + goods.setWhCount(0); + goods.setStates(0); + update(goods); + } + + throw new RuntimeException("鍑哄簱鏃讹紝璁$畻閿欒"); } private BaseWarehouse getWarehouse(long id){ - BaseWarehouse w = get(new BaseWarehouse(),"ID=:ID",new Object[]{id}); + BaseWarehouse w = get(new BaseWarehouse(),"ID=?",new Object[]{id}); return w; } /** * 鍏ュ簱 */ - private CheckWarehouseResult checkin(CheckWarehouseParam param) { + private CheckWarehouseResult checkin(CheckWarehouseParam param) throws RuntimeException { //濡傛灉鏄噰璐叆搴� if (param.getFirst_input_type() ==1){ - WhFormProcureModel procureModel = get(new WhFormProcureModel(),"ID=:ID",new Object[]{param.getFirstInputCode()}); - WhFormProcure procure = get(new WhFormProcure(),"ID=:ID",new Object[]{procureModel.getWhFormProcureId()}); - + WhFormProcureModel procureModel = get(new WhFormProcureModel(),"ID=?",new Object[]{param.getFirstInputCode()}); + WhFormProcure procure = get(new WhFormProcure(),"ID=?",new Object[]{procureModel.getWhFormProcureId()}); WhGoods goods = new WhGoods(); goods.setId(NumberGenerator.getLongSequenceNumber()); @@ -85,8 +163,6 @@ goods.setBaseGoodsModelsId(procureModel.getBaseGoodsModelsId()); goods.setBaseGoodsModelsName(procureModel.getBaseGoodsModelsName()); goods.setWhCount(procureModel.getCounts()); - goods.setTransferCount(0); - goods.setAllCount(procureModel.getCounts()); goods.setFirstInputCode(param.getFirstInputCode()); goods.setFirstInputType(param.getFirst_input_type()); goods.setFirstInputHisId(NumberGenerator.getLongSequenceNumber()); @@ -101,10 +177,15 @@ insert(goods); CheckWarehouseResult result = new CheckWarehouseResult(); - result.setGoods(goods); + result.setWhGoods(goods); result.setInitial_count(0); - result.setEnd_count(goods.getAllCount()); + result.setEnd_count(goods.getWhCount()); return result; + //闆舵槦鍏ュ簱 + } else if (param.getFirst_input_type() ==2){ + + return null; + } String sql = "SELECT\n" + @@ -114,7 +195,8 @@ "WHERE\n" + " WAREHOUSE_ID =:WAREHOUSE_ID \n" + " AND FIRST_INPUT_CODE =:FIRST_INPUT_CODE \n" + - " AND BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID"; + " AND BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID" + + " order by PROCURE_DATE desc PRICE asc"; SqlParameter parameter = new SqlParameter(); parameter.add("WAREHOUSE_ID",param.getWarehouseId()) .add("FIRST_INPUT_CODE",param.getFirstInputCode()) @@ -122,35 +204,25 @@ List<WhGoods> goodsList = select(sql,parameter,new WhGoods()); - //绗竴娆″叆搴擄細閲囪喘鍏ュ簱鎴栬�呴浂鏄熷叆搴� if (goodsList == null || goodsList.size() == 0){ - BaseGoodsModels m = new BaseGoodsModels(); - m.setId(param.getModelId()); - BaseGoodsModels models = get(m); + new RuntimeException("鏌ヤ笉鍒板巻鍙插簱瀛�"); + return null; + } - BaseGoodsTemplate t = new BaseGoodsTemplate(); - t.setId(models.getGoodsTemplatesId()); - BaseGoodsTemplate template = get(t); + for (WhGoods goods : goodsList){ + CheckWarehouseResult result = new CheckWarehouseResult(); + result.setWhGoods(goods); + result.setInitial_count(goods.getWhCount()); + result.setEnd_count(goods.getWhCount() + param.getCount()); - BaseWarehouse w = new BaseWarehouse(); - w.setId(param.getWarehouseId()); - BaseWarehouse warehouse = get(w); + WhGoods newGoods = new WhGoods(); + newGoods.setId(goods.getId()); + newGoods.setWhCount(result.getEnd_count()); + newGoods.setStates(1); + newGoods.setBackDate(DateUtil.getCurrentDateFor14()); + this.update(newGoods); - WhGoods goods = new WhGoods(); - goods.setId(NumberGenerator.getLongSequenceNumber()); - goods.setBaseGoodsTemplateId(template.getId()); - goods.setGoodsTemplateName(template.getGoodsName()); - goods.setBaseGoodsModelsId(models.getId()); - goods.setBaseGoodsModelsName(models.getModelName()); - goods.setWhCount(param.getCount()); - goods.setTransferCount(0); - goods.setAllCount(param.getCount()); - goods.setFirstInputCode(param.getFirstInputCode()); -// goods.setFirstInputType(); 杩欎釜鍊煎湪涓氬姟浠g爜灞傞潰娣诲姞 -// goods.setFirstInputHisId();杩欎釜鍊煎湪涓氬姟浠g爜灞傞潰娣诲姞 - goods.setWarehouseId(param.getWarehouseId()); - goods.setWarehouseName(warehouse.getWarehouseName()); - + return result; } -- Gitblit v1.9.1