Compare commits

...

3 Commits

Author SHA1 Message Date
曹鹏飞 d977e8e1c7 feat(admin): 优化组件打包和生产订单功能
- 修复组件打包中的启套逻辑判断
- 添加物料扫描记录的复合键支持
- 实现生产订单中仓库编号变更的批量更新
- 优化生产订单接收物料的分组逻辑
- 添加使用指南文件类型的数据库字段
- 实现使用指南按类别查询的VO转换
- 修复部署测试中的目录处理注释问题
- 优化菜单按钮和角色权限的数据查询
- 添加SAP料号重复检查验证
- 调整生产领料单模板的页面尺寸和样式
2026-01-28 17:04:34 +08:00
曹鹏飞 c0faaf7475 fix: bug-1248 储位码打印预览多一页空白页 2026-01-20 11:39:56 +08:00
曹鹏飞 101cfcc193 fix: bug-1255 部件清单校验管理【已确认齐套】问题 2026-01-20 11:38:37 +08:00
27 changed files with 209 additions and 73 deletions

View File

@ -201,8 +201,8 @@ public class ComponentPackingController {
List<ComponentPackingItemPdaVO> daVos = tasks.stream() List<ComponentPackingItemPdaVO> daVos = tasks.stream()
.map(item1 -> { .map(item1 -> {
ComponentPackingItemPdaVO vo = Convert.convert(ComponentPackingItemPdaVO.class, item1); ComponentPackingItemPdaVO vo = Convert.convert(ComponentPackingItemPdaVO.class, item1);
vo.setQiTao(bomService.isParent(vo.getIdnrk())); vo.setQiTao(type > 0);
if (vo.isQiTao() && Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(vo.getIdnrk())); vo.setChildren(bomService.getChildrenVO(vo.getIdnrk()));
} }
return vo; return vo;

View File

@ -373,7 +373,7 @@ public class InProduceOrderController extends BaseController {
.toList(); .toList();
Integer type = bomService.getScanType(it.getMaterialNo()); Integer type = bomService.getScanType(it.getMaterialNo());
children.forEach(child -> { children.forEach(child -> {
child.setQiTao(Objects.nonNull(type)); child.setQiTao(type > 0);
if (Objects.equals(type, 0)) { if (Objects.equals(type, 0)) {
child.setMustScan(false); child.setMustScan(false);
} }
@ -422,6 +422,7 @@ public class InProduceOrderController extends BaseController {
} }
List<String> materialNos = new ArrayList<>(); List<String> materialNos = new ArrayList<>();
List<InMaterialScanRecord> records = new ArrayList<>(); List<InMaterialScanRecord> records = new ArrayList<>();
Map<Long, String> warehouseNoChange = new HashMap<>();
datas.forEach(it -> { datas.forEach(it -> {
InProduceOrderReceiveMaterialQO materialQO = request.getItems() InProduceOrderReceiveMaterialQO materialQO = request.getItems()
.stream() .stream()
@ -433,6 +434,18 @@ public class InProduceOrderController extends BaseController {
} else { } else {
VUtil.trueThrowBusinessError(it.isMustScan() && CollectionUtil.isEmpty(materialQO.getQrCodes())) VUtil.trueThrowBusinessError(it.isMustScan() && CollectionUtil.isEmpty(materialQO.getQrCodes()))
.throwMessage(materialQO.getMaterialNo() + "需要提供扫码信息"); .throwMessage(materialQO.getMaterialNo() + "需要提供扫码信息");
if (!StrUtil.equals(it.getWarehouseNo(), materialQO.getWarehouseNo())) {
warehouseNoChange.put(it.getId(), materialQO.getWarehouseNo());
it.setWarehouseNo(materialQO.getWarehouseNo());
if (it.getParentId()>0){
InProduceOrderItemVO pit=list.stream()
.filter(l->Objects.equals(l.getId(),it.getParentId()))
.findFirst()
.get();
warehouseNoChange.put(pit.getId(), materialQO.getWarehouseNo());
pit.setWarehouseNo(materialQO.getWarehouseNo());
}
}
if (it.isMustScan()) { if (it.isMustScan()) {
BigDecimal num = BigDecimal.ZERO; BigDecimal num = BigDecimal.ZERO;
for (String qrCode : materialQO.getQrCodes()) { for (String qrCode : materialQO.getQrCodes()) {
@ -490,15 +503,19 @@ public class InProduceOrderController extends BaseController {
.map(InProduceOrderItemVO::getSernr) .map(InProduceOrderItemVO::getSernr)
.toList(); .toList();
} else { } else {
input1 = records.stream().collect(Collectors.groupingBy(InMaterialScanRecord::getBatchNo)) input1 = records.stream().collect(Collectors.groupingBy(InMaterialScanRecord::getKey8))
.entrySet() .values()
.stream() .stream()
.map(kv -> new Zwm00Mb107QO() .map(inMaterialScanRecords -> {
.setPWERK(kv.getValue().get(0).getFactoryNo()) InMaterialScanRecord item = inMaterialScanRecords.get(0);
.setPSMNG(kv.getValue().stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) return new Zwm00Mb107QO()
.setAMEIN(kv.getValue().get(0).getUnit()) .setPWERK(item.getFactoryNo())
.setLGORT(kv.getValue().get(0).getWarehouseNo()) .setPSMNG(inMaterialScanRecords.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setCHARG(kv.getKey())) .setAMEIN(item.getUnit())
.setLGORT(item.getWarehouseNo())
.setCHARG(item.getBatchNo());
}
)
.toList(); .toList();
sernrs = records.stream() sernrs = records.stream()
.map(InMaterialScanRecord::getSerialNo) .map(InMaterialScanRecord::getSerialNo)
@ -516,6 +533,16 @@ public class InProduceOrderController extends BaseController {
).toList() ).toList()
); );
inMaterialScanRecordRespository.saveAll(records); inMaterialScanRecordRespository.saveAll(records);
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {
produceOrderItemService.updateBatchById(
warehouseNoChange.entrySet()
.stream()
.map(it -> new WmsInProduceOrderItem()
.setId(it.getKey())
.setWarehouseNo(it.getValue())
).toList()
);
}
//同步入库信息到SAP //同步入库信息到SAP
Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, sernrs); Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, sernrs);
order.setMblnr(dto.getE_MBLNR()); order.setMblnr(dto.getE_MBLNR());

View File

@ -175,7 +175,7 @@ public class OutAssistanceController extends BaseController {
.setItems(datas.stream() .setItems(datas.stream()
.filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0) .filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0)
.map(item -> { .map(item -> {
Integer type = bomService.getScanType(item.getMatnr1()); Integer type = bomService.getScanType(item.getMatnr1());
OutProduceItemVO vo = new OutProduceItemVO() OutProduceItemVO vo = new OutProduceItemVO()
.setId(item.getId()) .setId(item.getId())
.setLgort2(order.getLgort1()) .setLgort2(order.getLgort1())
@ -184,8 +184,8 @@ public class OutAssistanceController extends BaseController {
.setMatnr(item.getMatnr1()) .setMatnr(item.getMatnr1())
.setMeins(item.getMeins()) .setMeins(item.getMeins())
.setNum(item.getLeft()); .setNum(item.getLeft());
vo.setQiTao(bomService.isParent(item.getMatnr1())); vo.setQiTao(type > 0);
if (vo.isQiTao() && Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(item.getMatnr1())); vo.setChildren(bomService.getChildrenVO(item.getMatnr1()));
} }
return vo; return vo;
@ -206,7 +206,7 @@ public class OutAssistanceController extends BaseController {
Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet()); Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet());
matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet())); matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet()));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs)) VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs))
.throwMessage("以下物料无库存,不能出库:"+ StrUtil.join(",", matnrs)); .throwMessage("以下物料无库存,不能出库:" + StrUtil.join(",", matnrs));
WmsOutAssistanceTicket ticket = new WmsOutAssistanceTicket() WmsOutAssistanceTicket ticket = new WmsOutAssistanceTicket()
.setId(IdUtil.getSnowflakeNextId()) .setId(IdUtil.getSnowflakeNextId())
.setNo(serialNumberControllerService.generateSerialNumber(17)) .setNo(serialNumberControllerService.generateSerialNumber(17))
@ -342,7 +342,7 @@ public class OutAssistanceController extends BaseController {
SubcontractedOrderConfirmDTO dto = sapService.zwm3a04(new SubcontractedOrderConfirmQO() SubcontractedOrderConfirmDTO dto = sapService.zwm3a04(new SubcontractedOrderConfirmQO()
.setIEbeln(order.getEbeln()) .setIEbeln(order.getEbeln())
.setIItems(dmaps.values().stream().map(its -> { .setIItems(dmaps.values().stream().map(its -> {
WmsOutAssistanceItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr1(), its.get(0).getMaterialNo())).findFirst().get(); WmsOutAssistanceItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr1(), its.get(0).getMaterialNo())).findFirst().get();
return new SubcontractedOrderConfirmItemQO() return new SubcontractedOrderConfirmItemQO()
.setBedat(order.getBedat()) .setBedat(order.getBedat())
.setBukrs("1000") .setBukrs("1000")

View File

@ -174,7 +174,7 @@ public class OutCostCenterController extends BaseController {
.setItems(datas.stream() .setItems(datas.stream()
.filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0) .filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0)
.map(item -> { .map(item -> {
Integer type = bomService.getScanType(item.getMatnr()); Integer type = bomService.getScanType(item.getMatnr());
OutProduceItemVO vo = new OutProduceItemVO() OutProduceItemVO vo = new OutProduceItemVO()
.setId(item.getId()) .setId(item.getId())
.setLgort2(item.getLgort()) .setLgort2(item.getLgort())
@ -183,8 +183,8 @@ public class OutCostCenterController extends BaseController {
.setMatnr(item.getMatnr()) .setMatnr(item.getMatnr())
.setNum(item.getLeft()) .setNum(item.getLeft())
.setMeins(item.getMeins()); .setMeins(item.getMeins());
vo.setQiTao(bomService.isParent(item.getMatnr())); vo.setQiTao(type > 0);
if (vo.isQiTao() && Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(item.getMatnr())); vo.setChildren(bomService.getChildrenVO(item.getMatnr()));
} }
return vo; return vo;
@ -205,7 +205,7 @@ public class OutCostCenterController extends BaseController {
Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet()); Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet());
matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet())); matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet()));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs)) VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs))
.throwMessage("以下物料无库存,不能出库:"+ StrUtil.join(",", matnrs)); .throwMessage("以下物料无库存,不能出库:" + StrUtil.join(",", matnrs));
WmsOutCostcenterTicket ticket = new WmsOutCostcenterTicket() WmsOutCostcenterTicket ticket = new WmsOutCostcenterTicket()
.setId(IdUtil.getSnowflakeNextId()) .setId(IdUtil.getSnowflakeNextId())
.setNo(serialNumberControllerService.generateSerialNumber(15)) .setNo(serialNumberControllerService.generateSerialNumber(15))

View File

@ -298,9 +298,9 @@ public class OutProduceController extends BaseController {
.setMatnr(item.getMatnr()) .setMatnr(item.getMatnr())
.setMeins(item.getMeins()) .setMeins(item.getMeins())
.setNum(item.getSqsl().subtract(item.getNum())); .setNum(item.getSqsl().subtract(item.getNum()));
vo.setQiTao(bomService.isParent(item.getMatnr()));
Integer type = bomService.getScanType(item.getMatnr()); Integer type = bomService.getScanType(item.getMatnr());
if (vo.isQiTao() && Objects.equals(type, 1)) { vo.setQiTao(type > 0);
if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(item.getMatnr())); vo.setChildren(bomService.getChildrenVO(item.getMatnr()));
} }
return vo; return vo;

View File

@ -211,7 +211,7 @@ public class TransferCompanyController extends BaseController {
.setLgort1(order.getLgort()) .setLgort1(order.getLgort())
.setItems(datas.stream() .setItems(datas.stream()
.map(item -> { .map(item -> {
Integer type = bomService.getScanType(item.getMatnr()); Integer type = bomService.getScanType(item.getMatnr());
TransferCompanyPdaItemVO vo = new TransferCompanyPdaItemVO() TransferCompanyPdaItemVO vo = new TransferCompanyPdaItemVO()
.setId(item.getId()) .setId(item.getId())
.setEbelp(item.getEbelp()) .setEbelp(item.getEbelp())
@ -220,8 +220,8 @@ public class TransferCompanyController extends BaseController {
.setMaktx(item.getMaktx()) .setMaktx(item.getMaktx())
.setNum(item.getLeft()) .setNum(item.getLeft())
.setMeins(item.getMeins()); .setMeins(item.getMeins());
vo.setQiTao(bomService.isParent(item.getMatnr())); vo.setQiTao(type > 0);
if (vo.isQiTao() && Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(item.getMatnr())); vo.setChildren(bomService.getChildrenVO(item.getMatnr()));
} }
return vo; return vo;
@ -242,7 +242,7 @@ public class TransferCompanyController extends BaseController {
Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet()); Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet());
matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet())); matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet()));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs)) VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs))
.throwMessage("以下物料无库存,不能出库:"+ StrUtil.join(",", matnrs)); .throwMessage("以下物料无库存,不能出库:" + StrUtil.join(",", matnrs));
List<WmsTransferCompanyItem> datas = transferCompanyItemService.getList(order.getId()); List<WmsTransferCompanyItem> datas = transferCompanyItemService.getList(order.getId());
List<OutMaterialScanRecord> records = new ArrayList<>(); List<OutMaterialScanRecord> records = new ArrayList<>();
List<WmsTransferCompanyTicketItem> ticketItems = new ArrayList<>(); List<WmsTransferCompanyTicketItem> ticketItems = new ArrayList<>();

View File

@ -203,7 +203,7 @@ public class TransferFactoryController extends BaseController {
.setFactoryNo(order.getWerks()) .setFactoryNo(order.getWerks())
.setItems(datas.stream() .setItems(datas.stream()
.map(item -> { .map(item -> {
Integer type = bomService.getScanType(item.getMatnr()); Integer type = bomService.getScanType(item.getMatnr());
TransferFactoryPdaItemVO vo = new TransferFactoryPdaItemVO() TransferFactoryPdaItemVO vo = new TransferFactoryPdaItemVO()
.setId(item.getId()) .setId(item.getId())
.setMatnr(item.getMatnr()) .setMatnr(item.getMatnr())
@ -214,8 +214,8 @@ public class TransferFactoryController extends BaseController {
.setMeins(item.getMeins()) .setMeins(item.getMeins())
.setBinIn(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getUmlgo()))) .setBinIn(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getUmlgo())))
.setBinOut(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getLgort()))); .setBinOut(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getLgort())));
vo.setQiTao(bomService.isParent(item.getMatnr())); vo.setQiTao(type > 0);
if (vo.isQiTao() && Objects.equals(type, 1)) { if (Objects.equals(type, 1)) {
vo.setChildren(bomService.getChildrenVO(item.getMatnr())); vo.setChildren(bomService.getChildrenVO(item.getMatnr()));
} }
return vo; return vo;
@ -236,7 +236,7 @@ public class TransferFactoryController extends BaseController {
Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet()); Set<String> matnrs = request.getItems().stream().map(OutProduceSubmitItemQO::getMaterialNo).collect(Collectors.toSet());
matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet())); matnrs.removeAll(request.getRecommendBatch().stream().map(InventoryForOutVO::getMaterialNo).collect(Collectors.toSet()));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs)) VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(matnrs))
.throwMessage("以下物料无库存,不能出库:"+ StrUtil.join(",", matnrs)); .throwMessage("以下物料无库存,不能出库:" + StrUtil.join(",", matnrs));
List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId()); List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId());
List<OutMaterialScanRecord> records = new ArrayList<>(); List<OutMaterialScanRecord> records = new ArrayList<>();
WmsTransferFactoryTicket ticket = new WmsTransferFactoryTicket() WmsTransferFactoryTicket ticket = new WmsTransferFactoryTicket()

