新购配件入库

This commit is contained in:
bns_han 2024-01-19 10:24:57 +08:00
parent eb1ca9b5d9
commit 809a144923
8 changed files with 325 additions and 29 deletions

View File

@ -5,11 +5,9 @@ import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.common.core.web.page.TableDataInfo;
import com.bonus.sgzb.common.log.annotation.Log;
import com.bonus.sgzb.common.log.enums.BusinessType;
import com.bonus.sgzb.material.domain.PurchaseCheckDetails;
import com.bonus.sgzb.material.domain.PurchaseCheckInfo;
import com.bonus.sgzb.material.domain.PurchasePartDetails;
import com.bonus.sgzb.material.domain.PurchasePartInfo;
import com.bonus.sgzb.material.domain.*;
import com.bonus.sgzb.material.service.IPurchaseAccessoryService;
import com.bonus.sgzb.material.vo.MaInputVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@ -108,4 +106,34 @@ public class PurchaseAccessoryController extends BaseController
List<PurchasePartInfo> list = purchaseAccessoryService.selectPutInListList(purchasePartInfo);
return getDataTable(list);
}
/**
* 获取配件信息
*/
@ApiOperation(value = "获取配件信息")
@GetMapping("/getPartList")
public AjaxResult getPartList(String level){
List<PurchasePartInfo> list = purchaseAccessoryService.getPartList(level);
return AjaxResult.success(list);
}
/**
* 获取新购配件入库详细信息
*/
@ApiOperation(value = "获取新购配件入库详细信息")
@GetMapping(value = "/putinDetails")
public TableDataInfo putinDetails(PurchasePartDetails purchasePartDetails)
{
startPage();
return getDataTable(purchaseAccessoryService.selectPutinDetails(purchasePartDetails));
}
/**
* 新购配件入库审核
*/
@ApiOperation(value = "新购配件入库审核")
@PostMapping("/checkInput")
public AjaxResult checkInput(@RequestBody List<PurchasePartDetails> purchasePartDetails){
return toAjax(purchaseAccessoryService.checkInput(purchasePartDetails));
}
}

View File

@ -29,6 +29,10 @@ public class PurchasePartDetails extends BaseEntity
@ApiModelProperty(value = "规格id")
private Long partId;
/** 规格id */
@ApiModelProperty(value = "规格id")
private Long modelId;
/** 采购单价 */
@ApiModelProperty(value = "采购单价")
private String purchasePrice;
@ -57,10 +61,14 @@ public class PurchasePartDetails extends BaseEntity
@ApiModelProperty(value = "供应商名称")
private String supplier;
/** 验收状态0,未验收 1,已验收 2,待通知 */
@ApiModelProperty(value = "验收状态0,未验收 1,已验收 2,待通知")
/** 验收状态 0-待验收1-已验收 , 2-验收不通过, 3-已入库 */
@ApiModelProperty(value = "验收状态")
private Integer status;
/** 状态结果 */
@ApiModelProperty(value = "状态结果")
private String statusResult;
/** 出厂日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "出厂日期")
@ -70,6 +78,14 @@ public class PurchasePartDetails extends BaseEntity
@ApiModelProperty(value = "入库数量")
private BigDecimal inputNum;
/** 入库时间 */
@ApiModelProperty(value = "入库时间")
private String inputTime;
/** 入库人 */
@ApiModelProperty(value = "入库人")
private String inputBy;
/** 验收图片 */
@ApiModelProperty(value = "验收图片")
private String checkUrlName;
@ -258,6 +274,14 @@ public class PurchasePartDetails extends BaseEntity
this.status = status;
}
public String getStatusResult() {
return statusResult;
}
public void setStatusResult(String statusResult) {
this.statusResult = statusResult;
}
public String getMachineTypeName() {
return machineTypeName;
}
@ -322,6 +346,30 @@ public class PurchasePartDetails extends BaseEntity
this.unitName = unitName;
}
public Long getModelId() {
return modelId;
}
public void setModelId(Long modelId) {
this.modelId = modelId;
}
public String getInputTime() {
return inputTime;
}
public void setInputTime(String inputTime) {
this.inputTime = inputTime;
}
public String getInputBy() {
return inputBy;
}
public void setInputBy(String inputBy) {
this.inputBy = inputBy;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

View File

@ -95,10 +95,22 @@ public class PurchasePartInfo extends BaseEntity
@ApiModelProperty(value = "入库状态")
private String inputStatus;
/** 配件id */
@ApiModelProperty(value = "配件id")
private Long partId;
/** 配件名称 */
@ApiModelProperty(value = "配件名称")
private String partName;
/** 数据所属组织 */
@ApiModelProperty(value = "数据所属组织")
private Integer companyId;
/** 任务状态结果 */
@ApiModelProperty(value = "任务状态结果")
private String taskStatusResult;
public String getKeyWord() {
return keyWord;
}
@ -288,6 +300,30 @@ public class PurchasePartInfo extends BaseEntity
this.inputStatus = inputStatus;
}
public Long getPartId() {
return partId;
}
public void setPartId(Long partId) {
this.partId = partId;
}
public String getPartName() {
return partName;
}
public void setPartName(String partName) {
this.partName = partName;
}
public String getTaskStatusResult() {
return taskStatusResult;
}
public void setTaskStatusResult(String taskStatusResult) {
this.taskStatusResult = taskStatusResult;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

View File

@ -4,6 +4,7 @@ import com.bonus.sgzb.material.domain.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@ -71,5 +72,18 @@ public interface PurchaseAccessoryMapper
int updatePurchasePartDetails(PurchasePartDetails purchasePartDetails);
int selectPurchasePartDetailsStatus(Long taskId);
int selectPurchasePartDetailsStatus(@Param("taskId") Long taskId,@Param("status") int status);
/**
* 获取配件信息
* @param level 等级
* @return List<PurchasePartInfo>
*/
List<PurchasePartInfo> getPartList(String level);
List<PurchasePartDetails> selectPutinDetails(PurchasePartDetails purchasePartDetails);
int updatePartTypeNum(@Param("partId") Long partId,@Param("inputNum") BigDecimal inputNum);
int setlectStatusById(Long id);
}

