import cn.hutool.core.util.StrUtil; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.ruoyi.common.core.domain.BaseIdPo; import com.sd.SdApplication; import com.sd.business.entity.bom.po.BomSpec; import com.sd.business.entity.in.po.InOutStorageDetails; import com.sd.business.entity.inventory.po.Inventory; import com.sd.business.service.bom.BomSpecService; import com.sd.business.service.in.InOutStorageDetailsService; import com.sd.business.service.inventory.InventoryService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RunWith(SpringRunner.class) @SpringBootTest(classes = SdApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class C2_SyncInventoryTest { @Autowired private BomSpecService bomSpecService; @Autowired private InventoryService inventoryService; @Autowired private InOutStorageDetailsService inOutStorageDetailsService; /** * string修改库存 */ @DSTransactional @Test public void test() { String a = "204010400192 1442\n" + "204010400195 2170\n" + "204010400198 6\n" + "204010400193 926\n" + "204010400196 4125\n" + "204010400199 2"; List> list = Arrays.stream(a.split("\n")) .map(item -> Arrays.stream(item.split(" ")).filter(StrUtil::isNotBlank).collect(Collectors.toList())) .collect(Collectors.toList()); Map bomSpecMap = bomSpecService.mapKV(BomSpec::getCode, BaseIdPo::getId, null); for (List data : list) { String code = data.get(0); String quantity = data.size() == 1 ? "0" : data.get(1); Long bomSpecId = bomSpecMap.get(code); if (bomSpecId == null) { System.err.println(code + " 为空"); } boolean update = inventoryService.update(q -> q .eq(Inventory::getBomSpecId, bomSpecId) .eq(Inventory::getWarehouseId, 1684037244354052098L) .eq(Inventory::getDepartmentId, 0L) .set(Inventory::getQuantity, quantity) ); if (!update) { Inventory inventory = new Inventory(); inventory.setBomSpecId(bomSpecId); inventory.setWarehouseId(1684037244354052098L); inventory.setDepartmentId(0L); inventory.setQuantity(new BigDecimal(quantity)); inventory.setBalanceUnitPrice(BigDecimal.ZERO); inventoryService.save(inventory); System.err.println(code + " 0库存"); } boolean update1 = inOutStorageDetailsService.update(q -> q .eq(InOutStorageDetails::getBomSpecId, bomSpecId) .eq(InOutStorageDetails::getWarehouseId, 1684037244354052098L) .eq(InOutStorageDetails::getDepartmentId, 0L) .set(InOutStorageDetails::getQuantity, quantity) ); if (!update1) { System.err.println(code + " 0结存"); InOutStorageDetails inOutStorageDetails = new InOutStorageDetails(); inOutStorageDetails.setBomSpecId(bomSpecId); inOutStorageDetails.setWarehouseId(1684037244354052098L); inOutStorageDetails.setDepartmentId(0L); inOutStorageDetails.setQuantity(new BigDecimal(quantity)); inOutStorageDetails.setInUnitPrice(BigDecimal.ZERO); inOutStorageDetailsService.save(inOutStorageDetails); } } } }