View File

@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.vo.UsageGuideVO;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.UsageGuide; import com.nflg.wms.repository.entity.UsageGuide;
import com.nflg.wms.repository.service.IUsageGuideService; import com.nflg.wms.repository.service.IUsageGuideService;
@ -36,14 +37,11 @@ public class UsageGuideController extends BaseController {
/** /**
* 文件搜索 * 文件搜索
* @param categoryId 类别id字典id
*/ */
@GetMapping("/getFiles") @GetMapping("/getFiles")
public ApiResult<List<UsageGuide>> getFiles(@RequestParam Long categoryId) { public ApiResult<List<UsageGuideVO>> getFiles(@RequestParam(required = false) Long categoryId) {
return ApiResult.success( return ApiResult.success(usageGuideService.getFiles(categoryId));
usageGuideService.lambdaQuery()
.eq(UsageGuide::getCategoryId, categoryId)
.list()
);
} }
/** /**
@ -61,6 +59,7 @@ public class UsageGuideController extends BaseController {
.setFileName(fileName) .setFileName(fileName)
.setFileSize(file.getSize()) .setFileSize(file.getSize())
.setUrl(url) .setUrl(url)
.setFileType(getFileType(file.getOriginalFilename()))
.setCreateBy(UserUtil.getUserName()) .setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now()) .setCreateTime(LocalDateTime.now())
); );

View File

@ -6,24 +6,28 @@
<title>二维码</title> <title>二维码</title>
<style> <style>
@page { @page {
size: 40mm 60mm; /*size: A4 landscape;*/
margin: 0; /*size: landscape;*/
margin: 2px;
}
body{
margin: 0 auto;
padding: 0;
font-family: SimSun, serif;
font-size: 11pt;
} }
.qrcode { .qrcode {
margin-top: 1mm; width: 199px;
width: 35mm; height: 199px;
height: 35mm;
} }
.container { .container {
width: 38mm; width: 200px;
height: 58mm; height: 230px;
font-size: 10pt;
font-family: SimSun, serif;
margin: 0;
padding: 0;
page-break-after: always; page-break-after: always;
border: #000 1px solid;
} }
.container:last-child { .container:last-child {
@ -37,7 +41,7 @@
<div> <div>
<img class="qrcode" alt="" th:src="${item.qrCode}" src="../img/qrcode.png"/> <img class="qrcode" alt="" th:src="${item.qrCode}" src="../img/qrcode.png"/>
</div> </div>
<div th:text="${item.no}">ICO2156115651</div> <div th:text="${item.no}">外D小架前6A</div>
</div> </div>
</div> </div>
</body> </body>

View File

@ -18,9 +18,10 @@
} }
body { body {
/*width: 280mm;*/ width: 1425px;
font-family: SimSun, serif; height: 825px;
font-size: 11pt; font-family: SimSun, monospace;
font-size: 12pt;
margin: 0; margin: 0;
} }
@ -38,13 +39,13 @@
.company-name { .company-name {
text-align: center; text-align: center;
font-size: 22pt; font-size: 23pt;
margin: 10px 0; margin: 10px 0;
} }
.title { .title {
text-align: center; text-align: center;
font-size: 25pt; font-size: 26pt;
font-weight: bold; font-weight: bold;
margin: 20px 0; margin: 20px 0;
} }
@ -105,15 +106,15 @@
} }
.col-unit { .col-unit {
width: 30px; width: 40px;
} }
.col-apply { .col-apply {
width: 60px; width: 70px;
} }
.col-actual { .col-actual {
width: 60px; width: 70px;
} }
.col-warehouse { .col-warehouse {
@ -140,7 +141,7 @@
} }
.package-logo { .package-logo {
width: 280px; width: 300px;
margin: 0 auto 20px; margin: 0 auto 20px;
position: absolute; position: absolute;
} }
@ -150,7 +151,7 @@
} }
.qrcode { .qrcode {
width: 140px; width: 150px;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;

View File

@ -34,7 +34,7 @@ public class DeployTest {
//处理主jar包 //处理主jar包
handleFile(sshUtil, localPath + jarName, remotePath + jarName); handleFile(sshUtil, localPath + jarName, remotePath + jarName);
//处理lib目录 //处理lib目录
handleDir(sshUtil, localPath, remotePath, "lib"); // handleDir(sshUtil, localPath, remotePath, "lib");
//执行脚本启动服务 //执行脚本启动服务
sshUtil.exec("cd " + remotePath + " && ./restart.sh"); sshUtil.exec("cd " + remotePath + " && ./restart.sh");
sshUtil.disconnect(); sshUtil.disconnect();

View File

@ -163,4 +163,11 @@ public class InMaterialScanRecord {
public String getKey7() { public String getKey7() {
return materialNo + "|" + batchNo; return materialNo + "|" + batchNo;
} }
@Transient
private String key8;
public String getKey8() {
return batchNo + "|" + factoryNo + "|" + unit + "|" + warehouseNo;
}
} }

View File

@ -14,6 +14,11 @@ public class InProduceOrderReceiveMaterialQO {
@NotBlank @NotBlank
private String materialNo; private String materialNo;
/**
* 仓库编号
*/
private String warehouseNo;
/** /**
* 储位编号列表 * 储位编号列表
*/ */

View File

@ -53,7 +53,7 @@ public class TransferCompanyPdaItemVO {
* 是否齐套物料 * 是否齐套物料
*/ */
@JsonProperty("isQiTao") @JsonProperty("isQiTao")
private boolean isQiTao; private boolean isQiTao = false;
/** /**
* 子项 * 子项

View File

@ -0,0 +1,51 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UsageGuideVO {
private Long id;
/**
* 类别id字典id
*/
private Long categoryId;
/**
* 类别名称
*/
private String categoryName;
/**
* 文件名称
*/
private String fileName;
/**
* 访问地址
*/
private String url;
/**
* 大小
*/
private Long fileSize;
/**
* 文件类型
*/
private String fileType;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
}

View File

@ -60,4 +60,9 @@ public class UsageGuide implements Serializable {
* 创建时间 * 创建时间
*/ */
private LocalDateTime createTime; private LocalDateTime createTime;
/**
* 文件类型
*/
private String fileType;
} }

View File

@ -1,8 +1,11 @@
package com.nflg.wms.repository.mapper; package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.common.pojo.vo.UsageGuideVO;
import com.nflg.wms.repository.entity.UsageGuide; import com.nflg.wms.repository.entity.UsageGuide;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
@ -13,4 +16,5 @@ import com.nflg.wms.repository.entity.UsageGuide;
*/ */
public interface UsageGuideMapper extends BaseMapper<UsageGuide> { public interface UsageGuideMapper extends BaseMapper<UsageGuide> {
List<UsageGuideVO> getFiles(Long categoryId);
} }

View File

@ -1,8 +1,11 @@
package com.nflg.wms.repository.service; package com.nflg.wms.repository.service;
import com.nflg.wms.common.pojo.vo.UsageGuideVO;
import com.nflg.wms.repository.entity.UsageGuide; import com.nflg.wms.repository.entity.UsageGuide;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* <p> * <p>
* 服务类 * 服务类
@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IUsageGuideService extends IService<UsageGuide> { public interface IUsageGuideService extends IService<UsageGuide> {
List<UsageGuideVO> getFiles(Long categoryId);
} }

View File

@ -32,7 +32,7 @@ public interface IWmsBomService extends IService<WmsBom> {
List<BomVO> getChildrenVO(String materialNo); List<BomVO> getChildrenVO(String materialNo);
boolean isParent(String materialNo); // boolean isParent(String materialNo);
Integer getScanType(String materialNo); Integer getScanType(String materialNo);
} }

View File

@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -103,6 +104,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
MenuVO menu = menus.get(i); MenuVO menu = menus.get(i);
bindParent(menu, menus); bindParent(menu, menus);
} }
menus.sort(Comparator.comparingInt(MenuVO::getSort));
return menus; return menus;
} }
@ -110,7 +112,13 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
if (!Objects.equals(0L, menu.getParentId())) { if (!Objects.equals(0L, menu.getParentId())) {
Menu mp = menuService.getById(menu.getParentId()); Menu mp = menuService.getById(menu.getParentId());
if (datas.stream().noneMatch(d -> Objects.equals(d.getId(), mp.getId()))) { if (datas.stream().noneMatch(d -> Objects.equals(d.getId(), mp.getId()))) {
MenuVO m = new MenuVO().setId(mp.getId()).setName(mp.getName()).setShow(mp.getShow()).setUrl(mp.getUrl()).setComponent(mp.getComponent()).setParentId(mp.getParentId()); MenuVO m = new MenuVO()
.setId(mp.getId())
.setName(mp.getName())
.setShow(mp.getShow())
.setUrl(mp.getUrl())
.setComponent(mp.getComponent())
.setParentId(mp.getParentId());
datas.add(m); datas.add(m);
} }
} }