View File

@ -62,4 +62,15 @@ public interface IPurchaseAccessoryService
List<PurchasePartInfo> selectPutInListList(PurchasePartInfo purchasePartInfo);
int updatePurchaseCheckDetails(List<PurchasePartDetails> purchasePartDetailsList);
/**
* 获取配件信息
* @param level 等级
* @return List<PurchasePartInfo>
*/
List<PurchasePartInfo> getPartList(String level);
List<PurchasePartDetails> selectPutinDetails(PurchasePartDetails purchasePartDetails);
int checkInput(List<PurchasePartDetails> purchasePartDetails);
}

View File

@ -197,11 +197,14 @@ public class PurchaseAccessoryServiceImpl implements IPurchaseAccessoryService
}
}
// 当全部为已验收,修改任务验收状态
int count = purchaseAccessoryMapper.selectPurchasePartDetailsStatus(taskId);
int status=1;
int count = purchaseAccessoryMapper.selectPurchasePartDetailsStatus(taskId,status);
if (count <= 0) {
TmTask task = new TmTask();
task.setTaskId(taskId);
task.setTaskStatus(69);
task.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
task.setUpdateTime(DateUtils.getNowDate());
res = taskMapper.updateTmTask(task);
if (res == 0) {
throw new RuntimeException("验收失败,修改任务状态未成功");
@ -210,7 +213,71 @@ public class PurchaseAccessoryServiceImpl implements IPurchaseAccessoryService
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return res;
}
@Override
public List<PurchasePartInfo> getPartList(String level) {
return purchaseAccessoryMapper.getPartList(level);
}
@Override
public List<PurchasePartDetails> selectPutinDetails(PurchasePartDetails purchasePartDetails) {
return purchaseAccessoryMapper.selectPutinDetails(purchasePartDetails);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int checkInput(List<PurchasePartDetails> purchasePartDetailsList) {
int res = 0;
try {
Long taskId = 0L;
for (PurchasePartDetails partDetails : purchasePartDetailsList) {
taskId = partDetails.getTaskId();
//暂时只处理审核通过的
if ("1".equals(partDetails.getCheckResult())) {
partDetails.setStatus(3);
partDetails.setInputNum(partDetails.getCheckNum());
partDetails.setInputTime(String.valueOf(DateUtils.getNowDate()));
partDetails.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
partDetails.setUpdateTime(DateUtils.getNowDate());
//查询该任务是否已审核
res = purchaseAccessoryMapper.setlectStatusById(partDetails.getId());
if (res>0){
res = purchaseAccessoryMapper.updatePurchasePartDetails(partDetails);
if (res == 0) {
throw new RuntimeException("审核入库失败,修改状态未成功");
}
res = purchaseAccessoryMapper.updatePartTypeNum(partDetails.getPartId(), partDetails.getCheckNum());
if (res == 0) {
throw new RuntimeException("审核入库失败,修改配件库存未成功");
}
}else {
continue;
}
}else {
res=1;
}
}
// 当全部审核通过,修改任务入库状态
int status = 3;
int count = purchaseAccessoryMapper.selectPurchasePartDetailsStatus(taskId, status);
if (count <= 0) {
TmTask task = new TmTask();
task.setTaskId(taskId);
task.setTaskStatus(70);
task.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
task.setUpdateTime(DateUtils.getNowDate());
res = taskMapper.updateTmTask(task);
if (res == 0) {
throw new RuntimeException("审核入库失败,修改任务状态未成功");
}
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return res;
}

View File

@ -2,6 +2,7 @@ package com.bonus.sgzb.material.service.impl;
import java.util.List;
import com.bonus.sgzb.common.security.utils.SecurityUtils;
import com.bonus.sgzb.material.domain.PurchaseCheckDetails;
import com.bonus.sgzb.material.domain.TmTask;
import com.bonus.sgzb.material.mapper.PurchaseCheckDetailsMapper;
@ -101,6 +102,8 @@ public class PurchaseCheckDetailsServiceImpl implements IPurchaseCheckDetailsSer
TmTask task = new TmTask();
task.setTaskId(taskId);
task.setTaskStatus(26);
task.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
task.setUpdateTime(DateUtils.getNowDate());
taskMapper.updateTmTask(task);
}
return 1;

View File

@ -143,8 +143,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fileName != null">file_name = #{fileName},</if>
<if test="fileUrl != null">file_url = #{fileUrl},</if>
</trim>
where task_id = #{taskId}
where id = #{id}
</update>
<update id="updatePartTypeNum">
UPDATE ma_part_type
SET num = num + #{inputNum}
WHERE
pa_id = #{partId}
</update>
<select id="setlectStatusById" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
purchase_part_details
WHERE
id=#{id}
and `status`='1'
</select>
<delete id="deletePartDetailsByTaskId">
delete from purchase_part_details where task_id = #{taskId}
@ -216,34 +232,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where pci.task_id = #{taskId}
</select>
<select id="selectPurchasePartDetailsList"
parameterType="com.bonus.sgzb.material.domain.PurchasePartDetails" resultMap="PurchasePartDetailsResult">
select pcd.task_id, pcd.part_id, pcd.purchase_price, pcd.purchase_num, pcd.check_num, pcd.check_result,
pcd.supplier_id, msi.supplier, pcd.create_by, pcd.production_time, pcd.create_time,
pcd.file_name, pcd.file_url,pcd.update_by, pcd.update_time, pcd.remark, pcd.company_id,
mt1.pa_name machineTypeName,mt.pa_name specificationType, tk.code ,mt.pa_name typeName,
mt.unit_id unitName
parameterType="com.bonus.sgzb.material.domain.PurchasePartDetails" resultMap="PurchasePartDetailsResult">
select pcd.id,pcd.task_id, pcd.part_id, pcd.purchase_price, pcd.purchase_num, pcd.check_num,
pcd.check_result,pcd.`status`,
CASE
WHEN pcd.`status` = 0 THEN '待验收'
WHEN pcd.`status` = 1 THEN '已验收'
WHEN pcd.`status` = 2 THEN '验收不通过'
WHEN pcd.`status` = 3 THEN '已入库'
ELSE ''
END AS statusResult,
pcd.supplier_id, msi.supplier, pcd.create_by, pcd.production_time, pcd.create_time,
pcd.file_name, pcd.file_url,pcd.update_by, pcd.update_time, pcd.remark, pcd.company_id,
mt1.pa_name machineTypeName,mt.pa_name specificationType, tk.code ,mt.pa_name typeName,
mt.unit_id unitName
from purchase_part_details pcd
left join ma_part_type mt on pcd.part_id = mt.pa_id
left join ma_part_type mt1 on mt.parent_id = mt1.pa_id
left join ma_supplier_info msi on pcd.supplier_id = msi.supplier_id
left join tm_task tk on pcd.task_id = tk.task_id
left join ma_part_type mt on pcd.part_id = mt.pa_id
left join ma_part_type mt1 on mt.parent_id = mt1.pa_id
left join ma_supplier_info msi on pcd.supplier_id = msi.supplier_id
left join tm_task tk on pcd.task_id = tk.task_id
<where>
<if test="taskId != null "> and pcd.task_id = #{taskId}</if>
<if test="taskId != null ">and pcd.task_id = #{taskId}</if>
<if test="keyWord != null and keyWord != ''">and (mt.pa_name like concat('%',#{keyWord},'%')
or mt1.pa_name like concat('%',#{keyWord}) or msi.supplier like concat('%',#{keyWord}))</if>
<if test="partId != null "> and pcd.part_id = #{partId}</if>
<if test="purchasePrice != null and purchasePrice != ''"> and pcd.purchase_price = #{purchasePrice}</if>
<if test="purchaseNum != null "> and pcd.purchase_num = #{purchaseNum}</if>
<if test="supplierId != null "> and pcd.supplier_id = #{supplierId}</if>
<if test="productionTime != null "> and pcd.production_time = #{productionTime}</if>
<if test="companyId != null "> and pcd.company_id = #{companyId}</if>
or mt1.pa_name like concat('%',#{keyWord}) or msi.supplier like concat('%',#{keyWord}))
</if>
<if test="partId != null ">and pcd.part_id = #{partId}</if>
<if test="purchasePrice != null and purchasePrice != ''">and pcd.purchase_price = #{purchasePrice}</if>
<if test="purchaseNum != null ">and pcd.purchase_num = #{purchaseNum}</if>
<if test="supplierId != null ">and pcd.supplier_id = #{supplierId}</if>
<if test="productionTime != null ">and pcd.production_time = #{productionTime}</if>
<if test="companyId != null ">and pcd.company_id = #{companyId}</if>
</where>
</select>
<select id="selectPutInListList" resultMap="PurchasePartInfoResult">
select pci.task_id, pci.purchase_time, pci.arrival_time, pci.purchaser, pci.create_by, pci.create_time,
pci.update_by,
pci.update_time, pci.remark, pci.company_id ,tk.code,tk.task_status taskStatus,su.user_name purchaserName
pci.update_time, pci.remark, pci.company_id ,tk.code,tk.task_status taskStatus,
CASE
tk.task_status
WHEN 69 THEN '待入库'
WHEN 70 THEN '已入库'
ELSE ''
END taskStatusResult,
su.user_name purchaserName
from purchase_part_info pci
left join tm_task tk on pci.task_id = tk.task_id
left join sys_user su on pci.purchaser = su.user_id
@ -256,6 +288,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by create_time desc
</select>
<select id="selectPurchasePartDetailsStatus" resultType="java.lang.Integer">
select count(*) from purchase_part_details where task_id = #{taskId} and status != 1
select count(*) from purchase_part_details where task_id = #{taskId} and status != #{status}
</select>
<select id="getPartList" resultType="com.bonus.sgzb.material.domain.PurchasePartInfo">
SELECT
pa_id AS partId,
pa_name AS partName
FROM
`ma_part_type`
WHERE
`level` = #{level}
</select>
<select id="selectPutinDetails" resultType="com.bonus.sgzb.material.domain.PurchasePartDetails">
SELECT pcd.id,
mt.pa_id as partId,
mt1.pa_id as modelId,
mt.pa_name specificationType,
mt1.pa_name typeName,
pcd.check_num as checkNum,
pcd.`status`,
CASE
WHEN pcd.`status` = 0 THEN '待验收'
WHEN pcd.`status` = 1 THEN '待入库'
WHEN pcd.`status` = 2 THEN '验收不通过'
WHEN pcd.`status` = 3 THEN '已入库'
ELSE ''
END AS statusResult,
pcd.task_id taskId,
CASE tt.task_status
WHEN 70 THEN
tt.update_time
ELSE
''
END as inputTime,
CASE tt.task_status
WHEN 70 THEN
us.user_name
ELSE
''
END as inputBy
FROM purchase_part_details pcd
LEFT JOIN ma_part_type mt ON pcd.part_id = mt.pa_id
LEFT JOIN ma_part_type mt1 ON mt.parent_id = mt1.pa_id
LEFT JOIN tm_task tt on tt.task_id = pcd.task_id
LEFT JOIN sys_user us on us.user_id = tt.update_by
WHERE pcd.task_id = #{taskId}
<if test="keyWord != null and keyWord != ''">
and mt.pa_name like concat('%',#{keyWord},'%') or
mt1.pa_name like concat('%',#{keyWord},'%')
</if>
<if test="modelId != null and modelId != ''">
and mt1.pa_id = #{modelId}
</if>
<if test="partId != null and partId != ''">
and mt.pa_id = #{partId}
</if>
</select>
</mapper>