C2_SyncInventoryTest.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import cn.hutool.core.util.StrUtil;
  2. import com.baomidou.dynamic.datasource.annotation.DSTransactional;
  3. import com.ruoyi.common.core.domain.BaseIdPo;
  4. import com.sd.SdApplication;
  5. import com.sd.business.entity.bom.po.BomSpec;
  6. import com.sd.business.entity.in.po.InOutStorageDetails;
  7. import com.sd.business.entity.inventory.po.Inventory;
  8. import com.sd.business.service.bom.BomSpecService;
  9. import com.sd.business.service.in.InOutStorageDetailsService;
  10. import com.sd.business.service.inventory.InventoryService;
  11. import org.junit.Test;
  12. import org.junit.runner.RunWith;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.boot.test.context.SpringBootTest;
  15. import org.springframework.test.context.junit4.SpringRunner;
  16. import java.math.BigDecimal;
  17. import java.util.Arrays;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.stream.Collectors;
  21. @RunWith(SpringRunner.class)
  22. @SpringBootTest(classes = SdApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
  23. public class C2_SyncInventoryTest {
  24. @Autowired
  25. private BomSpecService bomSpecService;
  26. @Autowired
  27. private InventoryService inventoryService;
  28. @Autowired
  29. private InOutStorageDetailsService inOutStorageDetailsService;
  30. /**
  31. * string修改库存
  32. */
  33. @DSTransactional
  34. @Test
  35. public void test() {
  36. String a = "204010400192 1442\n" +
  37. "204010400195 2170\n" +
  38. "204010400198 6\n" +
  39. "204010400193 926\n" +
  40. "204010400196 4125\n" +
  41. "204010400199 2";
  42. List<List<String>> list = Arrays.stream(a.split("\n"))
  43. .map(item -> Arrays.stream(item.split(" ")).filter(StrUtil::isNotBlank).collect(Collectors.toList()))
  44. .collect(Collectors.toList());
  45. Map<String, Long> bomSpecMap = bomSpecService.mapKV(BomSpec::getCode, BaseIdPo::getId, null);
  46. for (List<String> data : list) {
  47. String code = data.get(0);
  48. String quantity = data.size() == 1 ? "0" : data.get(1);
  49. Long bomSpecId = bomSpecMap.get(code);
  50. if (bomSpecId == null) {
  51. System.err.println(code + " 为空");
  52. }
  53. boolean update = inventoryService.update(q -> q
  54. .eq(Inventory::getBomSpecId, bomSpecId)
  55. .eq(Inventory::getWarehouseId, 1684037244354052098L)
  56. .eq(Inventory::getDepartmentId, 0L)
  57. .set(Inventory::getQuantity, quantity)
  58. );
  59. if (!update) {
  60. Inventory inventory = new Inventory();
  61. inventory.setBomSpecId(bomSpecId);
  62. inventory.setWarehouseId(1684037244354052098L);
  63. inventory.setDepartmentId(0L);
  64. inventory.setQuantity(new BigDecimal(quantity));
  65. inventory.setBalanceUnitPrice(BigDecimal.ZERO);
  66. inventoryService.save(inventory);
  67. System.err.println(code + " 0库存");
  68. }
  69. boolean update1 = inOutStorageDetailsService.update(q -> q
  70. .eq(InOutStorageDetails::getBomSpecId, bomSpecId)
  71. .eq(InOutStorageDetails::getWarehouseId, 1684037244354052098L)
  72. .eq(InOutStorageDetails::getDepartmentId, 0L)
  73. .set(InOutStorageDetails::getQuantity, quantity)
  74. );
  75. if (!update1) {
  76. System.err.println(code + " 0结存");
  77. InOutStorageDetails inOutStorageDetails = new InOutStorageDetails();
  78. inOutStorageDetails.setBomSpecId(bomSpecId);
  79. inOutStorageDetails.setWarehouseId(1684037244354052098L);
  80. inOutStorageDetails.setDepartmentId(0L);
  81. inOutStorageDetails.setQuantity(new BigDecimal(quantity));
  82. inOutStorageDetails.setInUnitPrice(BigDecimal.ZERO);
  83. inOutStorageDetailsService.save(inOutStorageDetails);
  84. }
  85. }
  86. }
  87. }