View File

@ -1,11 +1,14 @@
package com.nflg.wms.repository.service.impl; package com.nflg.wms.repository.service.impl;
import com.nflg.wms.common.pojo.vo.UsageGuideVO;
import com.nflg.wms.repository.entity.UsageGuide; import com.nflg.wms.repository.entity.UsageGuide;
import com.nflg.wms.repository.mapper.UsageGuideMapper; import com.nflg.wms.repository.mapper.UsageGuideMapper;
import com.nflg.wms.repository.service.IUsageGuideService; import com.nflg.wms.repository.service.IUsageGuideService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* <p> * <p>
* 服务实现类 * 服务实现类
@ -17,4 +20,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class UsageGuideServiceImpl extends ServiceImpl<UsageGuideMapper, UsageGuide> implements IUsageGuideService { public class UsageGuideServiceImpl extends ServiceImpl<UsageGuideMapper, UsageGuide> implements IUsageGuideService {
@Override
public List<UsageGuideVO> getFiles(Long categoryId) {
return baseMapper.getFiles(categoryId);
}
} }

View File

@ -171,13 +171,13 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
.toList(); .toList();
} }
@Override // @Override
public boolean isParent(String materialNo) { // public boolean isParent(String materialNo) {
return lambdaQuery() // return lambdaQuery()
.eq(WmsBom::getParentId, 0) // .eq(WmsBom::getParentId, 0)
.eq(WmsBom::getNo, materialNo) // .eq(WmsBom::getNo, materialNo)
.exists(); // .exists();
} // }
@Override @Override
public Integer getScanType(String materialNo) { public Integer getScanType(String materialNo) {
@ -185,7 +185,7 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
.eq(WmsBom::getParentId, 0L) .eq(WmsBom::getParentId, 0L)
.eq(WmsBom::getNo, materialNo) .eq(WmsBom::getNo, materialNo)
.one() .one()
).orElse(new WmsBom()) ).orElse(new WmsBom().setScanType(-1))
.getScanType(); .getScanType();
} }
} }

