diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java index 6bf802a2..ff7d61a1 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java @@ -1,6 +1,7 @@ package com.bonus.sgzb.base.controller; import com.bonus.sgzb.base.domain.MaPartType; +import com.bonus.sgzb.base.domain.vo.MaPartTypeVo; import com.bonus.sgzb.base.service.IPartTypeService; import com.bonus.sgzb.common.core.utils.poi.ExcelUtil; import com.bonus.sgzb.common.core.web.controller.BaseController; @@ -44,6 +45,19 @@ public class MaPartTypeController extends BaseController { return AjaxResult.success(list); } + /** + * 查询配件类型列表 + * @param maPartType + * @return + */ + @GetMapping("/getList") + public AjaxResult getList(MaPartType maPartType) + { + startPage(); + List list = maPartTypeService.getList(maPartType); + return AjaxResult.success(getDataTable(list)); + } + /** * 新增配件管理 * @param maPartType diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/vo/MaPartTypeVo.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/vo/MaPartTypeVo.java new file mode 100644 index 00000000..ab5dce2f --- /dev/null +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/vo/MaPartTypeVo.java @@ -0,0 +1,96 @@ +package com.bonus.sgzb.base.domain.vo; + +import com.bonus.sgzb.common.core.annotation.Excel; +import com.bonus.sgzb.common.core.web.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 配件类型管理ma_part_type(MaPartType)表实体类 + * + * @author makejava + * @since 2023-11-27 16:44:09 + */ +@SuppressWarnings("serial") +@Data +public class MaPartTypeVo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 一级配件类型id + */ + private Long firstPaId; + + /** + * 二级配件类型id + */ + private Long secondPaId; + + /** + * 三级配件类型id + */ + private Long thirdPaId; + + @Excel(name = "配件类型") + private String paType; + + @Excel(name = "配件名称") + private String paName; + + @Excel(name = "配件规格") + private String paSpec; + + private Long parentId; + + @Excel(name = "实时库存") + private String num; + + @Excel(name = "计量单位") + private String unitName; + + @Excel(name = "购置价格") + private String buyPrice; + + /** + * 层级 + */ + private String level; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 创建者 + */ + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新者 + */ + private String updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + /** + * 数据所属组织 + */ + private String companyId; +} + diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/MaPartTypeMapper.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/MaPartTypeMapper.java index 1b3799b3..c19c68fd 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/MaPartTypeMapper.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/MaPartTypeMapper.java @@ -1,6 +1,7 @@ package com.bonus.sgzb.base.mapper; import com.bonus.sgzb.base.domain.MaPartType; +import com.bonus.sgzb.base.domain.vo.MaPartTypeVo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -52,5 +53,12 @@ public interface MaPartTypeMapper { MaPartType getById(Long paId); int updateById(MaPartType maPartType); + + /** + * 查询配件类型列表 + * @param maPartType + * @return + */ + List getList(MaPartType maPartType); } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java index 34e844aa..150e7778 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java @@ -2,6 +2,7 @@ package com.bonus.sgzb.base.service; import com.bonus.sgzb.base.domain.MaPartType; +import com.bonus.sgzb.base.domain.vo.MaPartTypeVo; import java.util.List; @@ -58,6 +59,13 @@ public interface IPartTypeService { MaPartType getById(Long paId); int updateById(MaPartType maPartType); + + /** + * 查询配件类型列表 + * @param maPartType + * @return + */ + List getList(MaPartType maPartType); } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java index 64d4c25b..8b475a40 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java @@ -1,6 +1,7 @@ package com.bonus.sgzb.base.service.impl; import com.bonus.sgzb.base.domain.MaPartType; +import com.bonus.sgzb.base.domain.vo.MaPartTypeVo; import com.bonus.sgzb.base.mapper.MaPartTypeMapper; import com.bonus.sgzb.base.service.IPartTypeService; import com.bonus.sgzb.common.core.constant.UserConstants; @@ -98,5 +99,15 @@ public class MaPartTypeServiceImpl implements IPartTypeService { public int updateById(MaPartType maPartType) { return maPartTypeMapper.updateById(maPartType); } + + /** + * 查询配件类型列表 + * @param maPartType + * @return + */ + @Override + public List getList(MaPartType maPartType) { + return maPartTypeMapper.getList(maPartType); + } } diff --git a/sgzb-modules/sgzb-base/src/main/resources/mapper/app/BackReceiveMapper.xml b/sgzb-modules/sgzb-base/src/main/resources/mapper/app/BackReceiveMapper.xml index 7cfe9a8e..3a19d12c 100644 --- a/sgzb-modules/sgzb-base/src/main/resources/mapper/app/BackReceiveMapper.xml +++ b/sgzb-modules/sgzb-base/src/main/resources/mapper/app/BackReceiveMapper.xml @@ -698,7 +698,7 @@ and bai.back_source =#{backSource} - AND bai.back_time BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59') + AND DATE_FORMAT( bai.back_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime} GROUP BY bai.id, diff --git a/sgzb-modules/sgzb-base/src/main/resources/mapper/base/MaPartTypeMapper.xml b/sgzb-modules/sgzb-base/src/main/resources/mapper/base/MaPartTypeMapper.xml index 50ff4ce0..955c92e4 100644 --- a/sgzb-modules/sgzb-base/src/main/resources/mapper/base/MaPartTypeMapper.xml +++ b/sgzb-modules/sgzb-base/src/main/resources/mapper/base/MaPartTypeMapper.xml @@ -99,4 +99,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from ma_part_type where pa_id = #{paId} + + \ No newline at end of file diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/BackApplyInfo.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/BackApplyInfo.java index 73cd8d46..d4de2c19 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/BackApplyInfo.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/BackApplyInfo.java @@ -301,4 +301,7 @@ public class BackApplyInfo extends BaseEntity { @ApiModelProperty(value = "总在用数量") private Integer totalUseNum; + + @ApiModelProperty(value = "退料申请数量") + private Integer backApplyNum; } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchaseMacodeInfo.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchaseMacodeInfo.java index 78116a02..76eb6c72 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchaseMacodeInfo.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchaseMacodeInfo.java @@ -167,6 +167,17 @@ public class PurchaseMacodeInfo extends BaseEntity @ApiModelProperty(value = "类型管理方式") private String manageType; + @ApiModelProperty(value = "入库数量") + private Integer inputNum; + + public Integer getInputNum() { + return inputNum; + } + + public void setInputNum(Integer inputNum) { + this.inputNum = inputNum; + } + public String getUnitName() { return unitName; } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java index 5509e64d..1ffa0221 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/BackApplyMapper.java @@ -192,4 +192,18 @@ public interface BackApplyMapper { * @return */ List getUseInfoList(BackApplyInfo bean); + + /** + * 获取退料申请数量 + * @param bean + * @return + */ + List getBackApplyNum(BackApplyInfo bean); + + /** + * 查询已退料数量 + * @param backApplyInfo + * @return + */ + BackApplyInfo getBackNum(BackApplyInfo backApplyInfo); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseMacodeInfoMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseMacodeInfoMapper.java index 5672b9d0..3f6dfceb 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseMacodeInfoMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseMacodeInfoMapper.java @@ -133,10 +133,10 @@ public interface PurchaseMacodeInfoMapper { /** * 修改 - * @param maType + * @param maInputRecord * @return */ - int updateTypeByTypeId(MaType maType); + int updateTypeByTypeId(MaInputRecord maInputRecord); /** * 修改 diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java index 90cdd508..c8cde2f7 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java @@ -626,8 +626,38 @@ public class BackApplyServiceImpl implements BackApplyService { */ @Override public AjaxResult getUseInfoList(BackApplyInfo bean) { + // 已建退料数据 + Map oldBackMap = new HashMap<>(); // 根据协议id查询目前在用设备 - return AjaxResult.success(backApplyMapper.getUseInfoList(bean)); + List list = backApplyMapper.getUseInfoList(bean); + if (CollectionUtils.isEmpty(list)) { + return AjaxResult.success(list); + } + // 查看该协议已建立退料数据(查询back_apply_details表back_status状态为0的数据) + List oldBackTypes = backApplyMapper.getBackApplyNum(bean); + if (CollectionUtils.isEmpty(oldBackTypes)) { + list.forEach(info -> info.setBackApplyNum(0)); + return AjaxResult.success(list); + } + // 去back_check_details表查询退料完成数量 + for (BackApplyInfo backApplyInfo : oldBackTypes) { + BackApplyInfo info = backApplyMapper.getBackNum(backApplyInfo); + Integer infoBackNum = 0; + if (info != null) { + infoBackNum = Optional.ofNullable(info.getBackNum()).orElse(0); + } + // 用backNum减去退料完成数量 + Integer backNum = Optional.ofNullable(backApplyInfo.getBackNum()).orElse(0); + backApplyInfo.setBackNum(Math.max(backNum - infoBackNum, 0)); + } + oldBackMap = oldBackTypes.stream().collect(Collectors.groupingBy(BackApplyInfo::getTypeId, + Collectors.summingInt(BackApplyInfo::getBackNum))); + // 遍历list,根据typeId,将oldBackMap中的值赋给list + for (BackApplyInfo backApplyInfo : list) { + backApplyInfo.setBackApplyNum(oldBackMap.get(backApplyInfo.getTypeId()) == null ? + 0 : oldBackMap.get(backApplyInfo.getTypeId())); + } + return AjaxResult.success(list); } /** diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseMacodeInfoServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseMacodeInfoServiceImpl.java index 10f7922f..6c8a4890 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseMacodeInfoServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseMacodeInfoServiceImpl.java @@ -356,10 +356,7 @@ public class PurchaseMacodeInfoServiceImpl implements IPurchaseMacodeInfoService if ("1".equals(checkResult)){ MaType maType = purchaseMacodeInfoMapper.selectTypeByTypeId(typeId); - // 库存添加 - maType.setNum((maInputRecord.getInputNum() == null ? new BigDecimal(0) : maInputRecord.getInputNum()) - .add(maType.getNum() == null ? new BigDecimal(0) : maType.getNum())); - purchaseMacodeInfoMapper.updateTypeByTypeId(maType); + purchaseMacodeInfoMapper.updateTypeByTypeId(maInputRecord); //判断是否是成套机具,是的话配件库存也要增加 if ("2".equals(maType.getManageType())) { @@ -606,6 +603,7 @@ public class PurchaseMacodeInfoServiceImpl implements IPurchaseMacodeInfoService maps.put("specificationType", bean.getSpecificationType()); maps.put("unitName", bean.getUnitName()); maps.put("checkNum", bean.getCheckNum()); + maps.put("inputNum", bean.getInputNum()); maps.put("remark", bean.getRemark()); return maps; } @@ -620,7 +618,8 @@ public class PurchaseMacodeInfoServiceImpl implements IPurchaseMacodeInfoService list.add("类型名称"); list.add("规格型号"); list.add("计量单位"); - list.add("数量"); + list.add("验收数量"); + list.add("入库数量"); list.add("备注"); return list; } diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml index 16a3aab6..9cdc0132 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/BackApplyMapper.xml @@ -1243,4 +1243,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" GROUP BY mt.type_id + + + + \ No newline at end of file diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseCheckDetailsMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseCheckDetailsMapper.xml index 9d6ae2ec..dbd2fff3 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseCheckDetailsMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseCheckDetailsMapper.xml @@ -250,7 +250,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update purchase_check_details set check_num = #{inputNum},input_num=#{inputNum},input_status='1',input_time=NOW() where task_id = #{taskId} and type_id = #{typeId} + update purchase_check_details set input_num = #{inputNum},input_status='1',input_time=NOW() where task_id = #{taskId} and type_id = #{typeId} update purchase_check_details set status = '0' where task_id = #{taskId} diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseMacodeInfoMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseMacodeInfoMapper.xml index f310d79d..186f3109 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseMacodeInfoMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseMacodeInfoMapper.xml @@ -376,7 +376,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" END AS STATUS, mm.qr_code qrCode, mm.ma_id maId, - IF( pmi.ma_code IS NOT NULL, 1, pcd.check_num ) checkNum + IF(pmi.ma_code IS NOT NULL, 1, pcd.check_num ) checkNum, + IF(pmi.ma_code IS NOT NULL AND pmi.status = 1, + 1, + IF(pmi.ma_code IS NOT NULL AND pmi.status != 1, + 0, + IFNULL(pcd.input_num, 0) + ) + ) AS inputNum FROM purchase_check_details pcd LEFT JOIN purchase_macode_info pmi ON pmi.task_id = pcd.task_id @@ -437,7 +444,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mm.qr_code qrCode, mm.ma_id maId, IF - ( pmi.ma_code IS NOT NULL, 1, pcd.check_num ) checkNum + ( pmi.ma_code IS NOT NULL, 1, pcd.check_num ) checkNum, + IF(pmi.ma_code IS NOT NULL AND pmi.status = 1, + 1, + IF(pmi.ma_code IS NOT NULL AND pmi.status != 1, + 0, + IFNULL(pcd.input_num, 0) + ) + ) AS inputNum FROM purchase_check_details pcd LEFT JOIN purchase_check_info pci on pci.task_id=pcd.task_id @@ -570,7 +584,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update ma_type set num = #{num} where type_id = #{typeId} + update ma_type + set num = ifnull( num, 0 ) + #{inputNum} + where type_id = #{typeId}