Merge branch 'feature/bug-890' into develop

# Conflicts:
#	nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java
#	nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSearchQO.java
#	nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutProduceTicketVO.java
#	nflg-wms-repository/src/main/resources/mapper/WmsOutProduceTicketMapper.xml
This commit is contained in:
曹鹏飞 2025-11-12 14:48:06 +08:00
commit 88717846a8
15 changed files with 93 additions and 9 deletions

View File

@ -111,6 +111,7 @@ public class InProduceOrderController extends BaseController {
public ApiResult<Long> save(@Valid @RequestBody InProduceOrderSaveQO request) {
if (Objects.isNull(request.getId())) {
WmsInProduceOrder order = new WmsInProduceOrder()
.setDataType(request.getDataType())
.setNo(serialNumberControllerService.generateSerialNumber(8))
.setOrderNo(request.getAufnr())
.setList(request.getList())
@ -283,6 +284,7 @@ public class InProduceOrderController extends BaseController {
}
InProduceOrderItemVO first = list.get(0);
Map<String, String> base = new HashMap<>();
base.put("title", order.getDataType() == 0 ? "半成品入库单" : "成品入库单");
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
base.put("factoryNo", first.getFactoryNo());
base.put("warehouseNo", first.getWarehouseNo());

View File

@ -24,6 +24,7 @@ import com.nflg.wms.common.pojo.dto.InventoryForOutDTO;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.EecExcelUtil;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.WmsOutProduce;
@ -42,7 +43,9 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.ttzero.excel.entity.ListMapSheet;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDateTime;
@ -500,6 +503,7 @@ public class OutProduceController extends BaseController {
// list.add(new WmsOutProduceItem().setMatnr(RandomUtil.randomNumbers(10)));
// }
Map<String, String> base = new HashMap<>();
base.put("title", order.getDataType() == 0 ? "生产订单领料单" : "成品发货领料单");
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getNo(), 100, 100));
Map<String, Object> variables = new HashMap<>();
@ -559,6 +563,7 @@ public class OutProduceController extends BaseController {
/**
* 导出领料出库单
* @param id 出库单id
*/
@GetMapping("0/exportTicket")
public void exportTicket0(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
@ -568,6 +573,7 @@ public class OutProduceController extends BaseController {
List<OutProduceInfoItemVO> list = outProduceTicketItemService.getList(id);
list.forEach(it -> it.setAufnr(order.getAufnr()));
Map<String, String> base = new HashMap<>();
base.put("title", order.getDataType() == 0 ? "生产订单发料单" : "成品发货出库单");
base.put("createDate", DateUtil.format(order.getCreateTime(), "yyyy-MM-dd"));
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
Map<String, Object> variables = new HashMap<>();
@ -577,4 +583,30 @@ public class OutProduceController extends BaseController {
String html = ThymeleafUtil.generator("/template/", "生产领料出库单", ".html", variables);
PdfGeneratorUtil.generatePdf("生产领料出库单" + order.getNo(), html, response);
}
/**
* 导出领料出库单EXCEL
* @param id 出库单id
*/
@GetMapping("exportTicket")
public void exportTicket(HttpServletResponse response, @RequestParam @NotNull Long id) throws IOException {
OutProduceTicketVO order = outProduceTicketService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("领料出库单不存在");
List<Map<String, Object>> datas = new ArrayList<>();
List<OutProduceInfoItemVO> list = outProduceTicketItemService.getList(id);
list.forEach(it -> {
Map<String, Object> map = new LinkedHashMap<>();
map.put("物料编码", it.getMatnr());
map.put("物料描述", it.getMaktx2());
map.put("单位", it.getMeins());
map.put("预留/相关需求的项目编号", it.getRspos());
map.put("需求日期", it.getBdter());
map.put("申请数量", it.getNum());
map.put("工厂", order.getDwerk());
map.put("仓库", it.getLgort2());
datas.add(map);
});
EecExcelUtil.eecExcel((order.getDataType() == 0 ? "生产订单发料单" : "成品发货出库单") + order.getTicketNo()
, new ListMapSheet<>(datas), response);
}
}

View File

@ -141,7 +141,7 @@
</div>
<div>
<div class="company-name">福建南方路面机械股份有限公司</div>
<div class="title">成品/半成品入库单</div>
<div class="title" th:text="${base.title}">成品/半成品入库单</div>
</div>
</div>
<div class="table-desc">

View File

@ -127,7 +127,7 @@
<div class="package-logo" style="margin: 5px;position:absolute;"><img src="../img/logo1.png"/></div>
<div>
<div class="company-name">福建南方路面机械股份有限公司</div>
<div class="title">生产订单发料单</div>
<div class="title" th:text="${base.title}">生产订单发料单</div>
</div>
</div>
<div class="table-desc">

View File

@ -166,7 +166,7 @@
<div class="qrcode"><img th:src="${base.qrcode}" src="../img/qrcode.png"/></div>
<div>
<div class="company-name">福建南方路面机械股份有限公司</div>
<div class="title">生产订单领料单</div>
<div class="title" th:text="${base.title}">生产订单领料单</div>
</div>
</div>
<div class="table-desc">

View File

@ -6,4 +6,9 @@ import lombok.Data;
public class InProduceOrderSaveQO extends InProduceOrderGenerateMaterialsQO {
private Long id;
/**
* 类型0半成品1成品
*/
private Integer dataType = 0;
}

View File

@ -9,4 +9,9 @@ public class InProduceOrderSearchQO extends SearchBaseQO{
* 报工单号或生产订单号
*/
private String no;
/**
* 类型0半成品1成品
*/
private Integer dataType = 0;
}

View File

@ -1,12 +1,24 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class OutProduceSearchQO extends SearchBaseQO {
/**
* 单号
* 类型0领料1补料
*/
@NotNull
private Integer type;
/**
* 数据类型0半成品1成品
*/
private Integer dataType = 0;
/**
* 领料单号
*/
private String no;

View File

@ -15,6 +15,11 @@ public class OutProduceTicketVO extends OutProduceVO {
*/
private String ticketNo;
/**
* 数据类型0半成品1成品
*/
private Integer dataType;
/**
* 是否已完成
*/

View File

@ -130,6 +130,11 @@ public class Zwm3a07VO {
*/
private BigDecimal leftNum;
/**
* 数据类型0半成品1成品
*/
private Integer dataType = 0;
@JsonIgnore
private String key1;

View File

@ -1,6 +1,7 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
@ -51,6 +52,12 @@ public class WmsInProduceOrder implements Serializable {
*/
private Short state;
/**
* 数据类型0半成品1成品
*/
@TableField("data_type")
private Integer dataType;
/**
* 物料凭证编号
*/

View File

@ -1,6 +1,7 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
@ -129,4 +130,10 @@ public class WmsOutProduce implements Serializable {
* 类型0领料1补料
*/
private Integer type;
/**
* 数据类型0半成品1成品
*/
@TableField("data_type")
private Integer dataType;
}

View File

@ -26,6 +26,7 @@ public class WmsInProduceOrderServiceImpl extends ServiceImpl<WmsInProduceOrderM
@Override
public IPage<WmsInProduceOrder> search(InProduceOrderSearchQO request) {
return lambdaQuery()
.eq(WmsInProduceOrder::getDataType, request.getDataType())
.and(StrUtil.isNotBlank(request.getNo()),wrapper ->
wrapper.like(WmsInProduceOrder::getNo, request.getNo())
.or()

View File

@ -15,6 +15,9 @@
SELECT *
FROM wms_out_produce
where "type"=#{request.type}
<if test="request.dataType!=null and request.type==0">
and data_type = #{request.dataType}
</if>
<if test="request.no!=null and request.no!=''">
and "no" ilike concat('%', #{request.no}, '%')
</if>

View File

@ -24,7 +24,7 @@
</select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.OutProduceTicketVO">
SELECT opt.id,opt."no" as "ticketNo",opt.mat_doc,opt.create_by,opt.create_time,opt.finish,op.*
SELECT opt.id,opt."no" as "ticketNo",opt.mat_doc,opt.create_by,opt.create_time,opt.finish,op.data_type,op.*
FROM wms_out_produce_ticket opt
INNER JOIN wms_out_produce op ON opt.produce_id=op."id"
where opt.id=#{id}