View File

@ -32,6 +32,9 @@ public class WmsMaterialServiceImpl extends ServiceImpl<WmsMaterialMapper, WmsMa
@Override @Override
public void add(WmsMaterial wmsMaterial) { public void add(WmsMaterial wmsMaterial) {
VUtil.trueThrowBusinessError(wmsMaterial.getVersion()==1
&& lambdaQuery().eq(WmsMaterial::getNo, wmsMaterial.getNo()).exists())
.throwMessage("SAP料号已存在");
save(wmsMaterial); save(wmsMaterial);
auditLogService.addInsert(WmsMaterial.class, wmsMaterial, wmsMaterial.getCreateBy()); auditLogService.addInsert(WmsMaterial.class, wmsMaterial, wmsMaterial.getCreateBy());
} }

View File

@ -3,7 +3,7 @@
<mapper namespace="com.nflg.wms.repository.mapper.MenuMapper"> <mapper namespace="com.nflg.wms.repository.mapper.MenuMapper">
<select id="getButtonsByMenuId" resultType="com.nflg.wms.common.pojo.vo.ButtonVO"> <select id="getButtonsByMenuId" resultType="com.nflg.wms.common.pojo.vo.ButtonVO">
SELECT DISTINCT mb.name, mb.code SELECT DISTINCT mb.id,mb.name, mb.code
FROM role r FROM role r
INNER JOIN role_button_map rbm ON r.id = rbm.role_id INNER JOIN role_button_map rbm ON r.id = rbm.role_id
INNER JOIN menu_button mb ON rbm.button_id = mb.id INNER JOIN menu_button mb ON rbm.button_id = mb.id

