Merge remote-tracking branch 'origin/master'

This commit is contained in:
mashuai 2024-10-28 15:23:57 +08:00
commit 370aaa6a8e
18 changed files with 235 additions and 24 deletions

View File

@ -18,6 +18,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Aspect
@ -46,9 +47,20 @@ public class PreventRepeatSubmitAspect {
//获取请求参数
Object[] args = pjp.getArgs();
String argStr = JSON.toJSONString(args);
//这里替换是为了在redis可视化工具中方便查看
argStr=argStr.replace(":","#");
String argStr = "";
for (int i = 0; i < args.length; i++) {
Object obj = args[i];
try {
if (Objects.nonNull(obj)) {
//这里替换是为了在redis可视化工具中方便查看, argStr=argStr.replace(":","#");
argStr = JSON.toJSONString(obj).replace(":", "#");
}
break;
} catch (Exception e) {
e.printStackTrace();
}
}
// 唯一值没有消息头则使用请求地址
String submitKey = request.getHeader(header).trim();
// 唯一标识指定key + url +参数+token

View File

@ -37,6 +37,10 @@ public class Type extends BaseEntity {
@ApiModelProperty(value = "物资仓库名称")
private String houseName;
/** 仓库Id */
@ApiModelProperty(value = "物资仓库Id")
private Long houseId;
/** 上级ID */
@Excel(name = "上级ID")
@ApiModelProperty(value = "上级ID")

View File

@ -256,7 +256,14 @@ public class TypeServiceImpl implements ITypeService {
type.setLevel(String.valueOf(Integer.parseInt(type.getLevel()) + 1));
type.setCreateTime(DateUtils.getNowDate());
type.setCreateBy(SecurityUtils.getUserId().toString());
return typeMapper.insertType(type);
int count = typeMapper.insertType(type);
long newTypeId = type.getTypeId();
// 插入wh_house_set建立仓库和type的关系
WhHouseSet whHouseSet = new WhHouseSet();
whHouseSet.setHouseId(type.getHouseId());
whHouseSet.setTypeId(newTypeId);
houseSetService.insertWhHouseSet(whHouseSet);
return count;
}
/**
@ -343,7 +350,7 @@ public class TypeServiceImpl implements ITypeService {
// --- 数据校验 ----
if (whHouseSet == null || whHouseSet.getTypeId() == null) { continue; }
// 构造函数定义0级Tree对象
TreeSelect thisTree = new TreeSelect(whHouseSet.getId(),whHouseSet.getHouseName(),0,null);
TreeSelect thisTree = new TreeSelect(whHouseSet.getHouseId(),whHouseSet.getHouseName(),0,null);
// 从Map中直接获取对应的1级节点
TreeSelect oneLevelTree = maTypeMap.get(whHouseSet.getTypeId());
// 转换为集合存入0级Tree对象中

View File

@ -21,7 +21,8 @@ public enum PurchaseTaskEnum {
PURCHASE_TASK_STATUS_CHECK_NO(128, 6,"待验收(驳回后)", "purchase_task_status", 0),
PURCHASE_TASK_STATUS_BIND_NO(129, 7,"待绑定(驳回后)", "purchase_task_status", 0),
PURCHASE_TASK_STATUS_IN_NO(130, 8,"待入库(驳回后)", "purchase_task_status", 0),
PURCHASE_TASK_STATUS_PART_IN(131, 9,"入库进行中", "purchase_task_status", 0);
PURCHASE_TASK_STATUS_PART_IN(131, 9,"入库进行中", "purchase_task_status", 0),
PURCHASE_TASK_STATUS_FINISH_NO(132, 10,"未完成", "purchase_task_status", 0);
private final Integer taskStatusCode;

View File

@ -120,8 +120,8 @@ public class PurchaseCheckDetailsController extends BaseController {
@RequiresPermissions("purchase:details:query")
@GetMapping("/fileList")
@SysLog(title = "新购验收任务明细报告查询", businessType = OperaType.QUERY, module = "物资新购->根据任务id查询物资报告附件")
public AjaxResult getFileList(@RequestParam("taskId") Long taskId, @RequestParam("typeId") Long typeId) {
return success(purchaseCheckDetailsService.selectPurchaseCheckFileListByTaskId(taskId, typeId));
public AjaxResult getFileList(PurchaseCheckFileDto purchaseCheckFileDto) {
return success(purchaseCheckDetailsService.selectPurchaseCheckFileListByTaskId(Long.valueOf(purchaseCheckFileDto.getTaskId()), purchaseCheckFileDto.getTypeId()));
}

View File

@ -10,6 +10,8 @@ import javax.validation.constraints.NotNull;
import com.bonus.common.log.enums.OperaType;
import com.bonus.material.common.annotation.PreventRepeatSubmit;
import com.bonus.material.purchase.dto.PurchaseCheckDto;
import com.bonus.material.purchase.dto.PurchaseQueryDto;
import com.bonus.material.purchase.vo.PurchaseCheckFormVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@ -54,9 +56,9 @@ public class PurchaseCheckInfoController extends BaseController {
*/
@ApiOperation(value = "获取新购验收任务详细信息")
@RequiresPermissions("purchase:info:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(purchaseCheckInfoService.selectPurchaseCheckInfoById(id));
@GetMapping(value = "/getInfo")
public AjaxResult getInfo(@NotNull(message = "请求对象不能为空") PurchaseQueryDto purchaseQueryDto) {
return success(purchaseCheckInfoService.selectPurchaseCheckInfoById(purchaseQueryDto));
}
/**
@ -103,6 +105,18 @@ public class PurchaseCheckInfoController extends BaseController {
return purchaseCheckInfoService.acceptance(taskIds);
}
/**
* 根据任务id查询验收单
*/
@ApiOperation(value = "根据任务id查询验收单--taskId")
@RequiresPermissions("purchase:info:query")
@SysLog(title = "新购验收任务", businessType = OperaType.UPDATE, module = "物资新购->查询验收单API")
@GetMapping("/getPurchaseCheckFormByTaskId/{taskId}")
public AjaxResult getPurchaseCheckFormByTaskId(@PathVariable("taskId") Long taskId) {
PurchaseCheckFormVo purchaseCheckFormVo = purchaseCheckInfoService.selectPurchaseCheckFormVoByTaskId(taskId);
return AjaxResult.success(purchaseCheckFormVo);
}
/**

View File

@ -40,13 +40,13 @@ public class PurchaseCheckInfo extends BaseEntity {
/** 采购日期 */
@ApiModelProperty(value = "采购日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "采购日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date purchaseTime;
/** 到货日期 */
@ApiModelProperty(value = "到货日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "到货日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date arrivalTime;

View File

@ -5,6 +5,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* @author : 阮世耀
@ -31,11 +32,11 @@ public class PurchaseCheckFileDto {
private String taskId;
@ApiModelProperty(value = "物资类型ID")
@NotBlank(message = "物资类型ID不能为空")
@NotNull(message = "物资类型ID不能为空")
private Long typeId;
@ApiModelProperty(value = "字典编码")
@NotEmpty(message = "字典编码不能为空")
@NotNull(message = "字典编码不能为空")
private Integer dictCode;
@ApiModelProperty(value = "字典标签")

View File

@ -0,0 +1,49 @@
package com.bonus.material.purchase.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author : 阮世耀
* @version : 1.0
* @PackagePath: com.bonus.material.purchase.dto
* @CreateTime: 2024-10-23 16:47
* @Description: 新购查询DTO封装查询条件
*/
@Data
public class PurchaseQueryDto {
private Long id;
@ApiModelProperty(value = "任务id")
private Long taskId;
@ApiModelProperty(value = "任务单号")
private String code;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "任务状态")
private Integer taskStatus;
@ApiModelProperty(value = "关键字")
private String keyWord;
@ApiModelProperty(value = "规格ID")
private Long typeId;
@ApiModelProperty(value = "物资厂家ID")
private Long supplierId;
@ApiModelProperty(value = "出场日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date productionTime;
}

View File

@ -2,6 +2,7 @@ package com.bonus.material.purchase.mapper;
import java.util.List;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import com.bonus.material.purchase.dto.PurchaseQueryDto;
import org.apache.ibatis.annotations.Param;
/**
@ -35,6 +36,12 @@ public interface PurchaseCheckDetailsMapper {
*/
List<PurchaseCheckDetails> selectPurchaseCheckDetailsListByTaskId(Long taskId);
/**
* 根据任务id查询新购验收任务详细列表--Join查询
* @param obj 新购验收任务请求参数封装dto
*/
List<PurchaseCheckDetails> selectPurchaseCheckDetailsListByQueryDto(PurchaseQueryDto obj);
/**
* 查询新购验收任务详细列表
*

View File

@ -2,6 +2,7 @@ package com.bonus.material.purchase.mapper;
import java.util.List;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.vo.PurchaseCheckFormVo;
/**
* 新购验收任务Mapper接口
@ -34,6 +35,13 @@ public interface PurchaseCheckInfoMapper {
*/
List<PurchaseCheckInfo> selectPurchaseCheckInfoJoinList(PurchaseCheckInfo purchaseCheckInfo);
/**
* 根据任务id查询任务单外层信息
* @param taskId 任务id
*/
PurchaseCheckFormVo selectPurchaseCheckFormVoByTaskId(Long taskId);
/**
* 新增新购验收任务

View File

@ -5,6 +5,8 @@ import java.util.List;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.dto.PurchaseCheckDto;
import com.bonus.material.purchase.dto.PurchaseQueryDto;
import com.bonus.material.purchase.vo.PurchaseCheckFormVo;
/**
* 新购验收任务Service接口
@ -15,10 +17,10 @@ public interface IPurchaseCheckInfoService {
/**
* 查询新购验收任务
*
* @param id 新购验收任务主键
* @param purchaseQueryDto 新购验收请求条件封装dto
* @return 新购验收任务
*/
PurchaseCheckDto selectPurchaseCheckInfoById(Long id);
PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto);
/**
* 查询新购验收任务列表
@ -42,6 +44,12 @@ public interface IPurchaseCheckInfoService {
*/
AjaxResult acceptance(List<Long> taskId);
/**
* 根据任务id查询验收单
* @param taskId 任务id
*/
PurchaseCheckFormVo selectPurchaseCheckFormVoByTaskId(Long taskId);
/**
* 修改新购验收任务
*

View File

@ -15,7 +15,9 @@ import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.purchase.config.PurchaseTaskEnum;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import com.bonus.material.purchase.dto.PurchaseCheckDto;
import com.bonus.material.purchase.dto.PurchaseQueryDto;
import com.bonus.material.purchase.mapper.PurchaseCheckDetailsMapper;
import com.bonus.material.purchase.vo.PurchaseCheckFormVo;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.mapper.TmTaskMapper;
import org.springframework.beans.factory.annotation.Autowired;
@ -55,16 +57,16 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
/**
* 查询新购验收任务
*
* @param id 新购验收任务主键
* @param purchaseQueryDto 新购验收任务请求参数封装dto
* @return 新购验收任务
*/
@Override
public PurchaseCheckDto selectPurchaseCheckInfoById(Long id) {
public PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto) {
PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto();
PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(id);
PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId());
if (purchaseCheckInfo != null) {
purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo);
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseCheckInfo.getTaskId());
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
if (purchaseCheckDetails != null) {
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetails);
}
@ -239,6 +241,28 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
}
}
/**
* 根据任务id查询验收单
*
* @param taskId 任务id
*/
@Override
public PurchaseCheckFormVo selectPurchaseCheckFormVoByTaskId(Long taskId) {
// 执行SQL查询外层信息
PurchaseCheckFormVo result = purchaseCheckInfoMapper.selectPurchaseCheckFormVoByTaskId(taskId);
if (result != null) {
// 执行SQL查询内层信息
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(taskId);
// 过滤掉空数据
purchaseCheckDetails.removeIf(Objects::isNull);
result.setMaterialList(purchaseCheckDetails);
return result;
} else {
return new PurchaseCheckFormVo();
}
}
/**
* 生成任务编号并构造Tm_Task任务对象
* @param purchaseCheckInfo 新购验收任务数据

View File

@ -0,0 +1,42 @@
package com.bonus.material.purchase.vo;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author : 阮世耀
* @version : 1.0
* @Description: 新购任务验收单vo
*/
@Data
public class PurchaseCheckFormVo {
@ApiModelProperty(value = "任务id")
private Long taskId;
@ApiModelProperty(value = "任务单号")
private String code;
@ApiModelProperty(value = "生产厂家")
private String supplierName;
@ApiModelProperty(value = "到货日期")
private String arrivalDate;
@ApiModelProperty(value = "供应科")
private String supplyDept;
@ApiModelProperty("生产技术科")
private String productionTechDept;
@ApiModelProperty("库管班")
private String warehouseTeam;
@ApiModelProperty("物资列表")
private List<PurchaseCheckDetails> materialList = new ArrayList<>();
}

View File

@ -80,6 +80,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectPurchaseCheckDetailsJoinVo"/>
where pcd.task_id = #{taskId}
</select>
<select id="selectPurchaseCheckDetailsListByQueryDto" parameterType="com.bonus.material.purchase.dto.PurchaseQueryDto" resultMap="PurchaseCheckDetailsResult">
<include refid="selectPurchaseCheckDetailsJoinVo"/>
where pcd.task_id = #{taskId}
<if test="typeId != null">
and pcd.type_id = #{typeId}
</if>
<if test="supplierId != null">
and pcd.supplier_id = #{supplierId}
</if>
<if test="productionTime != null">
and pcd.production_time between #{startTime} and #{endTime}
</if>
<if test="taskStatus != null and taskStatus != ''">
and pcd.status = #{taskStatus}
</if>
<if test="keyWord != null and keyWord != ''">
and (mt.type_name like concat('%', #{keyWord}, '%')
or mt.unit_name like concat('%', #{keyWord}, '%')
or mtp.type_name like concat('%', #{keyWord}, '%'))
</if>
</select>
<insert id="insertPurchaseCheckDetails" parameterType="com.bonus.material.purchase.domain.PurchaseCheckDetails" useGeneratedKeys="true" keyProperty="id">
insert into purchase_check_details

View File

@ -19,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
sys_dict_data sdd
LEFT JOIN
bm_file_info bfi ON bfi.dic_id = sdd.dict_code
bm_file_info bfi ON bfi.dic_id = sdd.dict_code and bfi.task_id = #{taskId} and bfi.model_id = #{typeId}
WHERE
sdd.dict_type = 'purchase_check_report_type'
</sql>
@ -27,8 +27,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectPurchaseCheckFileListByTaskId" parameterType="Long" resultMap="PurchaseCheckFileResult">
<include refid="selectPurchaseCheckFileJoinVo"/>
and bfi.task_id = #{taskId}
and bfi.model_id = #{typeId}
</select>
<insert id="insertPurchaseCheckFiles" parameterType="com.bonus.material.purchase.dto.PurchaseCheckFileDto" useGeneratedKeys="true" keyProperty="id">

View File

@ -20,6 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="taskStatus" column="task_status" />
</resultMap>
<resultMap type="com.bonus.material.purchase.vo.PurchaseCheckFormVo" id="PurchaseCheckFormResult">
<result property="taskId" column="task_id" />
<result property="code" column="code" />
<result property="arrivalDate" column="arrival_time" />
</resultMap>
<sql id="selectPurchaseCheckInfoBaseSQL">
select
id, task_id, purchase_time, arrival_time, purchaser, create_by,
@ -120,4 +126,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="purchaser != null "> and pci.purchaser = #{purchaser}</if>
</where>
</select>
<select id="selectPurchaseCheckFormVoByTaskId" resultMap="PurchaseCheckFormResult">
<include refid="selectPurchaseCheckInfoJoinSQL"/>
<where>
<if test="taskId != null "> and pci.task_id = #{taskId}</if>
</where>
</select>
</mapper>

View File

@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from tm_task
</sql>
<select id="selectTmTaskList" parameterType="com.bonus.material.task.domain.TmTask" resultMap="TmTaskResult">
<include refid="selectTmTaskVo"/>
<where>