Browse Source

出入库查询

master
shenzhouyu 4 weeks ago
parent
commit
d60e46f280
  1. 25
      src/main/java/com/gaotao/modules/handlingunit/service/impl/HandlingUnitGetIfsServiceImpl.java
  2. 34
      src/main/java/com/gaotao/modules/trans/controller/TransRecordController.java
  3. 10
      src/main/java/com/gaotao/modules/trans/dao/TransDetailSubMapper.java
  4. 84
      src/main/java/com/gaotao/modules/trans/entity/TransRecordQueryDto.java
  5. 9
      src/main/java/com/gaotao/modules/trans/service/TransDetailSubService.java
  6. 15
      src/main/java/com/gaotao/modules/trans/service/impl/TransDetailSubServiceImpl.java
  7. 83
      src/main/resources/mapper/trans/TransDetailSubMapper.xml

25
src/main/java/com/gaotao/modules/handlingunit/service/impl/HandlingUnitGetIfsServiceImpl.java

@ -52,7 +52,7 @@ public class HandlingUnitGetIfsServiceImpl extends ServiceImpl<HandlingUnitMappe
// 回写ReceiptDate
if (StringUtils.hasText(stock.getReceiptDate())) {
handlingUnit.setReceiveDate(parseDate(stock.getReceiptDate()));
handlingUnit.setReceiveDate(parseDateTime(stock.getReceiptDate()));
}
// 回写ExpirationDate
@ -83,7 +83,28 @@ public class HandlingUnitGetIfsServiceImpl extends ServiceImpl<HandlingUnitMappe
}
try {
// 尝试常见的日期格式
String[] patterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss", "yyyy/MM/dd"};
String[] patterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss", "yyyy/MM/dd","yyyy-MM-dd-HH.mm.ss"};
for (String pattern : patterns) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.parse(dateStr);
} catch (ParseException e) {
// 继续尝试下一个格式
}
}
} catch (Exception e) {
// 解析失败返回null
}
return null;
}
private Date parseDateTime(String dateStr) {
if (!StringUtils.hasText(dateStr)) {
return null;
}
try {
// 尝试常见的日期格式
String[] patterns = {"yyyy-MM-dd-HH.mm.ss","yyyy-MM-dd HH:mm:ss"};
for (String pattern : patterns) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);

34
src/main/java/com/gaotao/modules/trans/controller/TransRecordController.java

@ -0,0 +1,34 @@
package com.gaotao.modules.trans.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gaotao.common.utils.PageUtils;
import com.gaotao.common.utils.R;
import com.gaotao.modules.trans.entity.TransRecordQueryDto;
import com.gaotao.modules.trans.service.TransDetailSubService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 出入库记录查询header + detail + sub
*/
@RestController
@RequestMapping("/trans")
public class TransRecordController {
@Autowired
private TransDetailSubService transDetailSubService;
/**
* 查询出入库子表记录分页
*/
@PostMapping("/searchTransSubRecords")
public R searchTransSubRecords(@RequestBody TransRecordQueryDto dto) {
IPage<Map<String, Object>> pageResult = transDetailSubService.searchTransSubRecords(dto);
PageUtils pageUtils = new PageUtils(pageResult);
return R.ok().put("page", pageUtils);
}
}

10
src/main/java/com/gaotao/modules/trans/dao/TransDetailSubMapper.java

@ -1,10 +1,20 @@
package com.gaotao.modules.trans.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gaotao.modules.trans.entity.TransDetailSub;
import com.gaotao.modules.trans.entity.TransRecordQueryDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
@Mapper
public interface TransDetailSubMapper extends BaseMapper<TransDetailSub> {
/**
* 查询出入库子表记录关联 headerdetail- 分页查询
*/
IPage<Map<String, Object>> searchTransSubRecords(Page<Map<String, Object>> page, @Param("dto") TransRecordQueryDto dto);
}

84
src/main/java/com/gaotao/modules/trans/entity/TransRecordQueryDto.java

@ -0,0 +1,84 @@
package com.gaotao.modules.trans.entity;
import lombok.Data;
import java.util.Date;
/**
* 出入库记录查询条件 DTO
*/
@Data
public class TransRecordQueryDto {
/**
* 工厂必填
*/
private String site;
/**
* 出入库单号事务号
*/
private String transNo;
/**
* 出入库类型
*/
private String transTypeDb;
/**
* 仓库
*/
private String warehouseId;
/**
* 物料编码主表明细
*/
private String partNo;
/**
* 批次号
*/
private String batchNo;
/**
* 库位
*/
private String locationId;
/**
* 子编号如处理单元/条码
*/
private String subNo;
/**
* 方向+ / -
*/
private String direction;
/**
* 单据状态
*/
private String status;
/**
* 开始时间 trans_date
*/
private Date startDate;
/**
* 结束时间 trans_date
*/
private Date endDate;
/**
* 分页参数 - 当前页码
*/
private Integer page;
/**
* 分页参数 - 每页条数
*/
private Integer limit;
}

9
src/main/java/com/gaotao/modules/trans/service/TransDetailSubService.java

@ -1,9 +1,16 @@
package com.gaotao.modules.trans.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gaotao.modules.trans.entity.TransDetailSub;
import com.gaotao.modules.trans.entity.TransRecordQueryDto;
public interface TransDetailSubService extends IService<TransDetailSub> {
import java.util.Map;
public interface TransDetailSubService extends IService<TransDetailSub> {
/**
* 查询出入库子表记录关联 headerdetail- 分页查询
*/
IPage<Map<String, Object>> searchTransSubRecords(TransRecordQueryDto dto);
}

15
src/main/java/com/gaotao/modules/trans/service/impl/TransDetailSubServiceImpl.java

@ -1,14 +1,29 @@
package com.gaotao.modules.trans.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gaotao.modules.trans.dao.TransDetailSubMapper;
import com.gaotao.modules.trans.entity.TransDetailSub;
import com.gaotao.modules.trans.entity.TransRecordQueryDto;
import com.gaotao.modules.trans.service.TransDetailSubService;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class TransDetailSubServiceImpl extends ServiceImpl<TransDetailSubMapper, TransDetailSub> implements TransDetailSubService {
@Override
public IPage<Map<String, Object>> searchTransSubRecords(TransRecordQueryDto dto) {
// 构建分页对象
int pageNum = dto.getPage() != null ? dto.getPage() : 1;
int pageSize = dto.getLimit() != null ? dto.getLimit() : 20;
Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
// 执行分页查询
return this.baseMapper.searchTransSubRecords(page, dto);
}
}

83
src/main/resources/mapper/trans/TransDetailSubMapper.xml

@ -3,4 +3,87 @@
<mapper namespace="com.gaotao.modules.trans.dao.TransDetailSubMapper">
<!-- 出入库子表记录查询(关联 header、detail)- 分页查询 -->
<select id="searchTransSubRecords" resultType="java.util.Map">
SELECT
h.site AS site,
h.trans_no AS transNo,
h.trans_date AS transDate,
h.trans_type_db AS transTypeDb,
h.warehouse_id AS warehouseId,
h.user_name AS userName,
h.status AS status,
h.remark AS headerRemark,
d.item_no AS itemNo,
d.part_no AS partNo,
d.batch_no AS batchNo,
d.location_id AS locationId,
d.trans_qty AS transQty,
d.direction AS direction,
d.wdr_no AS wdrNo,
d.eng_chg_level AS engChgLevel,
s.seq_no AS seqNo,
s.sub_no AS subNo,
s.sub_qty AS subQty,
s.direction AS subDirection,
s.part_no AS subPartNo,
s.batch_no AS subBatchNo,
s.location_id AS subLocationId,
s.order_ref1 AS subOrderRef1,
s.order_ref2 AS subOrderRef2,
s.order_ref3 AS subOrderRef3,
s.order_ref4 AS subOrderRef4,
s.order_ref5 AS subOrderRef5,
s.order_ref6 AS subOrderRef6,
s.remark AS subRemark
FROM trans_detail_sub s
JOIN trans_detail d
ON s.site = d.site
AND s.trans_no = d.trans_no
AND s.item_no = d.item_no
JOIN trans_header h
ON s.site = h.site
AND s.trans_no = h.trans_no
WHERE 1 = 1
<if test="dto.site != null and dto.site != ''">
AND h.site = #{dto.site}
</if>
<if test="dto.transNo != null and dto.transNo != ''">
AND h.trans_no like concat('%',#{dto.transNo},'%')
</if>
<if test="dto.transTypeDb != null and dto.transTypeDb != ''">
AND h.trans_type_db = #{dto.transTypeDb}
</if>
<if test="dto.warehouseId != null and dto.warehouseId != ''">
AND h.warehouse_id = #{dto.warehouseId}
</if>
<if test="dto.status != null and dto.status != ''">
AND h.status = #{dto.status}
</if>
<if test="dto.partNo != null and dto.partNo != ''">
AND d.part_no like concat('%',#{dto.partNo},'%')
</if>
<if test="dto.batchNo != null and dto.batchNo != ''">
AND d.batch_no like concat('%',#{dto.batchNo},'%')
</if>
<if test="dto.locationId != null and dto.locationId != ''">
AND d.location_id like concat('%',#{dto.locationId},'%')
</if>
<if test="dto.subNo != null and dto.subNo != ''">
AND s.sub_no like concat('%', #{dto.subNo},'%')
</if>
<if test="dto.direction != null and dto.direction != ''">
AND d.direction = #{dto.direction}
</if>
<if test="dto.startDate != null">
AND h.trans_date &gt;= #{dto.startDate}
</if>
<if test="dto.endDate != null">
AND h.trans_date &lt;= #{dto.endDate}
</if>
ORDER BY h.trans_date DESC, h.trans_no DESC, d.item_no ASC, s.seq_no ASC
</select>
</mapper>
Loading…
Cancel
Save