View File

@ -14,7 +14,7 @@
</select> </select>
<select id="getMenusByRoleCodes" resultType="com.nflg.wms.common.pojo.vo.MenuVO"> <select id="getMenusByRoleCodes" resultType="com.nflg.wms.common.pojo.vo.MenuVO">
SELECT DISTINCT m.id, m.name, m.url, m.component, m.parent_id AS "parentId", m.show SELECT DISTINCT m.id, m.name, m.url, m.component, m.parent_id AS "parentId", m.show,m.sort
FROM role r FROM role r
INNER JOIN role_menu_map rmm ON r.id = rmm.role_id INNER JOIN role_menu_map rmm ON r.id = rmm.role_id
INNER JOIN menu m ON rmm.menu_id = m.id INNER JOIN menu m ON rmm.menu_id = m.id

View File

@ -2,4 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.UsageGuideMapper"> <mapper namespace="com.nflg.wms.repository.mapper.UsageGuideMapper">
<select id="getFiles" resultType="com.nflg.wms.common.pojo.vo.UsageGuideVO">
SELECT g.*,d.name AS "category_name"
FROM usage_guide g
LEFT JOIN dictionary_item d ON g.category_id=d."id"
<where>
<if test="categoryId != null">
g.category_id = #{categoryId}
</if>
</where>
order by g.id desc
</select>
</mapper> </mapper>

View File

@ -31,7 +31,7 @@ public class DeployTest {
sshUtil.connect("192.168.163.84", 22, "root", "CMP2025nf"); sshUtil.connect("192.168.163.84", 22, "root", "CMP2025nf");
//处理主jar包 //处理主jar包
handleFile(sshUtil, localPath + jarName, remotePath + jarName); handleFile(sshUtil, localPath + jarName, remotePath + jarName);
// //处理lib目录 //处理lib目录
// handleDir(sshUtil, localPath, remotePath, "lib"); // handleDir(sshUtil, localPath, remotePath, "lib");
//执行脚本启动服务 //执行脚本启动服务
sshUtil.exec("cd " + remotePath + " && ./restart.sh"); sshUtil.exec("cd " + remotePath + " && ./restart.sh");