直转问题处理

This commit is contained in:
hongchao 2026-01-26 16:26:55 +08:00
parent e46a636739
commit a3158e6bb3
8 changed files with 312 additions and 4 deletions

View File

@ -1,5 +1,8 @@
package com.bonus.material.ma.controller;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.bonus.common.biz.config.PoiOutPage;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.poi.ExcelUtil;
import com.bonus.common.core.web.controller.BaseController;
@ -13,14 +16,20 @@ import com.bonus.material.ma.domain.*;
import com.bonus.material.ma.service.DirectRotationService;
import com.bonus.material.ma.service.ITypeService;
import com.bonus.material.settlement.domain.SltAgreementInfo;
import com.bonus.material.settlement.domain.vo.SltLeaseInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
@ -214,6 +223,33 @@ public class DirectRotationController extends BaseController {
util.exportExcel(response, list, fileName, title);
}
/**
* 导出直转记录详情
*
* @param response
* @param directApplyInfo
*/
@PostMapping("/exportDetail")
public void exportDetail(HttpServletResponse response, DirectApplyInfo directApplyInfo) {
try {
String fileName = "直转申请详情";
List<DirectApplyExportDetails> details = service.getDetailList(directApplyInfo);
// 根据list集合数去填充序号
for (int i = 0; i < details.size(); i++) {
details.get(i).setSerialNumber(i + 1);
}
ExcelUtil<DirectApplyExportDetails> util = new ExcelUtil<>(DirectApplyExportDetails.class);
// 获取当前年月日时分秒导出时间用括号拼接在后面
String title = "直转申请详情" + "" + "导出时间:" + DateUtils.getTime() + "";
util.exportExcel(response, details, fileName, title);
} catch (Exception e) {
log.error(e.toString(), e);
}
}
/**
* 直转记录查询列表--app
*/

View File

@ -0,0 +1,181 @@
package com.bonus.material.ma.domain;
import com.bonus.common.core.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author ma_sh
* @create 2025/6/17 10:00
*/
@EqualsAndHashCode(callSuper = false)
@Data
public class DirectApplyExportDetails {
@ApiModelProperty(value = "序号")
@Excel(name = "序号", isSequence = true, sort = 0, width = 5)
private Integer serialNumber;
/**
* id
*/
private Integer id;
/**
* 直转单号(ZZ20240226-1)
*/
private String code;
/**
* 退料单位协议
*/
private Integer backAgreementId;
/**
* 退料工程id
*/
private String backProId;
/**
* 关键字
*/
private String keyWord;
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "申请时间", sort = 1, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private String remark;
/**
* 退料工程名称
*/
@Excel(name = "转出工程", sort = 4, width = 30)
private String backProName;
/**
* 退料单位id
*/
private String backUnitId;
/**
* 退料单位名称
*/
@Excel(name = "转出单位", sort = 3, width = 30)
private String backUnitName;
/**
* 领料工程id
*/
private String leaseProId;
/**
* 领料工程名称
*/
@Excel(name = "转入工程", sort = 6, width = 30)
private String leaseProName;
/**
* 领料单位id
*/
private String leaseUnitId;
/**
* 领料单位名称
*/
@Excel(name = "转入单位", sort = 5, width = 30)
private String leaseUnitName;
/**
* 退料人
*/
private String backMan;
/**
* 手机号
*/
private String backPhone;
private String backManAndPhone;
/**
* 退料备注
*/
private String backRemark;
/**
* 领料单位协议
*/
private int leaseAgreementId;
/**
* 领料人
*/
private String leaseMan;
/**
* 领料联系电话
*/
private String leasePhone;
private String leaseManAndPhone;
/**
* 领料备注
*/
private String leaseRemark;
/**
* 0待审批1审批同意2驳回
*/
@Excel(name = "状态", sort = 7, readConverterExp = "0=待审核,1=审核中,2=已完成,3=已驳回")
private String status;
/**
* 退料单位协议
*/
private String backAgreementCode;
/**
* 领料单位协议
*/
private String leaseAgreementCode;
/**
* 退料工程id
*/
private String lotId;
/**
* 退料单位id
*/
private String unitId;
@Excel(name = "类型名称", sort = 8, width = 30)
private String typeName;
@Excel(name = "规格型号", sort = 9, width = 30)
private String typeModelName;
@Excel(name = "直转数量", sort = 10, align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
private BigDecimal directNum;
@Excel(name = "机具编号", sort = 11, width = 30)
private String maCode;
@Excel(name = "计量单位", sort = 12, width = 30)
private String unitName;
@Excel(name = "申请人", sort = 2)
private String createName;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "业务联系单号")
private String businessCode;
}

View File

@ -4,6 +4,7 @@ import com.bonus.common.biz.domain.lease.LeaseOutSign;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.clz.domain.direct.ClzDirectApplyInfo;
import com.bonus.material.ma.domain.DirectApplyDetails;
import com.bonus.material.ma.domain.DirectApplyExportDetails;
import com.bonus.material.ma.domain.DirectApplyExportInfo;
import com.bonus.material.ma.domain.DirectApplyInfo;
import com.bonus.material.settlement.domain.SltAgreementInfo;
@ -137,4 +138,6 @@ public interface DirectRotationMapper {
List<SltAgreementInfo> getXmList(DirectApplyDetails applyDetail);
List<SltAgreementInfo> getClzList(DirectApplyDetails applyDetail);
List<DirectApplyExportDetails> getDetailList(DirectApplyInfo directApplyInfo);
}

View File

