工具库生产准备
This commit is contained in:
parent
1d9e31b5fa
commit
19b97b234b
File diff suppressed because it is too large
Load Diff
134
ktg-mes/src/main/java/com/ktg/mes/md/domain/BaseKnifeLocked.java
Normal file
134
ktg-mes/src/main/java/com/ktg/mes/md/domain/BaseKnifeLocked.java
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
package com.ktg.mes.md.domain;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.ktg.common.annotation.Excel;
|
||||||
|
import com.ktg.common.core.domain.BaseEntity;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 台账锁定对象 BASE_KNIFE_LOCKED
|
||||||
|
*
|
||||||
|
* @author yinjinlu
|
||||||
|
* @date 2024-12-09
|
||||||
|
*/
|
||||||
|
public class BaseKnifeLocked extends BaseEntity
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 刀具台账 */
|
||||||
|
@Excel(name = "刀具台账")
|
||||||
|
private Long baseKnifeId;
|
||||||
|
|
||||||
|
/** 计划单 */
|
||||||
|
@Excel(name = "计划单")
|
||||||
|
private String planSheet;
|
||||||
|
|
||||||
|
/** 计划单 */
|
||||||
|
@Excel(name = "物料编码")
|
||||||
|
private String itemCode;
|
||||||
|
|
||||||
|
/** 锁定开始时间 */
|
||||||
|
@Excel(name = "锁定开始时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date lockedStartTime;
|
||||||
|
|
||||||
|
/** 锁定结束时间 */
|
||||||
|
@Excel(name = "锁定结束时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date lockedEndTime;
|
||||||
|
|
||||||
|
/** 消耗定额 */
|
||||||
|
@Excel(name = "消耗定额")
|
||||||
|
private Integer expendLife;
|
||||||
|
|
||||||
|
/** 状态 */
|
||||||
|
@Excel(name = "状态")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/** 主键ID */
|
||||||
|
private Long baseKnifeLockedId;
|
||||||
|
|
||||||
|
public void setBaseKnifeId(Long baseKnifeId)
|
||||||
|
{
|
||||||
|
this.baseKnifeId = baseKnifeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getBaseKnifeId()
|
||||||
|
{
|
||||||
|
return baseKnifeId;
|
||||||
|
}
|
||||||
|
public void setPlanSheet(String planSheet)
|
||||||
|
{
|
||||||
|
this.planSheet = planSheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPlanSheet()
|
||||||
|
{
|
||||||
|
return planSheet;
|
||||||
|
}
|
||||||
|
public void setLockedStartTime(Date lockedStartTime)
|
||||||
|
{
|
||||||
|
this.lockedStartTime = lockedStartTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getLockedStartTime()
|
||||||
|
{
|
||||||
|
return lockedStartTime;
|
||||||
|
}
|
||||||
|
public void setLockedEndTime(Date lockedEndTime)
|
||||||
|
{
|
||||||
|
this.lockedEndTime = lockedEndTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getLockedEndTime()
|
||||||
|
{
|
||||||
|
return lockedEndTime;
|
||||||
|
}
|
||||||
|
public void setBaseKnifeLockedId(Long baseKnifeLockedId)
|
||||||
|
{
|
||||||
|
this.baseKnifeLockedId = baseKnifeLockedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getBaseKnifeLockedId()
|
||||||
|
{
|
||||||
|
return baseKnifeLockedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getItemCode() {
|
||||||
|
return itemCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemCode(String itemCode) {
|
||||||
|
this.itemCode = itemCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getExpendLife() {
|
||||||
|
return expendLife;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpendLife(Integer expendLife) {
|
||||||
|
this.expendLife = expendLife;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(Integer status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
.append("baseKnifeId", getBaseKnifeId())
|
||||||
|
.append("planSheet", getPlanSheet())
|
||||||
|
.append("lockedStartTime", getLockedStartTime())
|
||||||
|
.append("lockedEndTime", getLockedEndTime())
|
||||||
|
.append("baseKnifeLockedId", getBaseKnifeLockedId())
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -42,6 +42,10 @@ public class MbbProduBom extends BaseEntity
|
|||||||
@Excel(name = "标准用量")
|
@Excel(name = "标准用量")
|
||||||
private Integer standardDosage;
|
private Integer standardDosage;
|
||||||
|
|
||||||
|
/** 标准用量 */
|
||||||
|
@Excel(name = "当期库存")
|
||||||
|
private Long currentInventory;
|
||||||
|
|
||||||
/** 预留字段1 */
|
/** 预留字段1 */
|
||||||
private String attr1;
|
private String attr1;
|
||||||
|
|
||||||
@ -154,6 +158,14 @@ public class MbbProduBom extends BaseEntity
|
|||||||
return attr4;
|
return attr4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long getCurrentInventory() {
|
||||||
|
return currentInventory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrentInventory(Long currentInventory) {
|
||||||
|
this.currentInventory = currentInventory;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
63
ktg-mes/src/main/java/com/ktg/mes/md/domain/MyConfig.java
Normal file
63
ktg-mes/src/main/java/com/ktg/mes/md/domain/MyConfig.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package com.ktg.mes.md.domain;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
public class MyConfig {
|
||||||
|
|
||||||
|
@Value("${globalConfig.toolSettingXml.localPath}")
|
||||||
|
private String toolSettingXmlPath;
|
||||||
|
|
||||||
|
@Value("${globalConfig.toolSettingXml.remoteUrl}")
|
||||||
|
private String remoteUrl;
|
||||||
|
|
||||||
|
@Value("${globalConfig.toolSettingXml.remoteUser}")
|
||||||
|
private String remoteUser;
|
||||||
|
|
||||||
|
@Value("${globalConfig.toolSettingXml.remotePass}")
|
||||||
|
private String remotePass;
|
||||||
|
|
||||||
|
@Value("${globalConfig.productionControl.path}")
|
||||||
|
private String productionControlPath;
|
||||||
|
|
||||||
|
public String getToolSettingXmlPath() {
|
||||||
|
return toolSettingXmlPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToolSettingXmlPath(String toolSettingXmlPath) {
|
||||||
|
this.toolSettingXmlPath = toolSettingXmlPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProductionControlPath() {
|
||||||
|
return productionControlPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductionControlPath(String productionControlPath) {
|
||||||
|
this.productionControlPath = productionControlPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemoteUrl() {
|
||||||
|
return remoteUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemoteUrl(String remoteUrl) {
|
||||||
|
this.remoteUrl = remoteUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemoteUser() {
|
||||||
|
return remoteUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemoteUser(String remoteUser) {
|
||||||
|
this.remoteUser = remoteUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemotePass() {
|
||||||
|
return remotePass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemotePass(String remotePass) {
|
||||||
|
this.remotePass = remotePass;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
package com.ktg.mes.md.mapper;
|
||||||
|
|
||||||
|
import com.ktg.mes.md.domain.BaseKnifeLocked;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 台账锁定Mapper接口
|
||||||
|
*
|
||||||
|
* @author yinjinlu
|
||||||
|
* @date 2024-12-09
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface BaseKnifeLockedMapper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询台账锁定
|
||||||
|
*
|
||||||
|
* @param baseKnifeLockedId 台账锁定主键
|
||||||
|
* @return 台账锁定
|
||||||
|
*/
|
||||||
|
public BaseKnifeLocked selectBaseKnifeLockedByBaseKnifeLockedId(String baseKnifeLockedId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询台账锁定列表
|
||||||
|
*
|
||||||
|
* @param baseKnifeLocked 台账锁定
|
||||||
|
* @return 台账锁定集合
|
||||||
|
*/
|
||||||
|
public List<BaseKnifeLocked> selectBaseKnifeLockedList(BaseKnifeLocked baseKnifeLocked);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增台账锁定
|
||||||
|
*
|
||||||
|
* @param baseKnifeLocked 台账锁定
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertBaseKnifeLocked(BaseKnifeLocked baseKnifeLocked);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改台账锁定
|
||||||
|
*
|
||||||
|
* @param baseKnifeLocked 台账锁定
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateBaseKnifeLocked(BaseKnifeLocked baseKnifeLocked);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除台账锁定
|
||||||
|
*
|
||||||
|
* @param baseKnifeLockedId 台账锁定主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBaseKnifeLockedByBaseKnifeLockedId(String baseKnifeLockedId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除台账锁定
|
||||||
|
*
|
||||||
|
* @param baseKnifeLockedIds 需要删除的数据主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBaseKnifeLockedByBaseKnifeLockedIds(String[] baseKnifeLockedIds);
|
||||||
|
}
|
@ -123,4 +123,6 @@ public interface BaseKnifeMapper {
|
|||||||
List<BaseKnife> selectBaseKnifeNotValidList(BaseKnife baseKnifeWrapper);
|
List<BaseKnife> selectBaseKnifeNotValidList(BaseKnife baseKnifeWrapper);
|
||||||
|
|
||||||
List<String> selectNotEmptyAreaCodeList();
|
List<String> selectNotEmptyAreaCodeList();
|
||||||
|
|
||||||
|
List<BaseKnife> selectBaseKnifeListByMbbBdMrlId(Long itemId);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.ktg.mes.md.mapper;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ktg.mes.md.domain.BaseTechnologyBom;
|
import com.ktg.mes.md.domain.BaseTechnologyBom;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工艺bomMapper接口
|
* 工艺bomMapper接口
|
||||||
@ -9,6 +10,7 @@ import com.ktg.mes.md.domain.BaseTechnologyBom;
|
|||||||
* @author yinjinlu
|
* @author yinjinlu
|
||||||
* @date 2024-11-01
|
* @date 2024-11-01
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface BaseTechnologyBomMapper
|
public interface BaseTechnologyBomMapper
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -3,6 +3,7 @@ package com.ktg.mes.md.mapper;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.ktg.mes.md.domain.WmsOutPlanDetailEntity;
|
import com.ktg.mes.md.domain.WmsOutPlanDetailEntity;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库计划明细实体Mapper接口
|
* 出库计划明细实体Mapper接口
|
||||||
@ -10,6 +11,7 @@ import com.ktg.mes.md.domain.WmsOutPlanDetailEntity;
|
|||||||
* @author yinjinlu
|
* @author yinjinlu
|
||||||
* @date 2024-11-11
|
* @date 2024-11-11
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface WmsOutPlanDetailEntityMapper {
|
public interface WmsOutPlanDetailEntityMapper {
|
||||||
/**
|
/**
|
||||||
* 查询出库计划明细实体
|
* 查询出库计划明细实体
|
||||||
|
@ -2,6 +2,7 @@ package com.ktg.mes.md.mapper;
|
|||||||
|
|
||||||
import com.ktg.mes.md.domain.WmsOutPlan;
|
import com.ktg.mes.md.domain.WmsOutPlan;
|
||||||
import com.ktg.mes.md.domain.WmsOutPlanDetail;
|
import com.ktg.mes.md.domain.WmsOutPlanDetail;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -12,6 +13,7 @@ import java.util.List;
|
|||||||
* @author yinjinlu
|
* @author yinjinlu
|
||||||
* @date 2024-11-01
|
* @date 2024-11-01
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface WmsOutPlanMapper {
|
public interface WmsOutPlanMapper {
|
||||||
/**
|
/**
|
||||||
* 查询出库计划管理
|
* 查询出库计划管理
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.ktg.mes.md.mapper;
|
package com.ktg.mes.md.mapper;
|
||||||
|
|
||||||
import com.ktg.mes.md.domain.WmsOutTask;
|
import com.ktg.mes.md.domain.WmsOutTask;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -10,6 +11,7 @@ import java.util.List;
|
|||||||
* @author yinjinlu
|
* @author yinjinlu
|
||||||
* @date 2024-11-02
|
* @date 2024-11-02
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface WmsOutTaskMapper {
|
public interface WmsOutTaskMapper {
|
||||||
/**
|
/**
|
||||||
* 查询出库任务
|
* 查询出库任务
|
||||||
|
@ -2,6 +2,7 @@ package com.ktg.mes.md.service.impl;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ktg.common.utils.DateUtils;
|
import com.ktg.common.utils.DateUtils;
|
||||||
|
import com.ktg.mes.md.mapper.BaseKnifeMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -24,6 +25,9 @@ public class BomRouteServiceImpl implements IBomRouteService
|
|||||||
@Autowired
|
@Autowired
|
||||||
private BomRouteMapper bomRouteMapper;
|
private BomRouteMapper bomRouteMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BaseKnifeMapper baseKnifeMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询BOM头
|
* 查询BOM头
|
||||||
*
|
*
|
||||||
@ -33,7 +37,11 @@ public class BomRouteServiceImpl implements IBomRouteService
|
|||||||
@Override
|
@Override
|
||||||
public BomRoute selectBomRouteByBomRouteId(Long bomRouteId)
|
public BomRoute selectBomRouteByBomRouteId(Long bomRouteId)
|
||||||
{
|
{
|
||||||
return bomRouteMapper.selectBomRouteByBomRouteId(bomRouteId);
|
BomRoute bomRoute = bomRouteMapper.selectBomRouteByBomRouteId(bomRouteId);
|
||||||
|
bomRoute.getMbbProduBomList().forEach(item -> {
|
||||||
|
item.setCurrentInventory(this.baseKnifeMapper.countBaseKnife(item.getMdItemId()));
|
||||||
|
});
|
||||||
|
return bomRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,23 +1,36 @@
|
|||||||
package com.ktg.mes.md.service.impl;
|
package com.ktg.mes.md.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.ktg.common.utils.DateUtils;
|
import com.ktg.common.utils.DateUtils;
|
||||||
|
import com.ktg.mes.cal.utils.CalendarUtil;
|
||||||
import com.ktg.mes.md.domain.*;
|
import com.ktg.mes.md.domain.*;
|
||||||
import com.ktg.mes.md.mapper.*;
|
import com.ktg.mes.md.mapper.*;
|
||||||
import com.ktg.mes.md.service.IWmsOutTaskService;
|
import com.ktg.mes.md.service.IWmsOutTaskService;
|
||||||
import com.ktg.mes.wm.domain.UcmCtBase;
|
import com.ktg.mes.wm.domain.UcmCtBase;
|
||||||
import com.ktg.mes.wm.domain.UcmCtMaterial;
|
import com.ktg.mes.wm.domain.UcmCtMaterial;
|
||||||
import com.ktg.mes.wm.domain.WmStorageArea;
|
import com.ktg.mes.wm.domain.WmStorageArea;
|
||||||
|
import com.ktg.mes.wm.domain.WmsZdTask;
|
||||||
import com.ktg.mes.wm.mapper.UcmCtBaseMapper;
|
import com.ktg.mes.wm.mapper.UcmCtBaseMapper;
|
||||||
import com.ktg.mes.wm.mapper.WmStorageAreaMapper;
|
import com.ktg.mes.wm.mapper.WmStorageAreaMapper;
|
||||||
|
import com.ktg.mes.wm.mapper.WmsZdTaskMapper;
|
||||||
|
import jcifs.smb.NtlmPasswordAuthentication;
|
||||||
|
import jcifs.smb.SmbFile;
|
||||||
|
import jcifs.smb.SmbFileInputStream;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
import javax.xml.bind.Unmarshaller;
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
|
import java.nio.file.attribute.FileTime;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,6 +68,9 @@ public class WmsOutTaskServiceImpl implements IWmsOutTaskService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UcmCtMaterialMapper2 ucmCtMaterialMapper2;
|
private UcmCtMaterialMapper2 ucmCtMaterialMapper2;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WmsZdTaskMapper wmsZdTaskMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询出库任务
|
* 查询出库任务
|
||||||
*
|
*
|
||||||
@ -239,10 +255,52 @@ public class WmsOutTaskServiceImpl implements IWmsOutTaskService {
|
|||||||
// 更新出库任务状态
|
// 更新出库任务状态
|
||||||
wmsOutTask.setTaskState("1");
|
wmsOutTask.setTaskState("1");
|
||||||
wmsOutTaskMapper.updateWmsOutTask(wmsOutTask);
|
wmsOutTaskMapper.updateWmsOutTask(wmsOutTask);
|
||||||
|
|
||||||
|
// 完成标识
|
||||||
|
boolean flag = true;
|
||||||
|
|
||||||
|
// 判断是否来自组装任务
|
||||||
|
WmsZdTask wmsZdTaskWrapper = new WmsZdTask();
|
||||||
|
wmsZdTaskWrapper.setCode(wmsOutTask.getWmsOutPlanCode());
|
||||||
|
List<WmsZdTask> wmsZdTaskList = wmsZdTaskMapper.selectWmsZdTaskList(wmsZdTaskWrapper);
|
||||||
|
if (!wmsZdTaskList.isEmpty()) {
|
||||||
|
// 获取组装任务
|
||||||
|
WmsZdTask wmsZdTask = wmsZdTaskList.get(0);
|
||||||
|
|
||||||
|
// 检测是否完成
|
||||||
|
WmsOutTask wmsOutTaskWrapper = new WmsOutTask();
|
||||||
|
wmsOutTaskWrapper.setWmsOutPlanCode(wmsZdTask.getCode());
|
||||||
|
List<WmsOutTask> wmsOutTaskList = wmsOutTaskMapper.selectWmsOutTaskList(wmsOutTaskWrapper);
|
||||||
|
|
||||||
|
// 遍历状态
|
||||||
|
for (WmsOutTask item : wmsOutTaskList) {
|
||||||
|
if (Objects.equals("0", item.getTaskState())) {
|
||||||
|
flag = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
this.wmsZdTaskFinish(wmsOutTask.getWmsOutPlanCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void wmsZdTaskFinish(String planCode) {
|
||||||
|
WmsZdTask wmsZdTaskWrapper = new WmsZdTask();
|
||||||
|
wmsZdTaskWrapper.setCode(planCode);
|
||||||
|
List<WmsZdTask> wmsZdTaskList = wmsZdTaskMapper.selectWmsZdTaskList(wmsZdTaskWrapper);
|
||||||
|
|
||||||
|
if (!wmsZdTaskList.isEmpty()) {
|
||||||
|
// 获取组装任务 更新状态
|
||||||
|
WmsZdTask wmsZdTask = wmsZdTaskList.get(0);
|
||||||
|
wmsZdTask.setStatus("1");
|
||||||
|
wmsZdTaskMapper.updateWmsZdTask(wmsZdTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public boolean autoRunWmsOutTask(Long[] wmsOutTaskIds) {
|
public boolean autoRunWmsOutTask(Long[] wmsOutTaskIds) {
|
||||||
|
@ -1,29 +1,37 @@
|
|||||||
package com.ktg.mes.wm.controller;
|
package com.ktg.mes.wm.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.ktg.common.annotation.Log;
|
import com.ktg.common.annotation.Log;
|
||||||
import com.ktg.common.core.controller.BaseController;
|
import com.ktg.common.core.controller.BaseController;
|
||||||
import com.ktg.common.core.domain.AjaxResult;
|
import com.ktg.common.core.domain.AjaxResult;
|
||||||
import com.ktg.common.core.page.TableDataInfo;
|
import com.ktg.common.core.page.TableDataInfo;
|
||||||
import com.ktg.common.enums.BusinessType;
|
import com.ktg.common.enums.BusinessType;
|
||||||
|
import com.ktg.common.utils.DateUtils;
|
||||||
import com.ktg.common.utils.StringUtils;
|
import com.ktg.common.utils.StringUtils;
|
||||||
import com.ktg.common.utils.poi.ExcelUtil;
|
import com.ktg.common.utils.poi.ExcelUtil;
|
||||||
import com.ktg.mes.md.domain.BaseKnife;
|
import com.ktg.mes.cal.utils.CalendarUtil;
|
||||||
import com.ktg.mes.md.domain.MdItem;
|
import com.ktg.mes.md.domain.*;
|
||||||
|
import com.ktg.mes.md.mapper.*;
|
||||||
import com.ktg.mes.md.service.IBaseKnifeService;
|
import com.ktg.mes.md.service.IBaseKnifeService;
|
||||||
import com.ktg.mes.md.service.IMdItemService;
|
import com.ktg.mes.md.service.IMdItemService;
|
||||||
import com.ktg.mes.wm.domain.UcmCtBase;
|
import com.ktg.mes.wm.domain.*;
|
||||||
import com.ktg.mes.wm.domain.WmStorageArea;
|
import com.ktg.mes.wm.mapper.ProductionArrangementsMapper;
|
||||||
import com.ktg.mes.wm.domain.WmsInPlanDetailEntity;
|
import com.ktg.mes.wm.mapper.WmStorageAreaMapper;
|
||||||
import com.ktg.mes.wm.domain.WmsInTask;
|
|
||||||
import com.ktg.mes.wm.service.*;
|
import com.ktg.mes.wm.service.*;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import okhttp3.MediaType;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.*;
|
||||||
import java.util.Optional;
|
|
||||||
|
import static com.ktg.generator.util.MultiModuleCodeGenerator.generateTaskCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入库任务Controller
|
* 入库任务Controller
|
||||||
@ -40,9 +48,20 @@ public class WmsInTaskController extends BaseController {
|
|||||||
private final IBaseKnifeService baseKnifeService;
|
private final IBaseKnifeService baseKnifeService;
|
||||||
private final IWmStorageAreaService wmStorageAreaService;
|
private final IWmStorageAreaService wmStorageAreaService;
|
||||||
private final IWmsInPlanDetailEntityService wmsInPlanDetailEntityService;
|
private final IWmsInPlanDetailEntityService wmsInPlanDetailEntityService;
|
||||||
|
private final WmsOutPlanDetailEntityMapper wmsOutPlanDetailEntityMapper;
|
||||||
private final IUcmCtBaseService ucmCtBaseService;
|
private final IUcmCtBaseService ucmCtBaseService;
|
||||||
private final IWmStorageLocationService wmStorageLocationService;
|
private final IWmStorageLocationService wmStorageLocationService;
|
||||||
|
private final BaseKnifeLockedMapper baseKnifeLockedMapper;
|
||||||
private final IUcmCtBaseService umcCtBaseService;
|
private final IUcmCtBaseService umcCtBaseService;
|
||||||
|
private final ProductionArrangementsMapper productionArrangementsMapper;
|
||||||
|
private final BaseTechnologyBomMapper baseTechnologyBomMapper;
|
||||||
|
private final BaseKnifeMapper baseKnifeMapper;
|
||||||
|
private final WmsOutPlanMapper wmsOutPlanMapper;
|
||||||
|
private final WmsOutTaskMapper wmsOutTaskMapper;
|
||||||
|
private final MdItemMapper mdItemMapper;
|
||||||
|
private final WmStorageAreaMapper wmStorageAreaMapper;
|
||||||
|
private final MyConfig myConfig;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询入库任务列表
|
* 查询入库任务列表
|
||||||
@ -191,6 +210,49 @@ public class WmsInTaskController extends BaseController {
|
|||||||
baseKnife.setAreaName(wmStorageArea.getAreaName());
|
baseKnife.setAreaName(wmStorageArea.getAreaName());
|
||||||
// 更新台账状态
|
// 更新台账状态
|
||||||
baseKnifeService.updateBaseKnife(baseKnife);
|
baseKnifeService.updateBaseKnife(baseKnife);
|
||||||
|
|
||||||
|
// 判断物料是否有绑定了订单
|
||||||
|
if (baseKnife.getPlanSheet() != null){
|
||||||
|
// 获取台账锁定实体并将状态设置为已完成
|
||||||
|
BaseKnifeLocked baseKnifeLockedWrapper = new BaseKnifeLocked();
|
||||||
|
baseKnifeLockedWrapper.setStatus(0);
|
||||||
|
baseKnifeLockedWrapper.setBaseKnifeId(baseKnife.getBaseKnifeId());
|
||||||
|
baseKnifeLockedWrapper.setPlanSheet(baseKnife.getPlanSheet());
|
||||||
|
List<BaseKnifeLocked> baseKnifeLockedList = baseKnifeLockedMapper.selectBaseKnifeLockedList(baseKnifeLockedWrapper);
|
||||||
|
|
||||||
|
// 获取实体并修改状态
|
||||||
|
BaseKnifeLocked baseKnifeLocked;
|
||||||
|
if (!baseKnifeLockedList.isEmpty()){
|
||||||
|
baseKnifeLocked = baseKnifeLockedList.get(0);
|
||||||
|
baseKnifeLocked.setStatus(1);
|
||||||
|
baseKnifeLockedMapper.updateBaseKnifeLocked(baseKnifeLocked);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 再次查询物料是否有预订订单
|
||||||
|
baseKnifeLockedWrapper.setPlanSheet(null);
|
||||||
|
baseKnifeLockedList = baseKnifeLockedMapper.selectBaseKnifeLockedList(baseKnifeLockedWrapper);
|
||||||
|
if (!baseKnifeLockedList.isEmpty()){
|
||||||
|
baseKnifeLocked = baseKnifeLockedList.get(0);
|
||||||
|
baseKnife.setPlanSheet(baseKnifeLocked.getPlanSheet());
|
||||||
|
baseKnife.setIsLocked(1);
|
||||||
|
baseKnife.setLockedStartTime(baseKnifeLocked.getLockedStartTime());
|
||||||
|
baseKnife.setLockedEndTime(baseKnifeLocked.getLockedEndTime());
|
||||||
|
baseKnifeService.updateBaseKnife(baseKnife);
|
||||||
|
|
||||||
|
// 检测订单是否完成,完成则出库整刀
|
||||||
|
if (this.checkFinal(baseKnifeLocked.getPlanSheet())) {
|
||||||
|
try {
|
||||||
|
this.createOutTask(baseKnifeLocked.getPlanSheet());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 订单解绑
|
||||||
|
baseKnife.setPlanSheet("");
|
||||||
|
baseKnifeService.updateBaseKnife(baseKnife);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else if (Objects.equals(wmsInTask.getPlanTypeId(), "15")) {
|
} else if (Objects.equals(wmsInTask.getPlanTypeId(), "15")) {
|
||||||
// 拆刀回库
|
// 拆刀回库
|
||||||
@ -302,4 +364,209 @@ public class WmsInTaskController extends BaseController {
|
|||||||
}
|
}
|
||||||
return toAjax(1);
|
return toAjax(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查订单完成状态
|
||||||
|
public Boolean checkFinal(String planSheet) {
|
||||||
|
// 获取订单记录
|
||||||
|
ProductionArrangements productionArrangements = productionArrangementsMapper.selectProductionArrangementsByPlanSheet(planSheet);
|
||||||
|
BaseTechnologyBom baseTechnologyBomWrapper = new BaseTechnologyBom();
|
||||||
|
baseTechnologyBomWrapper.setTechnologyCode(productionArrangements.getTechnologyCode());
|
||||||
|
List<BaseTechnologyBom> baseTechnologyBomList = baseTechnologyBomMapper.selectBaseTechnologyBomList(baseTechnologyBomWrapper);
|
||||||
|
|
||||||
|
// 判断订单锁定的物料是否足够
|
||||||
|
for (BaseTechnologyBom technologyBom : baseTechnologyBomList) {
|
||||||
|
BaseKnife baseKnifeWrapper = new BaseKnife();
|
||||||
|
baseKnifeWrapper.setPlanSheet(planSheet);
|
||||||
|
baseKnifeWrapper.setKnifeCode(technologyBom.getKnifeCode());
|
||||||
|
List<BaseKnife> baseKnifePlanSheetList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
|
||||||
|
if (baseKnifePlanSheetList.size() < technologyBom.getKnifeCount()) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查订单完成状态
|
||||||
|
@Transactional
|
||||||
|
public void createOutTask(String planSheet) throws IOException {
|
||||||
|
// 构建出库计划
|
||||||
|
WmsOutPlan outPlan = new WmsOutPlan();
|
||||||
|
outPlan.setPlanCode(planSheet);
|
||||||
|
outPlan.setWmsBusinessTypeId(16L);
|
||||||
|
outPlan.setPlanState("1");
|
||||||
|
outPlan.setPlanType("ZDCK");
|
||||||
|
// outPlan.setCreateBy(getUsername());
|
||||||
|
outPlan.setCreateTime(DateUtils.getNowDate());
|
||||||
|
wmsOutPlanMapper.insertWmsOutPlan(outPlan);
|
||||||
|
|
||||||
|
// 所有的物料
|
||||||
|
List<BaseKnife> baseKnifeResultList = new ArrayList<>();
|
||||||
|
|
||||||
|
// 获取订单记录
|
||||||
|
ProductionArrangements productionArrangements = productionArrangementsMapper.selectProductionArrangementsByPlanSheet(planSheet);
|
||||||
|
BaseTechnologyBom baseTechnologyBomWrapper = new BaseTechnologyBom();
|
||||||
|
baseTechnologyBomWrapper.setTechnologyCode(productionArrangements.getTechnologyCode());
|
||||||
|
List<BaseTechnologyBom> baseTechnologyBomList = baseTechnologyBomMapper.selectBaseTechnologyBomList(baseTechnologyBomWrapper);
|
||||||
|
|
||||||
|
// 判断订单锁定的物料是否足够
|
||||||
|
for (BaseTechnologyBom technologyBom : baseTechnologyBomList) {
|
||||||
|
BaseKnife baseKnifeWrapper = new BaseKnife();
|
||||||
|
baseKnifeWrapper.setPlanSheet(planSheet);
|
||||||
|
baseKnifeWrapper.setKnifeCode(technologyBom.getKnifeCode());
|
||||||
|
List<BaseKnife> baseKnifeLockedList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
|
||||||
|
if (baseKnifeLockedList.size() == technologyBom.getKnifeCount())
|
||||||
|
baseKnifeResultList.addAll(baseKnifeLockedList);
|
||||||
|
}
|
||||||
|
|
||||||
|
String batchNum = "SCZBPC01";
|
||||||
|
// 出库任务,进行整刀的出库
|
||||||
|
HashMap<Long, HashMap<String, List<BaseKnife>>> baseKnifeHashMapMap = new HashMap<>();
|
||||||
|
|
||||||
|
// 遍历构建map
|
||||||
|
baseKnifeResultList.forEach(item -> {
|
||||||
|
// 判断当前物料主键是否已经被收录
|
||||||
|
baseKnifeHashMapMap.computeIfAbsent(item.getMbbBdMrlId(), k -> new HashMap<>());
|
||||||
|
|
||||||
|
// 判断当前库位编码是否已经被收录
|
||||||
|
baseKnifeHashMapMap.get(item.getMbbBdMrlId()).computeIfAbsent(item.getAreaCode(), k -> new ArrayList<>());
|
||||||
|
|
||||||
|
// 对当前台账对象进行收录
|
||||||
|
baseKnifeHashMapMap.get(item.getMbbBdMrlId()).get(item.getAreaCode()).add(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成出库计划明细
|
||||||
|
WmsOutPlan outPlanTemp = outPlan;
|
||||||
|
baseKnifeHashMapMap.keySet().forEach(mdItemId -> {
|
||||||
|
MdItem mdItemOutPlan = mdItemMapper.selectMdItemById(mdItemId);
|
||||||
|
// 根据库位编码遍历
|
||||||
|
baseKnifeHashMapMap.get(mdItemId).keySet().forEach(areaCode -> {
|
||||||
|
// 获得库位对象
|
||||||
|
WmStorageArea wmStorageAreaOutPlan = wmStorageAreaMapper.selectWmStorageAreaByAreaCode(areaCode);
|
||||||
|
|
||||||
|
WmsOutPlanDetail outPlanDetail = new WmsOutPlanDetail();
|
||||||
|
outPlanDetail.setWmsOutPlanId(outPlanTemp.getWmsOutPlanId());
|
||||||
|
outPlanDetail.setMdItemId(mdItemId);
|
||||||
|
outPlanDetail.setMdItemCode(mdItemOutPlan.getItemCode());
|
||||||
|
outPlanDetail.setMdItemName(mdItemOutPlan.getItemName());
|
||||||
|
outPlanDetail.setMdItemUnit(mdItemOutPlan.getUnitName());
|
||||||
|
outPlanDetail.setPlannedQuantity(baseKnifeHashMapMap.get(mdItemId).get(areaCode).size());
|
||||||
|
outPlanDetail.setRealQuantity(baseKnifeHashMapMap.get(mdItemId).get(areaCode).size());
|
||||||
|
outPlanDetail.setDetailBatchNum(batchNum);
|
||||||
|
outPlanDetail.setWmStorageAreaId(wmStorageAreaOutPlan.getAreaId());
|
||||||
|
outPlanDetail.setWmStorageAreaCode(wmStorageAreaOutPlan.getAreaCode());
|
||||||
|
outPlanDetail.setWmStorageAreaName(wmStorageAreaOutPlan.getAreaName());
|
||||||
|
outPlanDetail.setDetailState("1");
|
||||||
|
outPlanDetail.setCreateTime(DateUtils.getNowDate());
|
||||||
|
wmsOutPlanMapper.insertWmsOutPlanDetail(outPlanDetail);
|
||||||
|
|
||||||
|
// 遍历台账对象
|
||||||
|
baseKnifeHashMapMap.get(mdItemId).get(areaCode).forEach(item -> {
|
||||||
|
// 构建出库计划明细实体
|
||||||
|
WmsOutPlanDetailEntity wmsOutPlanDetailEntity = new WmsOutPlanDetailEntity();
|
||||||
|
wmsOutPlanDetailEntity.setWmsOutPlanDetailId(outPlanDetail.getWmsOutPlanDetailId());
|
||||||
|
wmsOutPlanDetailEntity.setBaseKnifeId(item.getBaseKnifeId());
|
||||||
|
wmsOutPlanDetailEntity.setAreaCode(item.getAreaCode());
|
||||||
|
wmsOutPlanDetailEntity.setItemOrProduct(item.getItemOrProduct());
|
||||||
|
wmsOutPlanDetailEntity.setKnifeCode(item.getKnifeCode());
|
||||||
|
wmsOutPlanDetailEntity.setKnifeName(item.getKnifeName());
|
||||||
|
wmsOutPlanDetailEntity.setPlanSheet(item.getPlanSheet());
|
||||||
|
wmsOutPlanDetailEntity.setKnifeLife(item.getKnifeLife());
|
||||||
|
wmsOutPlanDetailEntity.setResetCount(item.getResetCount());
|
||||||
|
wmsOutPlanDetailEntity.setKnifeUnit(item.getKnifeUnit());
|
||||||
|
wmsOutPlanDetailEntity.setSafeStock(item.getKnifeType());
|
||||||
|
wmsOutPlanDetailEntity.setStandardQuantity(item.getStandardQuantity());
|
||||||
|
wmsOutPlanDetailEntity.setCreateTime(DateUtils.getNowDate());
|
||||||
|
wmsOutPlanDetailEntityMapper.insertWmsOutPlanDetailEntity(wmsOutPlanDetailEntity);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成出库任务
|
||||||
|
WmsOutTask wmsOutTask = new WmsOutTask();
|
||||||
|
wmsOutTask.setWmsOutPlanId(outPlanTemp.getWmsOutPlanId());
|
||||||
|
wmsOutTask.setWmsOutPlanCode(outPlanTemp.getPlanCode());
|
||||||
|
wmsOutTask.setWmsOutPlanDetailId(outPlanDetail.getWmsOutPlanDetailId());
|
||||||
|
// 出库类型 12组刀出库
|
||||||
|
wmsOutTask.setWmsBusinessTypeId(12L);
|
||||||
|
wmsOutTask.setTaskCode(generateTaskCode("CKT"));
|
||||||
|
wmsOutTask.setTaskNumber(outPlanDetail.getPlannedQuantity());
|
||||||
|
wmsOutTask.setOutNumber(outPlanDetail.getRealQuantity());
|
||||||
|
wmsOutTask.setWmStorageAreaId(outPlanDetail.getWmStorageAreaId());
|
||||||
|
wmsOutTask.setBatchNum(batchNum);
|
||||||
|
wmsOutTask.setMdItemId(outPlanDetail.getMdItemId());
|
||||||
|
wmsOutTask.setMdItemCode(outPlanDetail.getMdItemCode());
|
||||||
|
wmsOutTask.setMdItemName(outPlanDetail.getMdItemName());
|
||||||
|
wmsOutTask.setMdItemUnit(outPlanDetail.getMdItemUnit());
|
||||||
|
wmsOutTask.setTaskState("0");
|
||||||
|
wmsOutTask.setRecipientUsername("");
|
||||||
|
wmsOutTask.setCreateTime(DateUtils.getNowDate());
|
||||||
|
wmsOutTaskMapper.insertWmsOutTask(wmsOutTask);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
productionArrangements.setStatus(1);
|
||||||
|
productionArrangementsMapper.updateProductionArrangements(productionArrangements);
|
||||||
|
|
||||||
|
// 给产线控制系统发指令
|
||||||
|
this.productionArrangementsIsOk(productionArrangements);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 调用生产准备完成接口
|
||||||
|
public void productionArrangementsIsOk(ProductionArrangements productionArrangements) throws IOException {
|
||||||
|
// 产线控制系统生产准备完成接口
|
||||||
|
String url = myConfig.getProductionControlPath() + "/cutterapi/cutComplete";
|
||||||
|
|
||||||
|
// 请求客户端
|
||||||
|
OkHttpClient client = new OkHttpClient();
|
||||||
|
|
||||||
|
// 构建请求数据
|
||||||
|
Map<String, Object> requestMap = new HashMap<>();
|
||||||
|
requestMap.put("prodordercode", productionArrangements.getPlanSheet());
|
||||||
|
requestMap.put("result", "0");
|
||||||
|
requestMap.put("completetime", CalendarUtil.getDateTimeStr());
|
||||||
|
|
||||||
|
// 获取工艺信息
|
||||||
|
BaseTechnologyBom technologyBomWrapper = new BaseTechnologyBom();
|
||||||
|
technologyBomWrapper.setTechnologyCode(productionArrangements.getTechnologyCode());
|
||||||
|
List<BaseTechnologyBom> technologyBomList = baseTechnologyBomMapper.selectBaseTechnologyBomList(technologyBomWrapper);
|
||||||
|
|
||||||
|
BaseKnife baseKnifeWrapper = new BaseKnife();
|
||||||
|
baseKnifeWrapper.setPlanSheet(productionArrangements.getPlanSheet());
|
||||||
|
|
||||||
|
// 获取刀具信息
|
||||||
|
List<Map<String, String>> cutterList = new ArrayList<>();
|
||||||
|
technologyBomList.forEach(baseTechnologyBom -> {
|
||||||
|
baseKnifeWrapper.setKnifeCode(baseTechnologyBom.getKnifeCode());
|
||||||
|
List<BaseKnife> baseKnifeList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
|
||||||
|
baseKnifeList.forEach(baseKnife -> {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
map.put("specno", baseTechnologyBom.getProcessCode());
|
||||||
|
map.put("code", baseKnife.getKnifeCode());
|
||||||
|
map.put("name", baseKnife.getKnifeName());
|
||||||
|
map.put("life", baseKnife.getKnifeLife().toString());
|
||||||
|
cutterList.add(map);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
requestMap.put("cutterinfo", cutterList);
|
||||||
|
|
||||||
|
// 构建请求数据
|
||||||
|
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
|
||||||
|
okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSON.toJSONString(requestMap));
|
||||||
|
|
||||||
|
// 请求体
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.post(requestBody)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
try(Response response = client.newCall(request).execute()) {
|
||||||
|
if (!response.isSuccessful())
|
||||||
|
throw new IOException("Unexpected code " + response);
|
||||||
|
|
||||||
|
// 请求响应
|
||||||
|
String responseBody = response.body().string();
|
||||||
|
System.out.println(responseBody);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
package com.ktg.mes.wm.domain;
|
package com.ktg.mes.wm.domain;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
import com.ktg.common.annotation.Excel;
|
import com.ktg.common.annotation.Excel;
|
||||||
import com.ktg.common.core.domain.BaseEntity;
|
import com.ktg.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.sql.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产准备记录对象 PRODUCTION_ARRANGEMENTS
|
* 生产准备记录对象 PRODUCTION_ARRANGEMENTS
|
||||||
@ -35,6 +36,12 @@ public class ProductionArrangements extends BaseEntity
|
|||||||
@Excel(name = "状态")
|
@Excel(name = "状态")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date startTime;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
/** 预留字段1 */
|
/** 预留字段1 */
|
||||||
@Excel(name = "预留字段1")
|
@Excel(name = "预留字段1")
|
||||||
private String attr1;
|
private String attr1;
|
||||||
@ -133,6 +140,23 @@ public class ProductionArrangements extends BaseEntity
|
|||||||
return attr4;
|
return attr4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Date getStartTime() {
|
||||||
|
return startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartTime(Date startTime) {
|
||||||
|
this.startTime = startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getEndTime() {
|
||||||
|
return endTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEndTime(Date endTime) {
|
||||||
|
this.endTime = endTime;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "ProductionArrangements{" +
|
return "ProductionArrangements{" +
|
||||||
|
@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ktg.mes.wm.domain.ProductionArrangements;
|
import com.ktg.mes.wm.domain.ProductionArrangements;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产准备记录Mapper接口
|
* 生产准备记录Mapper接口
|
||||||
@ -9,6 +10,7 @@ import com.ktg.mes.wm.domain.ProductionArrangements;
|
|||||||
* @author yinjinlu
|
* @author yinjinlu
|
||||||
* @date 2024-11-18
|
* @date 2024-11-18
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface ProductionArrangementsMapper
|
public interface ProductionArrangementsMapper
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -113,8 +113,8 @@ public class WmsInTaskServiceImpl implements IWmsInTaskService {
|
|||||||
task.setCellY(wmStorageArea.getPositionY().toString());
|
task.setCellY(wmStorageArea.getPositionY().toString());
|
||||||
task.setCellZ(wmStorageArea.getPositionZ().toString());
|
task.setCellZ(wmStorageArea.getPositionZ().toString());
|
||||||
|
|
||||||
List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetailEntityService.selectWmsInPlanDetailEntityList(wmsInPlanDetailEntityQuery);
|
// List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetailEntityService.selectWmsInPlanDetailEntityList(wmsInPlanDetailEntityQuery);
|
||||||
task.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList);
|
// task.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList);
|
||||||
wmsInTaskList.add(task);
|
wmsInTaskList.add(task);
|
||||||
});
|
});
|
||||||
return wmsInTaskList;
|
return wmsInTaskList;
|
||||||
|
@ -74,6 +74,9 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ProductionArrangementsMapper productionArrangementsMapper;
|
private ProductionArrangementsMapper productionArrangementsMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BaseKnifeLockedMapper baseKnifeLockedMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询组装任务
|
* 查询组装任务
|
||||||
*
|
*
|
||||||
@ -176,18 +179,25 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
|
|
||||||
// 查询工艺bom
|
// 查询工艺bom
|
||||||
BaseTechnologyBom technologyBom = new BaseTechnologyBom();
|
BaseTechnologyBom technologyBom = new BaseTechnologyBom();
|
||||||
|
ProductionArrangements productionArrangements = new ProductionArrangements();
|
||||||
Boolean lockedFlag = false;
|
Boolean lockedFlag = false;
|
||||||
// attr4 组装任务所属计划单, 如果为空则是手动组装任务不需要锁定
|
// 如果为空则是手动组装任务不需要锁定, 不为空说明是组装任务生成的计划单
|
||||||
if (zdTask.getPlanSheet() != null) {
|
if (zdTask.getPlanSheet() != null) {
|
||||||
lockedFlag = true;
|
lockedFlag = true;
|
||||||
|
// 获取工序工艺bom
|
||||||
BaseTechnologyBom technologyBomWrapper = new BaseTechnologyBom();
|
BaseTechnologyBom technologyBomWrapper = new BaseTechnologyBom();
|
||||||
technologyBomWrapper.setProcessCode(zdTask.getProcessCode());
|
technologyBomWrapper.setProcessCode(zdTask.getProcessCode());
|
||||||
MdItem mdItemTemp = mdItemMapper.selectMdItemById(zdTask.getmProductId());
|
MdItem mdItemTemp = mdItemMapper.selectMdItemById(zdTask.getmProductId());
|
||||||
technologyBomWrapper.setKnifeCode(mdItemTemp.getItemCode());
|
technologyBomWrapper.setKnifeCode(mdItemTemp.getItemCode());
|
||||||
technologyBom = baseTechnologyBomMapper.selectBaseTechnologyBomList(technologyBomWrapper).get(0);
|
technologyBom = baseTechnologyBomMapper.selectBaseTechnologyBomList(technologyBomWrapper).get(0);
|
||||||
|
|
||||||
|
// 获取生产准备记录中的锁定开始结束时间
|
||||||
|
ProductionArrangements productionArrangementsWrapper = new ProductionArrangements();
|
||||||
|
productionArrangementsWrapper.setPlanSheet(zdTask.getPlanSheet());
|
||||||
|
productionArrangements = productionArrangementsMapper.selectProductionArrangementsList(productionArrangementsWrapper).get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 出库基础物料, 根据图号查询出库计划,如果不存在生成计划,存在则往计划中添加任务
|
// 出库基础物料, 根据订单号查询出库计划,如果不存在生成计划,存在则往计划中添加任务
|
||||||
WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(zdTask.getCode());
|
WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(zdTask.getCode());
|
||||||
if (outPlan == null) {
|
if (outPlan == null) {
|
||||||
// 构建新的出库计划
|
// 构建新的出库计划
|
||||||
@ -220,15 +230,16 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
baseKnife.setKnifeLife(100);
|
baseKnife.setKnifeLife(100);
|
||||||
baseKnife.setKnifeFineState(1);
|
baseKnife.setKnifeFineState(1);
|
||||||
baseKnife.setIsValid(1);
|
baseKnife.setIsValid(1);
|
||||||
// 判断是否需要锁定整刀
|
// 判断是否需要锁定整刀,来自订单的组装任务需要锁定
|
||||||
if (lockedFlag) {
|
if (lockedFlag) {
|
||||||
baseKnife.setIsLocked(1);
|
baseKnife.setIsLocked(1);
|
||||||
baseKnife.setKnifeFineState(2);
|
baseKnife.setKnifeFineState(1);
|
||||||
baseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
|
baseKnife.setLockedStartTime(productionArrangements.getStartTime());
|
||||||
baseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
|
baseKnife.setLockedEndTime(productionArrangements.getEndTime());
|
||||||
} else {
|
} else {
|
||||||
baseKnife.setIsLocked(0);
|
baseKnife.setIsLocked(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// attr4 计划编码, 整刀
|
// attr4 计划编码, 整刀
|
||||||
baseKnife.setPlanSheet(zdTask.getPlanSheet());
|
baseKnife.setPlanSheet(zdTask.getPlanSheet());
|
||||||
baseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
|
baseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
|
||||||
@ -237,6 +248,19 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
baseKnife.setCreateTime(DateUtils.getNowDate());
|
baseKnife.setCreateTime(DateUtils.getNowDate());
|
||||||
baseKnifeMapper.insertBaseKnife(baseKnife);
|
baseKnifeMapper.insertBaseKnife(baseKnife);
|
||||||
|
|
||||||
|
if (lockedFlag) {
|
||||||
|
// 添加物料锁定记录
|
||||||
|
BaseKnifeLocked baseKnifeLocked = new BaseKnifeLocked();
|
||||||
|
baseKnifeLocked.setPlanSheet(zdTask.getPlanSheet());
|
||||||
|
baseKnifeLocked.setBaseKnifeId(baseKnife.getBaseKnifeId());
|
||||||
|
baseKnifeLocked.setItemCode(mdItem.getItemCode());
|
||||||
|
baseKnifeLocked.setExpendLife(technologyBom.getExpendLife());
|
||||||
|
baseKnifeLocked.setStatus(0);
|
||||||
|
baseKnifeLocked.setLockedStartTime(productionArrangements.getStartTime());
|
||||||
|
baseKnifeLocked.setLockedEndTime(productionArrangements.getEndTime());
|
||||||
|
baseKnifeLockedMapper.insertBaseKnifeLocked(baseKnifeLocked);
|
||||||
|
}
|
||||||
|
|
||||||
// 锁定物料
|
// 锁定物料
|
||||||
int resetCount = 0;
|
int resetCount = 0;
|
||||||
for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
|
for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
|
||||||
@ -249,11 +273,9 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
int bomCount = mbbProduBom.getStandardDosage();
|
int bomCount = mbbProduBom.getStandardDosage();
|
||||||
for (BaseKnife wmsBaseKnife : baseKnifeList) {
|
for (BaseKnife wmsBaseKnife : baseKnifeList) {
|
||||||
if (bomCount > 0) {
|
if (bomCount > 0) {
|
||||||
|
// 绑定到组装任务 和 整刀父id
|
||||||
wmsBaseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
|
wmsBaseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
|
||||||
wmsBaseKnife.setIsLocked(1);
|
wmsBaseKnife.setIsLocked(1);
|
||||||
wmsBaseKnife.setKnifeFineState(2);
|
|
||||||
wmsBaseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
|
|
||||||
wmsBaseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
|
|
||||||
wmsBaseKnife.setParentId(baseKnife.getBaseKnifeId());
|
wmsBaseKnife.setParentId(baseKnife.getBaseKnifeId());
|
||||||
wmsBaseKnife.setPlanSheet(zdTask.getPlanSheet());
|
wmsBaseKnife.setPlanSheet(zdTask.getPlanSheet());
|
||||||
baseKnifeListOutPlan.add(wmsBaseKnife);
|
baseKnifeListOutPlan.add(wmsBaseKnife);
|
||||||
@ -268,6 +290,9 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
|
|
||||||
// 更新重置次数
|
// 更新重置次数
|
||||||
baseKnife.setResetCount(resetCount - 1);
|
baseKnife.setResetCount(resetCount - 1);
|
||||||
|
// 设置rfid, 为整刀编码加序号 例如整刀编码为 aaa 则整刀rfid为 aaa0001 aaa0002, 传个i:在当前事务中新增的台账还没提交,所以把循环系数加上
|
||||||
|
baseKnife.setRfid(this.getProductRfid(zdTask.getmProductId(), i));
|
||||||
|
|
||||||
baseKnifeMapper.updateBaseKnife(baseKnife);
|
baseKnifeMapper.updateBaseKnife(baseKnife);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,7 +374,7 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
wmsOutTask.setMdItemCode(outPlanDetail.getMdItemCode());
|
wmsOutTask.setMdItemCode(outPlanDetail.getMdItemCode());
|
||||||
wmsOutTask.setMdItemName(outPlanDetail.getMdItemName());
|
wmsOutTask.setMdItemName(outPlanDetail.getMdItemName());
|
||||||
wmsOutTask.setMdItemUnit(outPlanDetail.getMdItemUnit());
|
wmsOutTask.setMdItemUnit(outPlanDetail.getMdItemUnit());
|
||||||
wmsOutTask.setTaskState("1");
|
wmsOutTask.setTaskState("0");
|
||||||
wmsOutTask.setRecipientUsername("");
|
wmsOutTask.setRecipientUsername("");
|
||||||
wmsOutTask.setCreateBy(getUsername());
|
wmsOutTask.setCreateBy(getUsername());
|
||||||
wmsOutTask.setCreateTime(DateUtils.getNowDate());
|
wmsOutTask.setCreateTime(DateUtils.getNowDate());
|
||||||
@ -358,11 +383,24 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 更新组装任务
|
// 更新组装任务
|
||||||
zdTask.setStatus("1");
|
zdTask.setStatus("3");
|
||||||
wmsZdTaskMapper.updateWmsZdTask(zdTask);
|
wmsZdTaskMapper.updateWmsZdTask(zdTask);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getProductRfid(Long itemId, int i){
|
||||||
|
MdItem mdItem = mdItemMapper.selectMdItemById(itemId);
|
||||||
|
|
||||||
|
// 获取最大的RFID 然后加1 : RFID为物料的编码加序号
|
||||||
|
List<BaseKnife> baseKnifeList = baseKnifeMapper.selectBaseKnifeListByMbbBdMrlId(itemId);
|
||||||
|
if (baseKnifeList.isEmpty()) return mdItem.getItemCode() + String.format("%04d", 1);
|
||||||
|
else {
|
||||||
|
String index = baseKnifeList.get(0).getRfid().substring(baseKnifeList.get(0).getRfid().length() - 4);
|
||||||
|
Integer indexInt = Integer.parseInt(index) + 1 + i;
|
||||||
|
return mdItem.getItemCode() + String.format("%04d", indexInt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@ -377,15 +415,16 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
|
|
||||||
// 整刀入库计划, 根据图号查询入库计划,如果不存在生成计划,存在则往计划中添加任务
|
// 整刀入库计划, 根据图号查询入库计划,如果不存在生成计划,存在则往计划中添加任务
|
||||||
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
|
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
|
||||||
WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(zdTask.getCode());
|
WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(zdTask.getPlanSheet());
|
||||||
if (wmsInPlan == null) {
|
if (wmsInPlan == null) {
|
||||||
WmsInPlan wmsInPlanTemp = new WmsInPlan();
|
WmsInPlan wmsInPlanTemp = new WmsInPlan();
|
||||||
wmsInPlanTemp.setState("1");
|
wmsInPlanTemp.setState("1");
|
||||||
wmsInPlanTemp.setSourceType("SGLR");
|
wmsInPlanTemp.setSourceType(zdTask.getPlanSheet() != null ? "SCZB" : "ZZRW");
|
||||||
wmsInPlanTemp.setCellCode(wmStorageArea.getAreaCode());
|
wmsInPlanTemp.setCellCode(wmStorageArea.getAreaCode());
|
||||||
wmsInPlanTemp.setPlanCode(zdTask.getCode());
|
wmsInPlanTemp.setPlanCode(zdTask.getPlanSheet() != null ? zdTask.getPlanSheet() : zdTask.getCode());
|
||||||
wmsInPlanTemp.setRelBillCode("组装单据");
|
wmsInPlanTemp.setRelBillCode("组装单据");
|
||||||
wmsInPlanTemp.setPlanTypeId(13L);
|
wmsInPlanTemp.setPlanTypeId(9L);
|
||||||
|
wmsInPlanTemp.setPlanTypeCode("ZDHK");
|
||||||
wmsInPlanTemp.setCreateBy(getUsername());
|
wmsInPlanTemp.setCreateBy(getUsername());
|
||||||
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
|
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
|
||||||
|
|
||||||
@ -426,6 +465,9 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
wmsInPlanService.updateWmsInPlan(wmsInPlan);
|
wmsInPlanService.updateWmsInPlan(wmsInPlan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 复查一遍入库计划
|
||||||
|
WmsInPlan inPlanTemp = wmsInPlanService.selectWmsInPlanByPlanId(wmsInPlan.getPlanId());
|
||||||
|
|
||||||
// 入库任务
|
// 入库任务
|
||||||
MdItem mdItem = mdItemMapper.selectMdItemById(zdTask.getmProductId());
|
MdItem mdItem = mdItemMapper.selectMdItemById(zdTask.getmProductId());
|
||||||
WmsInTask wmsInTask = new WmsInTask();
|
WmsInTask wmsInTask = new WmsInTask();
|
||||||
@ -441,7 +483,9 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
wmsInTask.setBatch(batchNum);
|
wmsInTask.setBatch(batchNum);
|
||||||
wmsInTask.setMaterialId(zdTask.getmProductId().toString());
|
wmsInTask.setMaterialId(zdTask.getmProductId().toString());
|
||||||
wmsInTask.setPlanTypeId("9");
|
wmsInTask.setPlanTypeId("9");
|
||||||
wmsInTask.setPlanInStatus("1");
|
wmsInTask.setPlanTypeCode("ZDHK");
|
||||||
|
wmsInTask.setPlanInStatus("0");
|
||||||
|
wmsInTask.setDetailInId(inPlanTemp.getWmsInPlanDetailsList().get(0).getDetailsId());
|
||||||
wmsInTask.setCreateBy(getUsername());
|
wmsInTask.setCreateBy(getUsername());
|
||||||
wmsInTask.setCreateTime(DateUtils.getNowDate());
|
wmsInTask.setCreateTime(DateUtils.getNowDate());
|
||||||
wmsInTaskMapper.insertWmsInTask(wmsInTask);
|
wmsInTaskMapper.insertWmsInTask(wmsInTask);
|
||||||
@ -453,6 +497,7 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
|
|||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String checkTaskCodeUnique(WmsZdTask wmsZdTask) {
|
public String checkTaskCodeUnique(WmsZdTask wmsZdTask) {
|
||||||
WmsZdTask zdTask = wmsZdTaskMapper.checkTaskCodeUnique(wmsZdTask);
|
WmsZdTask zdTask = wmsZdTaskMapper.checkTaskCodeUnique(wmsZdTask);
|
||||||
|
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ktg.mes.md.mapper.BaseKnifeLockedMapper">
|
||||||
|
|
||||||
|
<resultMap type="BaseKnifeLocked" id="BaseKnifeLockedResult">
|
||||||
|
<result property="baseKnifeId" column="BASE_KNIFE_ID" />
|
||||||
|
<result property="planSheet" column="PLAN_SHEET" />
|
||||||
|
<result property="itemCode" column="ITEM_CODE" />
|
||||||
|
<result property="expendLife" column="EXPEND_LIFE" />
|
||||||
|
<result property="status" column="STATUS" />
|
||||||
|
<result property="lockedStartTime" column="LOCKED_START_TIME" />
|
||||||
|
<result property="lockedEndTime" column="LOCKED_END_TIME" />
|
||||||
|
<result property="baseKnifeLockedId" column="BASE_KNIFE_LOCKED_ID" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectBaseKnifeLockedVo">
|
||||||
|
select BASE_KNIFE_ID, PLAN_SHEET, ITEM_CODE, EXPEND_LIFE, STATUS, LOCKED_START_TIME, LOCKED_END_TIME, BASE_KNIFE_LOCKED_ID from BASE_KNIFE_LOCKED
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectBaseKnifeLockedList" parameterType="BaseKnifeLocked" resultMap="BaseKnifeLockedResult">
|
||||||
|
<include refid="selectBaseKnifeLockedVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="baseKnifeId != null and baseKnifeId != ''"> and BASE_KNIFE_ID = #{baseKnifeId}</if>
|
||||||
|
<if test="planSheet != null and planSheet != ''"> and PLAN_SHEET = #{planSheet}</if>
|
||||||
|
<if test="itemCode != null and itemCode != ''"> and ITEM_CODE = #{itemCode}</if>
|
||||||
|
<if test="expendLife != null and expendLife != ''"> and EXPEND_LIFE = #{expendLife}</if>
|
||||||
|
<if test="status != null"> and STATUS = #{status}</if>
|
||||||
|
<if test="lockedStartTime != null and lockedStartTime != ''"> and LOCKED_START_TIME = #{lockedStartTime}</if>
|
||||||
|
<if test="lockedEndTime != null and lockedEndTime != ''"> and LOCKED_END_TIME = #{lockedEndTime}</if>
|
||||||
|
</where>
|
||||||
|
order by LOCKED_START_TIME
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBaseKnifeLockedByBaseKnifeLockedId" parameterType="String" resultMap="BaseKnifeLockedResult">
|
||||||
|
<include refid="selectBaseKnifeLockedVo"/>
|
||||||
|
where BASE_KNIFE_LOCKED_ID = #{baseKnifeLockedId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertBaseKnifeLocked" parameterType="BaseKnifeLocked" useGeneratedKeys="true" keyProperty="baseKnifeLockedId">
|
||||||
|
insert into BASE_KNIFE_LOCKED
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="baseKnifeId != null">BASE_KNIFE_ID,</if>
|
||||||
|
<if test="planSheet != null">PLAN_SHEET,</if>
|
||||||
|
<if test="itemCode != null">ITEM_CODE,</if>
|
||||||
|
<if test="expendLife != null">EXPEND_LIFE,</if>
|
||||||
|
<if test="status != null">STATUS,</if>
|
||||||
|
<if test="lockedStartTime != null">LOCKED_START_TIME,</if>
|
||||||
|
<if test="lockedEndTime != null">LOCKED_END_TIME,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="baseKnifeId != null">#{baseKnifeId},</if>
|
||||||
|
<if test="planSheet != null">#{planSheet},</if>
|
||||||
|
<if test="itemCode != null">#{itemCode},</if>
|
||||||
|
<if test="expendLife != null">#{expendLife},</if>
|
||||||
|
<if test="status != null">#{status},</if>
|
||||||
|
<if test="lockedStartTime != null">#{lockedStartTime},</if>
|
||||||
|
<if test="lockedEndTime != null">#{lockedEndTime},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateBaseKnifeLocked" parameterType="BaseKnifeLocked">
|
||||||
|
update BASE_KNIFE_LOCKED
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<if test="baseKnifeId != null">BASE_KNIFE_ID = #{baseKnifeId},</if>
|
||||||
|
<if test="planSheet != null">PLAN_SHEET = #{planSheet},</if>
|
||||||
|
<if test="itemCode != null">ITEM_CODE = #{itemCode},</if>
|
||||||
|
<if test="expendLife != null">EXPEND_LIFE = #{expendLife},</if>
|
||||||
|
<if test="status != null">STATUS = #{status},</if>
|
||||||
|
<if test="lockedStartTime != null">LOCKED_START_TIME = #{lockedStartTime},</if>
|
||||||
|
<if test="lockedEndTime != null">LOCKED_END_TIME = #{lockedEndTime},</if>
|
||||||
|
</trim>
|
||||||
|
where BASE_KNIFE_LOCKED_ID = #{baseKnifeLockedId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<delete id="deleteBaseKnifeLockedByBaseKnifeLockedId" parameterType="String">
|
||||||
|
delete from BASE_KNIFE_LOCKED where BASE_KNIFE_LOCKED_ID = #{baseKnifeLockedId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteBaseKnifeLockedByBaseKnifeLockedIds" parameterType="String">
|
||||||
|
delete from BASE_KNIFE_LOCKED where BASE_KNIFE_LOCKED_ID in
|
||||||
|
<foreach item="baseKnifeLockedId" collection="array" open="(" separator="," close=")">
|
||||||
|
#{baseKnifeLockedId}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
</mapper>
|
@ -619,4 +619,15 @@
|
|||||||
WHERE KNIFE_FINE_STATE == 1
|
WHERE KNIFE_FINE_STATE == 1
|
||||||
GROUP BY AREA_CODE
|
GROUP BY AREA_CODE
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBaseKnifeListByMbbBdMrlId" resultType="com.ktg.mes.md.domain.BaseKnife">
|
||||||
|
<include refid="selectBaseKnifeVo"/>
|
||||||
|
<where>
|
||||||
|
IS_VALID = 0
|
||||||
|
<if test="mbbBdMrlId != null and mbbBdMrlId != ''">
|
||||||
|
and MBB_BD_MRL_ID = #{mbbBdMrlId}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by rfid desc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.ktg.mes.wm.mapper.ProductionArrangementsMapper">
|
<mapper namespace="com.ktg.mes.wm.mapper.ProductionArrangementsMapper">
|
||||||
|
|
||||||
<resultMap type="ProductionArrangements" id="ProductionArrangementsResult">
|
<resultMap type="ProductionArrangements" id="ProductionArrangementsResult">
|
||||||
<result property="productionArrangementsId" column="PRODUCTION_ARRANGEMENTS_ID" />
|
<result property="productionArrangementsId" column="PRODUCTION_ARRANGEMENTS_ID" />
|
||||||
<result property="planSheet" column="PLAN_SHEET" />
|
<result property="planSheet" column="PLAN_SHEET" />
|
||||||
<result property="processCode" column="PROCESS_CODE" />
|
<result property="technologyCode" column="TECHNOLOGY_CODE" />
|
||||||
<result property="status" column="STATUS" />
|
<result property="status" column="STATUS" />
|
||||||
<result property="attr1" column="ATTR1" />
|
<result property="attr1" column="ATTR1" />
|
||||||
<result property="attr2" column="ATTR2" />
|
<result property="attr2" column="ATTR2" />
|
||||||
@ -17,17 +17,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="createTime" column="CREATE_TIME" />
|
<result property="createTime" column="CREATE_TIME" />
|
||||||
<result property="updateBy" column="UPDATE_BY" />
|
<result property="updateBy" column="UPDATE_BY" />
|
||||||
<result property="updateTime" column="UPDATE_TIME" />
|
<result property="updateTime" column="UPDATE_TIME" />
|
||||||
|
<result property="startTime" column="START_TIME" />
|
||||||
|
<result property="endTime" column="END_TIME" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectProductionArrangementsVo">
|
<sql id="selectProductionArrangementsVo">
|
||||||
select PRODUCTION_ARRANGEMENTS_ID, PLAN_SHEET, PROCESS_CODE, STATUS, ATTR1, ATTR2, ATTR3, ATTR4, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME from PRODUCTION_ARRANGEMENTS
|
select PRODUCTION_ARRANGEMENTS_ID, PLAN_SHEET, TECHNOLOGY_CODE, STATUS, ATTR1, ATTR2, ATTR3, ATTR4, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, START_TIME, END_TIME from PRODUCTION_ARRANGEMENTS
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectProductionArrangementsList" parameterType="ProductionArrangements" resultMap="ProductionArrangementsResult">
|
<select id="selectProductionArrangementsList" parameterType="ProductionArrangements" resultMap="ProductionArrangementsResult">
|
||||||
<include refid="selectProductionArrangementsVo"/>
|
<include refid="selectProductionArrangementsVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="planSheet != null and planSheet != ''"> and PLAN_SHEET = #{planSheet}</if>
|
<if test="planSheet != null and planSheet != ''"> and PLAN_SHEET = #{planSheet}</if>
|
||||||
<if test="processCode != null and processCode != ''"> and PROCESS_CODE = #{processCode}</if>
|
<if test="technologyCode != null and technologyCode != ''"> and TECHNOLOGY_CODE = #{technologyCode}</if>
|
||||||
<if test="status != null and status != ''"> and STATUS = #{status}</if>
|
<if test="status != null and status != ''"> and STATUS = #{status}</if>
|
||||||
<if test="attr1 != null and attr1 != ''"> and ATTR1 = #{attr1}</if>
|
<if test="attr1 != null and attr1 != ''"> and ATTR1 = #{attr1}</if>
|
||||||
<if test="attr2 != null and attr2 != ''"> and ATTR2 = #{attr2}</if>
|
<if test="attr2 != null and attr2 != ''"> and ATTR2 = #{attr2}</if>
|
||||||
@ -37,9 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="createTime != null and createTime != ''"> and CREATE_TIME = #{createTime}</if>
|
<if test="createTime != null and createTime != ''"> and CREATE_TIME = #{createTime}</if>
|
||||||
<if test="updateBy != null and updateBy != ''"> and UPDATE_BY = #{updateBy}</if>
|
<if test="updateBy != null and updateBy != ''"> and UPDATE_BY = #{updateBy}</if>
|
||||||
<if test="updateTime != null and updateTime != ''"> and UPDATE_TIME = #{updateTime}</if>
|
<if test="updateTime != null and updateTime != ''"> and UPDATE_TIME = #{updateTime}</if>
|
||||||
|
<if test="startTime != null and startTime != ''"> and START_TIME = #{startTime}</if>
|
||||||
|
<if test="endTime != null and endTime != ''"> and END_TIME = #{endTime}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectProductionArrangementsByProductionArrangementsId" parameterType="String" resultMap="ProductionArrangementsResult">
|
<select id="selectProductionArrangementsByProductionArrangementsId" parameterType="String" resultMap="ProductionArrangementsResult">
|
||||||
<include refid="selectProductionArrangementsVo"/>
|
<include refid="selectProductionArrangementsVo"/>
|
||||||
where PRODUCTION_ARRANGEMENTS_ID = #{productionArrangementsId}
|
where PRODUCTION_ARRANGEMENTS_ID = #{productionArrangementsId}
|
||||||
@ -49,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<include refid="selectProductionArrangementsVo"/>
|
<include refid="selectProductionArrangementsVo"/>
|
||||||
where PLAN_SHEET = #{planSheet}
|
where PLAN_SHEET = #{planSheet}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="insertProductionArrangements" parameterType="ProductionArrangements" useGeneratedKeys="true" keyProperty="productionArrangementsId">
|
<insert id="insertProductionArrangements" parameterType="ProductionArrangements" useGeneratedKeys="true" keyProperty="productionArrangementsId">
|
||||||
insert into PRODUCTION_ARRANGEMENTS
|
insert into PRODUCTION_ARRANGEMENTS
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
@ -65,7 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="createTime != null">CREATE_TIME,</if>
|
<if test="createTime != null">CREATE_TIME,</if>
|
||||||
<if test="updateBy != null">UPDATE_BY,</if>
|
<if test="updateBy != null">UPDATE_BY,</if>
|
||||||
<if test="updateTime != null">UPDATE_TIME,</if>
|
<if test="updateTime != null">UPDATE_TIME,</if>
|
||||||
</trim>
|
<if test="startTime != null">START_TIME,</if>
|
||||||
|
<if test="endTime != null">END_TIME,</if>
|
||||||
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="planSheet != null">#{planSheet},</if>
|
<if test="planSheet != null">#{planSheet},</if>
|
||||||
<if test="technologyCode != null">#{technologyCode},</if>
|
<if test="technologyCode != null">#{technologyCode},</if>
|
||||||
@ -79,7 +85,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
<if test="updateBy != null">#{updateBy},</if>
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
<if test="updateTime != null">#{updateTime},</if>
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
</trim>
|
<if test="startTime != null">#{startTime},</if>
|
||||||
|
<if test="endTime != null">#{endTime},</if>
|
||||||
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateProductionArrangements" parameterType="ProductionArrangements">
|
<update id="updateProductionArrangements" parameterType="ProductionArrangements">
|
||||||
@ -96,6 +104,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="createTime != null">CREATE_TIME = #{createTime},</if>
|
<if test="createTime != null">CREATE_TIME = #{createTime},</if>
|
||||||
<if test="updateBy != null">UPDATE_BY = #{updateBy},</if>
|
<if test="updateBy != null">UPDATE_BY = #{updateBy},</if>
|
||||||
<if test="updateTime != null">UPDATE_TIME = #{updateTime},</if>
|
<if test="updateTime != null">UPDATE_TIME = #{updateTime},</if>
|
||||||
|
<if test="startTime != null">START_TIME = #{startTime},</if>
|
||||||
|
<if test="endTime != null">END_TIME = #{endTime},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where PRODUCTION_ARRANGEMENTS_ID = #{productionArrangementsId}
|
where PRODUCTION_ARRANGEMENTS_ID = #{productionArrangementsId}
|
||||||
</update>
|
</update>
|
||||||
@ -105,7 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<delete id="deleteProductionArrangementsByProductionArrangementsIds" parameterType="String">
|
<delete id="deleteProductionArrangementsByProductionArrangementsIds" parameterType="String">
|
||||||
delete from PRODUCTION_ARRANGEMENTS where PRODUCTION_ARRANGEMENTS_ID in
|
delete from PRODUCTION_ARRANGEMENTS where PRODUCTION_ARRANGEMENTS_ID in
|
||||||
<foreach item="productionArrangementsId" collection="array" open="(" separator="," close=")">
|
<foreach item="productionArrangementsId" collection="array" open="(" separator="," close=")">
|
||||||
#{productionArrangementsId}
|
#{productionArrangementsId}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
<select id="selectWmsZdTaskList" parameterType="WmsZdTask" resultMap="WmsZdTaskResult">
|
<select id="selectWmsZdTaskList" parameterType="WmsZdTask" resultMap="WmsZdTaskResult">
|
||||||
<include refid="selectWmsZdTaskVo"/>
|
<include refid="selectWmsZdTaskVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="code != null and code != ''"> and CODE like concat('%', #{code}, '%')</if>
|
<if test="code != null and code != ''"> and CODE like concat('%', #{code}, '%')</if>
|
||||||
<if test="name != null and name != ''"> and "name" like concat('%', #{name}, '%')</if>
|
<if test="name != null and name != ''"> and "name" like concat('%', #{name}, '%')</if>
|
||||||
<if test="mProductId != null and mProductId != ''"> and M_PRODUCT_ID = #{mProductId}</if>
|
<if test="mProductId != null and mProductId != ''"> and M_PRODUCT_ID = #{mProductId}</if>
|
||||||
@ -54,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="planOutId != null and planOutId != ''"> and PLAN_OUT_ID = #{planOutId}</if>
|
<if test="planOutId != null and planOutId != ''"> and PLAN_OUT_ID = #{planOutId}</if>
|
||||||
<if test="planOutType != null and planOutType != ''"> and PLAN_OUT_TYPE = #{planOutType}</if>
|
<if test="planOutType != null and planOutType != ''"> and PLAN_OUT_TYPE = #{planOutType}</if>
|
||||||
<if test="technologyBomId != null and technologyBomId != ''"> and technology_bom_id = #{technologyBomId}</if>
|
<if test="technologyBomId != null and technologyBomId != ''"> and technology_bom_id = #{technologyBomId}</if>
|
||||||
|
<if test="planSheet != null and planSheet != ''"> and plan_sheet = #{planSheet}</if>
|
||||||
<if test="qtyOk != null and qtyOk != ''"> and QTY_OK = #{qtyOk}</if>
|
<if test="qtyOk != null and qtyOk != ''"> and QTY_OK = #{qtyOk}</if>
|
||||||
<if test="remark != null and remark != ''"> and REMARK = #{remark}</if>
|
<if test="remark != null and remark != ''"> and REMARK = #{remark}</if>
|
||||||
<if test="attr1 != null and attr1 != ''"> and ATTR1 = #{attr1}</if>
|
<if test="attr1 != null and attr1 != ''"> and ATTR1 = #{attr1}</if>
|
||||||
|
Loading…
Reference in New Issue
Block a user