|
@@ -0,0 +1,129 @@
|
|
|
+package com.fjhx.wms.service.manual.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
+import com.fjhx.flow.service.flow.FlowExampleService;
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.tenant.utils.DeptUstil;
|
|
|
+import com.fjhx.wms.entity.manual.dto.ManualStockDto;
|
|
|
+import com.fjhx.wms.entity.manual.dto.ManualStockSelectDto;
|
|
|
+import com.fjhx.wms.entity.manual.po.ManualStock;
|
|
|
+import com.fjhx.wms.entity.manual.po.ManualStockDetails;
|
|
|
+import com.fjhx.wms.entity.manual.vo.ManualStockDetailsVo;
|
|
|
+import com.fjhx.wms.entity.manual.vo.ManualStockVo;
|
|
|
+import com.fjhx.wms.mapper.manual.ManualStockMapper;
|
|
|
+import com.fjhx.wms.service.manual.ManualStockDetailsService;
|
|
|
+import com.fjhx.wms.service.manual.ManualStockService;
|
|
|
+import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
+import com.ruoyi.common.core.domain.BasePo;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
+import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
+import com.ruoyi.system.utils.UserUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 手动出入库记录 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2024-04-24
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class ManualStockServiceImpl extends ServiceImpl<ManualStockMapper, ManualStock> implements ManualStockService {
|
|
|
+ @Autowired
|
|
|
+ private FlowExampleService flowExampleService;
|
|
|
+ @Autowired
|
|
|
+ private ManualStockDetailsService manualStockDetailsService;
|
|
|
+ @Autowired
|
|
|
+ private WarehouseService warehouseService;
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<ManualStockVo> getPage(ManualStockSelectDto dto) {
|
|
|
+ IWrapper<ManualStock> wrapper = getWrapper();
|
|
|
+
|
|
|
+ wrapper.eq("ms.status", dto.getStatus());
|
|
|
+ wrapper.eq("ms.warehouse_id", dto.getWarehouseId());
|
|
|
+ wrapper.eq("ms.type", dto.getType());
|
|
|
+ wrapper.eq("ms.op_type", dto.getOpType());
|
|
|
+
|
|
|
+ wrapper.keyword(dto.getKeyword(),
|
|
|
+ new SqlField("ms.remarks"),
|
|
|
+ new SqlField("ms.ex_warehouse_person"),
|
|
|
+ new SqlField("ms.code")
|
|
|
+ );
|
|
|
+
|
|
|
+ //权限过滤:库存
|
|
|
+ wrapper.in("ms.company_id", SecurityUtils.getCompanyIds());
|
|
|
+ wrapper.eq("ms.company_id", dto.getCompanyId());
|
|
|
+
|
|
|
+ wrapper.orderByDesc("ms", ManualStock::getCreateTime);
|
|
|
+ wrapper.orderByDesc("ms", ManualStock::getId);
|
|
|
+ Page<ManualStockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ steInfo(page.getRecords());
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void steInfo(List<ManualStockVo> list) {
|
|
|
+ if (ObjectUtil.isEmpty(list)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ UserUtil.assignmentNickName(list, ManualStockVo::getCreateUser, ManualStockVo::setOpUserName);
|
|
|
+ DeptUstil.assignmentNickName(list, ManualStockVo::getCompanyId, ManualStockVo::setCompanyName);
|
|
|
+ warehouseService.attributeAssign(list, ManualStockVo::getWarehouseId, (item, warehouse) -> {
|
|
|
+ item.setWarehouseName(warehouse.getName());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ManualStockVo detail(Long id) {
|
|
|
+ ManualStockVo manualStockVo = baseMapper.detail(id);
|
|
|
+
|
|
|
+ steInfo(Collections.singletonList(manualStockVo));
|
|
|
+
|
|
|
+ List<ManualStockDetails> manualStockDetailsList = manualStockDetailsService.list(q -> q.eq(ManualStockDetails::getManualStockId, id));
|
|
|
+ List<ManualStockDetailsVo> manualStockDetailsVos = BeanUtil.copyToList(manualStockDetailsList, ManualStockDetailsVo.class);
|
|
|
+ productInfoService.attributeAssign(manualStockDetailsVos, ManualStockDetails::getProductId, (item, product) -> {
|
|
|
+ item.setProductName(product.getName());
|
|
|
+ item.setProductCode(product.getCustomCode());
|
|
|
+ });
|
|
|
+ manualStockVo.setList(manualStockDetailsVos);
|
|
|
+ return manualStockVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void add(ManualStockDto manualStockDto) {
|
|
|
+ this.save(manualStockDto);
|
|
|
+ List<ManualStockDetails> list = manualStockDto.getList();
|
|
|
+ list.forEach(item -> item.setManualStockId(manualStockDto.getId()));
|
|
|
+ manualStockDetailsService.saveBatch(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void cancellation(Long businessId) {
|
|
|
+ ManualStock byId = this.getById(businessId);
|
|
|
+ this.update(q -> q
|
|
|
+ .eq(ManualStock::getId, byId.getId())
|
|
|
+ .set(ManualStock::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ );
|
|
|
+ flowExampleService.cancellation(byId.getFlowId());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|