@ -3,10 +3,7 @@ package com.bonus.material.ma.service;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.ma.domain.DirectApplyExportInfo;
import com.bonus.material.ma.domain.DirectApplyInfo;
import com.bonus.material.ma.domain.DirectApplyInfoDetails;
import com.bonus.material.ma.domain.DirectApplySignInfo;
import com.bonus.material.ma.domain.*;
import com.bonus.material.settlement.domain.SltAgreementInfo;
import org.apache.ibatis.annotations.Param;
@ -48,6 +45,7 @@ public interface DirectRotationService {
*/
DirectApplyInfo getInfoById(SltAgreementInfo sltAgreementInfo);
/**
* 查看详情
* @param sltAgreementInfo
@ -129,4 +127,6 @@ public interface DirectRotationService {
* @return
*/
AjaxResult getCodeList(DirectApplyInfo directApplyInfo);
List<DirectApplyExportDetails> getDetailList(DirectApplyInfo directApplyInfo);
}

View File

@ -316,6 +316,12 @@ public class DirectRotationImpl implements DirectRotationService {
return directApplyInfo;
}
@Override
public List<DirectApplyExportDetails> getDetailList(DirectApplyInfo directApplyInfo) {
List<DirectApplyExportDetails> detailById = mapper.getDetailList(directApplyInfo);
return detailById;
}
@Override
public DirectApplyInfo getInfoApp(SltAgreementInfo sltAgreementInfo) {
DirectApplyInfo directApplyInfo = mapper.getInfoById(sltAgreementInfo);

View File

@ -325,4 +325,14 @@ public class SltAgreementInfo extends BaseEntity {
@ApiModelProperty(value = "结算协议书编号")
private String bookCode;
/**
* 退料工程id
*/
private String backProId;
/**
* 领料工程id
*/
private String leaseProId;
}

View File

@ -641,6 +641,7 @@
<if test="taskStatus==1">and swr.workflow_status = 1 </if>
<if test="taskStatus==2">and swr.workflow_status = 2 </if>
<if test="taskStatus==3">and swr.workflow_status = 3 </if>
<if test="impUnitName != null and impUnitName != ''">and sd.dept_name = #{impUnitName}</if>
GROUP BY lai.id
ORDER BY tt.create_time desc
</select>

View File

@ -125,6 +125,12 @@
left join sys_user su on dai.create_by = su.user_id
left join sys_workflow_record swr on swr.task_id = dai.id
<where>
<if test="backProId != null">
and bpl.pro_id = #{backProId}
</if>
<if test="leaseProId != null">
and bpl1.pro_id = #{leaseProId}
</if>
<if test="lotId != null and lotId != ''">
and bpl.pro_id = #{lotId}
</if>
@ -145,6 +151,7 @@
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND DATE_FORMAT( dai.create_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime}
</if>
</where>
GROUP BY dai.id
order by dai.create_time desc
@ -520,4 +527,68 @@
</if>
order by start_time asc
</select>
<select id="getDetailList" resultType="com.bonus.material.ma.domain.DirectApplyExportDetails">
SELECT
dad.id as id,
dai.create_time AS createTime,
su.nick_name AS createName,
bui.unit_id AS backUnitId,
bui.unit_name AS backUnitName,
bpl.pro_id AS backProId,
bpl.pro_name AS backProName,
bui1.unit_id AS leaseUnitId,
bui1.unit_name AS leaseUnitName,
bpl1.pro_id AS leaseProId,
bpl1.pro_name AS leaseProName,
dad.direct_num AS directNum,
dad.type_id AS typeId,
mt2.type_name AS typeName,
mt.type_name AS typeModelName,
mt.unit_name AS unitName,
mm.ma_code AS maCode,
mm.ma_id AS maId,
mt.manage_type as manageType,
dai.back_agreement_id as backAgreementId,
dai.lease_agreement_id as leaseAgreementId,
IFNULL(swr.workflow_status,2) as status
FROM
direct_apply_info dai
LEFT JOIN bm_agreement_info bai ON dai.back_agreement_id = bai.agreement_id
LEFT JOIN bm_agreement_info bai1 ON dai.lease_agreement_id = bai1.agreement_id
LEFT JOIN bm_project bpl ON bpl.pro_id = bai.project_id
LEFT JOIN bm_project bpl1 ON bpl1.pro_id = bai1.project_id
LEFT JOIN bm_unit bui ON bui.unit_id = bai.unit_id
LEFT JOIN bm_unit bui1 ON bui1.unit_id = bai1.unit_id
LEFT JOIN direct_apply_details dad ON dai.id = dad.direct_id
LEFT JOIN ma_type mt ON mt.type_id = dad.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
LEFT JOIN ma_machine mm ON dad.ma_id = mm.ma_id
left join sys_user su on dai.create_by = su.user_id
left join sys_workflow_record swr on swr.task_id = dai.id
where
1 = 1
<if test="backProId != null">
and bpl.pro_id = #{backProId}
</if>
<if test="leaseProId != null">
and bpl1.pro_id = #{leaseProId}
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND DATE_FORMAT( dai.create_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime}
</if>
<if test="status != null and status != ''">
and swr.workflow_status = #{status}
</if>
<if test="keyWord!=null and keyWord!=''">
AND (
INSTR(mt2.type_name,#{keyWord}) > 0 OR
INSTR(bui.unit_name,#{keyWord}) > 0 OR
INSTR(bpl.pro_name,#{keyWord}) > 0 OR
INSTR(bui1.unit_name,#{keyWord}) > 0 OR
INSTR(bpl1.pro_name,#{keyWord}) > 0
)
</if>
ORDER BY
dai.create_time DESC
</select>
</mapper>