Merge remote-tracking branch 'origin/master2' into feature/sanxian_lms_0219

This commit is contained in:
zhangzq
2024-02-20 09:30:51 +08:00
35 changed files with 403 additions and 98 deletions

View File

@@ -300,20 +300,6 @@
<version>1.6.2</version> <version>1.6.2</version>
</dependency> </dependency>
<!-- 解析客户端操作系统、浏览器信息 -->
<!-- <dependency>-->
<!-- <groupId>nl.basjes.parse.useragent</groupId>-->
<!-- <artifactId>yauaa</artifactId>-->
<!-- <version>5.23</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>eu.bitwalker</groupId>-->
<!-- <artifactId>UserAgentUtils</artifactId>-->
<!-- <version>1.21</version>-->
<!-- </dependency>-->
<!--WQL-->
<dependency> <dependency>
<groupId>com.hynnet</groupId> <groupId>com.hynnet</groupId>
<artifactId>jxl</artifactId> <artifactId>jxl</artifactId>

View File

@@ -80,6 +80,7 @@ public enum AcsTaskEnum {
///api/dict/dictDetail/api/dict/dictDetail/api/dict/dictDetail ///api/dict/dictDetail/api/dict/dictDetail/api/dict/dictDetail
AGV_SYSTEM_NB("1","诺宝机器人任务"), AGV_SYSTEM_NB("1","诺宝机器人任务"),
AGV_SYSTEM_XC("2","叉车任务"), AGV_SYSTEM_XC("2","叉车任务"),
AGV_SYSTEM_HR("3","海柔任务"),
ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"), ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"), ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),

View File

@@ -6,6 +6,7 @@ package org.nl.common.lucene;
* @desc desc * @desc desc
*/ */
import ch.qos.logback.classic.AsyncAppender;
import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.ILoggingEvent;
import com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender; import com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -14,7 +15,8 @@ import org.slf4j.MDC;
import java.util.Map; import java.util.Map;
public class AsyncLuceneAppender extends AspectLogbackAsyncAppender { //public class AsyncLuceneAppender extends AspectLogbackAsyncAppender {
public class AsyncLuceneAppender extends AsyncAppender {
public AsyncLuceneAppender() { public AsyncLuceneAppender() {

View File

@@ -0,0 +1,19 @@
package org.nl.common.lucene;
import ch.qos.logback.classic.spi.LoggingEvent;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/*
* @author ZZQ
* @Date 2024/1/24 11:26
*/
@Data
public class LogEntity extends LoggingEvent {
private Map<String,String> propertiys = new HashMap<>();
private long timeStamp;
private String msg;
private String traceId;
}

View File

@@ -8,6 +8,7 @@ package org.nl.common.lucene;
import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Context;
import com.alibaba.ttl.TransmittableThreadLocal; import com.alibaba.ttl.TransmittableThreadLocal;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.Analyzer;
@@ -23,6 +24,7 @@ import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
@@ -32,7 +34,7 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
public static final TransmittableThreadLocal<String> traceIdTL = new TransmittableThreadLocal(); public static final TransmittableThreadLocal<String> traceIdTL = new TransmittableThreadLocal();
public LuceneProperties properties; public LuceneProperties properties;
public static Directory index; public static Directory index;
private List<LucenePropertyAndEncoder> encoders; public static List<LucenePropertyAndEncoder> encoders =new ArrayList<>();
public static IndexWriter indexWriter; public static IndexWriter indexWriter;
@@ -43,7 +45,10 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
try { try {
// 读取配置文件 // 读取配置文件
Properties properties = YmlConfigFileUtil.readConfig("config/application.yml"); Properties properties = YmlConfigFileUtil.readConfig("config/application.yml");
for (Property property : this.properties.getProperties()) {
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context);
encoders.add(encoder);
}
// 获取配置值 // 获取配置值
String luceneDir = properties.getProperty("lucene.index.path"); String luceneDir = properties.getProperty("lucene.index.path");
System.out.println("---index地址----"+luceneDir); System.out.println("---index地址----"+luceneDir);
@@ -61,26 +66,22 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
@Override @Override
protected void append(ILoggingEvent event) { protected void append(ILoggingEvent event) {
Document doc = new Document(); Document doc = new Document();
for (Property property : this.properties.getProperties()) { if (event instanceof LogEntity){
LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context); LogEntity logEntity = (LogEntity) event;
String encode = encoder.encode(event); Map<String, String> propertiys = logEntity.getPropertiys();
doc.add(new StringField(property.getName(), encode, Field.Store.YES)); propertiys.forEach((a,b)->{
} doc.add(new StringField(a, b, Field.Store.YES));
Map<String, String> map = event.getMDCPropertyMap(); });
if (!map.isEmpty() && StringUtils.isNotEmpty(map.get("traceId"))){ doc.add(new StringField("traceId",logEntity.getTraceId(), Field.Store.YES));
doc.add(new StringField("traceId",map.get("traceId"), Field.Store.YES)); doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, logEntity.getMsg(), Field.Store.YES));
}else { doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(logEntity.getTimeStamp()),Field.Store.YES));
doc.add(new StringField("traceId"," ", Field.Store.YES)); doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME,logEntity.getTimeStamp()));
} try {
indexWriter.addDocument(doc);
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, event.getFormattedMessage(), Field.Store.YES)); indexWriter.commit();
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(event.getTimeStamp()),Field.Store.YES)); } catch (Exception e) {
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, event.getTimeStamp())); e.printStackTrace();
try { }
indexWriter.addDocument(doc);
indexWriter.commit();
} catch (Exception e) {
e.printStackTrace();
} }
} }

View File

@@ -0,0 +1,64 @@
package org.nl.common.lucene.netty;
import ch.qos.logback.classic.spi.ILoggingEvent;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.jetbrains.annotations.NotNull;
import org.nl.common.lucene.LogEntity;
import org.nl.common.lucene.LuceneAppender;
import org.nl.common.lucene.LucenePropertyAndEncoder;
import org.nl.common.utils.MapOf;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
/*
* @author ZZQ
* @Date 2024/1/24 11:07
*/
public class LuceneJsonWriter extends Writer {
private StringBuilder sendBuffer;
private JsonGenerator jsonGenerator;
public LuceneJsonWriter() throws IOException {
JsonFactory jsonFactory = new JsonFactory();
jsonFactory.setRootValueSeparator(null);
this.jsonGenerator = jsonFactory.createGenerator(this);
}
public static LogEntity convertLog(ILoggingEvent event){
LogEntity logEntity = new LogEntity();
Map<String, String> map = logEntity.getPropertiys();
for (LucenePropertyAndEncoder encoder : LuceneAppender.encoders) {
map.put(encoder.getName(),encoder.encode(event));
}
String msg = String.format(event.getFormattedMessage(), event.getArgumentArray());
logEntity.setMsg(msg);
logEntity.setTimeStamp(event.getTimeStamp());
Map<String, String> mdc = event.getMDCPropertyMap();
if (!mdc.isEmpty() && StringUtils.isNotEmpty(mdc.get("traceId"))){
logEntity.setTraceId(mdc.get("traceId"));
}else {
logEntity.setTraceId(" ");
}
return logEntity;
}
@Override
public void write(@NotNull char[] cbuf, int off, int len) throws IOException {
sendBuffer.append(cbuf, off, len);
}
@Override
public void flush() throws IOException {
}
@Override
public void close() throws IOException {
}
}

View File

@@ -3,12 +3,14 @@ package org.nl.common.lucene.netty;
import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.ILoggingEvent;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.lucene.AsyncLuceneAppender; import org.nl.common.lucene.AsyncLuceneAppender;
import org.nl.common.lucene.LogEntity;
import org.nl.common.lucene.netty.AbstraceServer; import org.nl.common.lucene.netty.AbstraceServer;
import org.nl.common.lucene.netty.impl.ClientServer; import org.nl.common.lucene.netty.impl.ClientServer;
import org.nl.common.lucene.netty.impl.RemoteServer; import org.nl.common.lucene.netty.impl.RemoteServer;
@@ -31,7 +33,7 @@ import java.util.Map;
* @author ZZQ * @author ZZQ
* @Date 2024/1/22 09:06 * @Date 2024/1/22 09:06
*/ */
@Component //@Component
public class RemoteLogServer implements SmartLifecycle { public class RemoteLogServer implements SmartLifecycle {
@Autowired @Autowired
@@ -46,10 +48,12 @@ public class RemoteLogServer implements SmartLifecycle {
public static AsyncLuceneAppender asyncLuceneAppender; public static AsyncLuceneAppender asyncLuceneAppender;
public static void writeLog(ILoggingEvent event){ public static void writeLog(ILoggingEvent event){
LogEntity logEntity = LuceneJsonWriter.convertLog(event);
if (LOCAL_LOG){ if (LOCAL_LOG){
asyncLuceneAppender.appendSync(event); asyncLuceneAppender.appendSync(logEntity);
}else { }else {
ByteBuf log = Unpooled.copiedBuffer(JSON.toJSONString(event), CharsetUtil.UTF_8); String json = JSON.toJSONString(logEntity, SerializerFeature.IgnoreErrorGetter);
ByteBuf log = Unpooled.copiedBuffer(json, CharsetUtil.UTF_8);
server.channel.writeAndFlush(log); server.channel.writeAndFlush(log);
} }
}; };
@@ -58,15 +62,15 @@ public class RemoteLogServer implements SmartLifecycle {
@Override @Override
public void start() { public void start() {
try { try {
String provider = redisTemplate.opsForValue().get("providers"); String provider = redisTemplate.opsForValue().get("provider");
if (StringUtils.isEmpty(provider)){ if (StringUtils.isEmpty(provider)){
String ip = Inet4Address.getLocalHost().getHostAddress(); String ip = Inet4Address.getLocalHost().getHostAddress();
Map<String,Object> config = MapOf.of("ip", ip, "port", port); Map<String,Object> config = MapOf.of("ip", ip, "port", String.valueOf(port));
redisTemplate.opsForValue().set("provider", JSON.toJSONString(config)); redisTemplate.opsForValue().set("provider", JSON.toJSONString(config));
Runtime.getRuntime().addShutdownHook(new Thread(() ->{ Runtime.getRuntime().addShutdownHook(new Thread(() ->{
System.out.println("------服务关闭-升级从变主-------"); System.out.println("------服务关闭-升级从变主-------");
server.doClose(); server.doClose();
redisTemplate.delete("providers"); redisTemplate.delete("provider");
try { try {
Thread.sleep(5000); Thread.sleep(5000);
}catch (Exception ex){} }catch (Exception ex){}

View File

@@ -39,14 +39,13 @@ public class DruidFilter extends FilterEventAdapter {
@Override @Override
protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) { protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) {
String traceId = MDC.get("traceId");
int size = statement.getParametersSize(); int size = statement.getParametersSize();
String executeSql = sql; String executeSql = sql;
int count = 0; int count = 0;
try { try {
count=statement.getUpdateCount(); count=statement.getUpdateCount();
}catch (Exception ex){ } }catch (Exception ex){ }
if (StringUtils.isNotBlank(traceId) && count>0) { if ( count>0) {
if (size > 0) { if (size > 0) {
Collection<JdbcParameter> values = statement.getParameters().values(); Collection<JdbcParameter> values = statement.getParameters().values();
List<Object> params = new ArrayList<>(); List<Object> params = new ArrayList<>();
@@ -63,8 +62,7 @@ public class DruidFilter extends FilterEventAdapter {
public ResultSetProxy statement_getResultSet(FilterChain chain, StatementProxy statement) throws SQLException { public ResultSetProxy statement_getResultSet(FilterChain chain, StatementProxy statement) throws SQLException {
ResultSetProxy rs = super.statement_getResultSet(chain, statement); ResultSetProxy rs = super.statement_getResultSet(chain, statement);
String executeSql = statement.getLastExecuteSql(); String executeSql = statement.getLastExecuteSql();
String traceId = MDC.get("traceId"); if (true){
if (StringUtils.isNotBlank(traceId)){
int result = 0; int result = 0;
if (rs != null) { if (rs != null) {
ResultSetImpl rss = rs.getResultSetRaw().unwrap(ResultSetImpl.class); ResultSetImpl rss = rs.getResultSetRaw().unwrap(ResultSetImpl.class);

View File

@@ -406,7 +406,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
// 调用入库分配规则 // 调用入库分配规则
StIvtSectattr sect = sectattrService.getOne( StIvtSectattr sect = sectattrService.getOne(
new QueryWrapper<StIvtSectattr>().lambda() new QueryWrapper<StIvtSectattr>().lambda()
.eq(StIvtSectattr::getSect_name, "海柔半成品库区") .eq(StIvtSectattr::getSect_name, "三线半成品库区")
); );
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
jo.put("sect_id", sect.getSect_id()); jo.put("sect_id", sect.getSect_id());

View File

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.AcsUtil; import org.nl.common.utils.AcsUtil;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
@@ -137,6 +138,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
@Override @Override
public Map<String, Object> issueTaskToAcs4(JSONArray arr) { public Map<String, Object> issueTaskToAcs4(JSONArray arr) {
String HR_TASK_TYPE = "18";
JSONArray form = new JSONArray(); JSONArray form = new JSONArray();
for (Object o : arr) { for (Object o : arr) {
JSONObject task = (JSONObject) o; JSONObject task = (JSONObject) o;
@@ -148,13 +150,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
, "task_group_id", task.getString("task_group_id") , "task_group_id", task.getString("task_group_id")
, "start_point_code", task.getString("point_code1") , "start_point_code", task.getString("point_code1")
, "next_point_code", task.getString("point_code3") , "next_point_code", task.getString("point_code3")
, "task_type", "18" , "task_type", HR_TASK_TYPE
, "storage_task_type", task.getString("acs_task_type") , "storage_task_type", task.getString("acs_task_type")
, "task_group_id", StringUtils.isBlank(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id") , "task_group_id", StringUtils.isBlank(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id")
, "priority", task.getString("priority") , "priority", task.getString("priority")
, "is_send", task.getBoolean("is_send")?"1":"0" , "is_send", task.getBoolean("is_send")?"1":"0"
, "vehicle_code", task.getString("vehicle_code") , "vehicle_code", task.getString("vehicle_code")
, "agv_system_type", task.getString("agv_system_type") , "agv_system_type", AcsTaskEnum.AGV_SYSTEM_HR.getCode()
, "acs", "A3_acs_url"
)); ));
form.add(param); form.add(param);
} }

View File

@@ -18,6 +18,9 @@
mater.material_name LIKE '%${query.material_code}%' or mater.material_name LIKE '%${query.material_code}%' or
mater.material_spec LIKE '%${query.material_code}%') mater.material_spec LIKE '%${query.material_code}%')
</if> </if>
<if test="query.product_area != null and query.product_area != ''">
AND mater.product_area = #{query.product_area}
</if>
order by mater.material_code ASC order by mater.material_code ASC
</select> </select>

View File

@@ -90,6 +90,9 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
case "05": case "05":
code = "VEHICCLE_CODE_LX"; code = "VEHICCLE_CODE_LX";
break; break;
case "06":
code = "VEHICCLE_CODE_HR";
break;
} }
JSONArray resultCodeArr = new JSONArray(); JSONArray resultCodeArr = new JSONArray();
int num = MapUtil.getInt(map, "num"); int num = MapUtil.getInt(map, "num");
@@ -120,7 +123,7 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
} }
MdMeMaterialbase one = iMdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>() MdMeMaterialbase one = iMdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
.eq("material_code", vorm.getString("material_code")) .eq("material_code", vorm.getString("material_code"))
.eq("is_delete",false)); .eq("is_delete",false));
if (one==null){ if (one==null){
throw new BadRequestException("当前物料编号不存在:"+vorm.getString("material_code")); throw new BadRequestException("当前物料编号不存在:"+vorm.getString("material_code"));
} }
@@ -208,6 +211,9 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
case "05": case "05":
term = "VEHICCLE_CODE_LX"; term = "VEHICCLE_CODE_LX";
break; break;
case "06":
term = "VEHICCLE_CODE_HR";
break;
} }
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();

View File

@@ -20,6 +20,7 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
import org.nl.wms.ext_manage.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.ext_manage.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask;
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
@@ -166,7 +167,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
} }
JSONArray array = new JSONArray(); JSONArray array = new JSONArray();
array.add(JSON.toJSON(task)); array.add(JSON.toJSON(task));
Map<String, Object> result = WmsToAcsServiceImpl.staticIssueTaskToAcs(array); Map<String, Object> result;
if (task.getProduct_area().equals("A3")){
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
result = bean.issueTaskToAcs4(array);
}else {
result = WmsToAcsServiceImpl.staticIssueTaskToAcs(array);
}
String status = String.valueOf(result.get("status")); String status = String.valueOf(result.get("status"));
if (!status.equals("200")) { if (!status.equals("200")) {
throw new BadRequestException(result.get("message") != null ? String.valueOf(result.get("message")) : "acs反馈异常"); throw new BadRequestException(result.get("message") != null ? String.valueOf(result.get("message")) : "acs反馈异常");
@@ -215,7 +223,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
task.put("point_code1",start); task.put("point_code1",start);
task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); task.put("task_status",StatusEnum.TASK_START_END_P.getCode());
task.put("task_group_id", IdUtil.getStringId()); task.put("task_group_id", IdUtil.getStringId());
return task; return task;
} }

View File

@@ -0,0 +1,85 @@
package org.nl.wms.storage_manage.pda.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.MapOf;
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorOrderQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* <p>
* 手持半成品出入库顺序 前端控制器
* </p>
*
* @author Liuxy
* @since 2023-08-30
*/
@RestController
@RequestMapping("/api/pda/hrBcp/order")
public class PdaStHrBcpOrderController {
@Autowired
protected IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入顺序服务
@GetMapping
@Log("获取出入库顺序表")
@SaIgnore
public ResponseEntity<Object> getMaterial(HrBcpIostorOrderQuery query, PageQuery page) {
Page<StIvtIostorinvOrder> result = iStIvtIostorinvOrderService.page(page.build(), query.build());
return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK);
}
@PostMapping("/list")
@Log("获取出入库顺序表")
@SaIgnore
public ResponseEntity<Object> getorders(@RequestBody JSONObject param) {
String bar_code = param.getString("bar_code");
HrBcpIostorOrderQuery query = new HrBcpIostorOrderQuery();
if (StringUtils.isNotEmpty(bar_code)){
query.setBar_code(bar_code);
}
Page<StIvtIostorinvOrder> result = iStIvtIostorinvOrderService.page(new Page<>(param.getInteger("page"),param.getInteger("size")), query.build());
return new ResponseEntity<>(MapOf.of("message","操作成功","totalCount",result.getTotal(),"data",result.getRecords()), HttpStatus.OK);
}
@PostMapping
@Log("update顺序表")
@SaIgnore
public ResponseEntity<Object> getMaterial(@RequestBody StIvtIostorinvOrder order) {
if (order!=null){
iStIvtIostorinvOrderService.updateById(order);
}
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/delete")
@Log("删除入库顺序表")
@SaIgnore
public ResponseEntity<Object> delete(@RequestBody Long[] ids){
if (ids!=null && ids.length>0){
iStIvtIostorinvOrderService.removeByIds(Arrays.asList(ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,25 @@
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto;
import lombok.Data;
import org.nl.common.domain.query.BaseQuery;
import org.nl.common.domain.query.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
/*
* @author LXY
* @Date 2023/08/01 19:49
*/
@Data
public class HrBcpIostorOrderQuery extends BaseQuery<StIvtIostorinvOrder> {
/**
* 载具码
*/
private String bar_code;
/**
* 出入库类型
*/
private String type;
}

View File

@@ -15,6 +15,7 @@ public class PdaQuery extends BaseQuery<StIvtShutframeinvBcp> {
private String material_code; private String material_code;
private String product_area;
@Override @Override
public void paramMapping() { public void paramMapping() {

View File

@@ -80,7 +80,7 @@ public class PdaStHrBcpEmpOutServiceImpl implements PdaStHrBcpEmpOutService {
StIvtSectattr sect = sectattrService.getOne( StIvtSectattr sect = sectattrService.getOne(
new QueryWrapper<StIvtSectattr>().lambda() new QueryWrapper<StIvtSectattr>().lambda()
.eq(StIvtSectattr::getSect_name, "海柔半成品库区") .eq(StIvtSectattr::getSect_name, "三线半成品库区")
); );
List<StIvtStructattr> list = new ArrayList<>(); List<StIvtStructattr> list = new ArrayList<>();

View File

@@ -65,10 +65,12 @@ public class PdaStHrBcpInServiceImpl implements PdaStHrBcpInService {
List<MdMeMaterialbase> list1 = iMdMeMaterialbaseService.list( List<MdMeMaterialbase> list1 = iMdMeMaterialbaseService.list(
new QueryWrapper<MdMeMaterialbase>().lambda() new QueryWrapper<MdMeMaterialbase>().lambda()
.eq(MdMeMaterialbase::getMaterial_type_id, "1528555445302726656") .eq(MdMeMaterialbase::getMaterial_type_id, "1528555445302726656")
.eq(MdMeMaterialbase::getProduct_area, "A3")
); );
list = list1.subList(0, Math.min(list1.size(), size)); list = list1.subList(0, Math.min(list1.size(), size));
totalCount = list1.size(); totalCount = list1.size();
} else { } else {
whereJson.setProduct_area("A3");
List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery); List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery);
list = list1.subList(0, Math.min(list1.size(), size)); list = list1.subList(0, Math.min(list1.size(), size));
totalCount = list1.size(); totalCount = list1.size();

View File

@@ -60,7 +60,7 @@ public class IosHrTask extends AbstractAcsTask {
// 2.判断device_code2、barcode2 是否为空 // 2.判断device_code2、barcode2 是否为空
if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) {
param.put("device_code", json.getString("device_code2")); param.put("device_code", json.getString("device_code1"));
param.put("barcode", json.getString("barcode2")); param.put("barcode", json.getString("barcode2"));
iStIvtIostorinvHrBcpInService.fullIn(param); iStIvtIostorinvHrBcpInService.fullIn(param);
} }
@@ -78,7 +78,7 @@ public class IosHrTask extends AbstractAcsTask {
// 2.判断device_code2、barcode2 是否为空 // 2.判断device_code2、barcode2 是否为空
if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) {
param.put("device_code", json.getString("device_code2")); param.put("device_code", json.getString("device_code1"));
param.put("barcode", json.getString("barcode2")); param.put("barcode", json.getString("barcode2"));
iStIvtIostorinvEmpBcpService.InEmp(param); iStIvtIostorinvEmpBcpService.InEmp(param);
} }
@@ -97,7 +97,7 @@ public class IosHrTask extends AbstractAcsTask {
// 2.判断device_code2、barcode2 是否为空 // 2.判断device_code2、barcode2 是否为空
if (ObjectUtil.isNotEmpty(json.getString("device_code2"))) { if (ObjectUtil.isNotEmpty(json.getString("device_code2"))) {
param.put("device_code", json.getString("device_code2")); param.put("device_code", json.getString("device_code1"));
iStIvtIostorinvEmpBcpService.OutEmp(param); iStIvtIostorinvEmpBcpService.OutEmp(param);
} }
} }

View File

@@ -228,5 +228,7 @@ public class StIvtIostorinvHrBcp implements Serializable {
*/ */
private String point_code; private String point_code;
private String workprocedure_id;
} }

View File

@@ -76,7 +76,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe
// 1.找一个空货位 // 1.找一个空货位
StIvtSectattr sect = sectattrService.getOne( StIvtSectattr sect = sectattrService.getOne(
new QueryWrapper<StIvtSectattr>().lambda() new QueryWrapper<StIvtSectattr>().lambda()
.eq(StIvtSectattr::getSect_name, "海柔半成品库区") .eq(StIvtSectattr::getSect_name, "三线半成品库区")
); );
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
@@ -173,7 +173,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe
// 1.找一个空载具的货位 // 1.找一个空载具的货位
StIvtSectattr sect = sectattrService.getOne( StIvtSectattr sect = sectattrService.getOne(
new QueryWrapper<StIvtSectattr>().lambda() new QueryWrapper<StIvtSectattr>().lambda()
.eq(StIvtSectattr::getSect_name, "海柔半成品库区") .eq(StIvtSectattr::getSect_name, "三线半成品库区")
); );
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();

View File

@@ -174,6 +174,7 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
mst.setBase_bill_code(row.getString("base_bill_code")); mst.setBase_bill_code(row.getString("base_bill_code"));
mst.setQty_unit_name(row.getString("base_unit_name")); mst.setQty_unit_name(row.getString("base_unit_name"));
mst.setUnit_weight(row.getBigDecimal("unit_weight")); mst.setUnit_weight(row.getBigDecimal("unit_weight"));
mst.setWorkprocedure_id(row.getString("workprocedure_id"));
// 载具信息 // 载具信息
{ {
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
@@ -275,6 +276,7 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
.canuse_qty(mst.getPlan_qty()) .canuse_qty(mst.getPlan_qty())
.workshop_id(mst.getWorkshop_id()) .workshop_id(mst.getWorkshop_id())
.unit_weight(mst.getUnit_weight()) .unit_weight(mst.getUnit_weight())
.workprocedure_id(mst.getWorkprocedure_id())
.build(); .build();
structivtBcpService.save(ivtDao); structivtBcpService.save(ivtDao);
@@ -303,14 +305,18 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
.set(MdPbStoragevehicleext::getMaterial_id, mst.getMaterial_id()) .set(MdPbStoragevehicleext::getMaterial_id, mst.getMaterial_id())
.set(MdPbStoragevehicleext::getStorage_qty, mst.getPlan_qty()) .set(MdPbStoragevehicleext::getStorage_qty, mst.getPlan_qty())
); );
if (StringUtils.isNotEmpty(mst.getStoragevehicle_code())){
iStIvtIostorinvOrderService.remove(new QueryWrapper<StIvtIostorinvOrder>().eq("bar_code",mst.getStoragevehicle_code()));
}
// 更新任务为完成 // 更新任务为完成
iSchBaseTaskService.update( iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda() new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getTask_id, mst.getTask_id()) .eq(SchBaseTask::getTask_id, mst.getTask_id())
); );
//删除入库顺序表
iStIvtIostorinvOrderService.remove(new UpdateWrapper<StIvtIostorinvOrder>()
.eq("bar_code",mst.getStoragevehicle_code()));
return null; return null;
} }
@@ -452,6 +458,7 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
new QueryWrapper<StIvtIostorinvOrder>().lambda() new QueryWrapper<StIvtIostorinvOrder>().lambda()
.eq(StIvtIostorinvOrder::getIn_device, device_code) .eq(StIvtIostorinvOrder::getIn_device, device_code)
.eq(StIvtIostorinvOrder::getBar_code, barcode) .eq(StIvtIostorinvOrder::getBar_code, barcode)
.eq(StIvtIostorinvOrder::getIs_delete, false)
.eq(StIvtIostorinvOrder::getType, IOSEnum.IO_TYPE.code("入库")) .eq(StIvtIostorinvOrder::getType, IOSEnum.IO_TYPE.code("入库"))
.orderByDesc(StIvtIostorinvOrder::getCreate_time) .orderByDesc(StIvtIostorinvOrder::getCreate_time)
, false , false
@@ -502,11 +509,13 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinv
); );
// 解锁仓位 // 解锁仓位
structattrService.update( if (mstDao !=null){
new UpdateWrapper<StIvtStructattr>().lambda() structattrService.update(
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) new UpdateWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStruct_id, mstDao.getStruct_id()) .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); .eq(StIvtStructattr::getStruct_id, mstDao.getStruct_id())
);
}
// 删除任务 // 删除任务
iSchBaseTaskService.update( iSchBaseTaskService.update(

View File

@@ -305,16 +305,16 @@ public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl<StIvtIostorin
@Transactional @Transactional
public StIvtStructivtBcp autoConfirmout(JSONObject form) { public StIvtStructivtBcp autoConfirmout(JSONObject form) {
StIvtStructivtBcp bcpStruct = RedissonUtils.lockAndReturn(() -> { StIvtStructivtBcp bcpStruct = RedissonUtils.lockAndReturn(() -> {
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id"))); MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("stor_id", form.getString("stor_id")); param.put("stor_id", form.getString("stor_id"));
param.put("sect_id", form.getString("sect_id")); param.put("sect_id", form.getString("sect_id"));
param.put("material_id", form.getString("material_id")); param.put("material_id", form.getString("material_id"));
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2); param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
// 2.锁定仓位 // 2.锁定仓位
StIvtStructivtBcp stIvtStructivtBcp; StIvtStructivtBcp stIvtStructivtBcp;
if (form.get("stIvtStructivt")==null){ if (form.get("stIvtStructivt")==null){
stIvtStructivtBcp = divRuleCpService.divRuleOutBcp(param); stIvtStructivtBcp = divRuleCpService.divRuleOutBcp(param);
}else { }else {
stIvtStructivtBcp=(StIvtStructivtBcp)form.get("stIvtStructivt"); stIvtStructivtBcp=(StIvtStructivtBcp)form.get("stIvtStructivt");
} }
@@ -442,7 +442,7 @@ public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl<StIvtIostorin
this.save(mst); this.save(mst);
this.lockStruct(structattr[0].getStruct_code(), "出库锁",mst.getTask_id()); this.lockStruct(structattr[0].getStruct_code(), "出库锁",mst.getTask_id());
} }
} ,"banchengpin_ruku",2); } ,"banchengpin_ruku",2);
return structattr[0]; return structattr[0];
} }
@@ -468,6 +468,8 @@ public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl<StIvtIostorin
.task_group_id(IdUtil.getStringId()) .task_group_id(IdUtil.getStringId())
.point_code3(mst.getPoint_code()) .point_code3(mst.getPoint_code())
.point_code1(mst.getStruct_code()) .point_code1(mst.getStruct_code())
.extParam(MapOf.of("material_id",mst.getMaterial_id(),
"material_qty",mst.getPlan_qty(),"table_fk_id",mst.getIostorinv_id()))
.vehicle_code(mst.getStoragevehicle_code()) .vehicle_code(mst.getStoragevehicle_code())
.product_area(mst.getWorkshop_id()) .product_area(mst.getWorkshop_id())
.callback((Consumer<String>) mst::setTask_id) .callback((Consumer<String>) mst::setTask_id)

View File

@@ -81,7 +81,7 @@ public class StIvtMoveinvHrBcpServiceImpl extends ServiceImpl<StIvtMoveinvHrBcpM
// 新增 // 新增
mst.setMoveinv_id(IdUtil.getStringId()); mst.setMoveinv_id(IdUtil.getStringId());
mst.setBill_code(CodeUtil.getNewCode("BCP_MOVE_CODE")); mst.setBill_code(CodeUtil.getNewCode("MOVE_CODE"));
mst.setBuss_type(form.getString("buss_type")); mst.setBuss_type(form.getString("buss_type"));
mst.setBill_type(form.getString("buss_type")); mst.setBill_type(form.getString("buss_type"));
mst.setStor_id(form.getString("stor_id")); mst.setStor_id(form.getString("stor_id"));
@@ -309,8 +309,8 @@ public class StIvtMoveinvHrBcpServiceImpl extends ServiceImpl<StIvtMoveinvHrBcpM
// 更新任务 // 更新任务
taskService.update( taskService.update(
new UpdateWrapper<SchBaseTask>().lambda() new UpdateWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getTask_id, form.getString("task_id")) .eq(SchBaseTask::getTask_id, form.getString("task_id"))
.set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) .set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
); );
break; break;

View File

@@ -76,7 +76,7 @@ public class StIvtMoveinvdtlHrBcpServiceImpl extends ServiceImpl<StIvtMoveinvdtl
StIvtMoveinvdtlHrBcp moveinvdtlCp = list.get(0); StIvtMoveinvdtlHrBcp moveinvdtlCp = list.get(0);
PointEvent event = PointEvent.builder() PointEvent event = PointEvent.builder()
.type(AcsTaskEnum.TASK_STRUCT_BCP_HR_MOVE) .type(AcsTaskEnum.TASK_STRUCT_BCP_HR_MOVE)
.acs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()) .acs_task_type("19")
.task_group_id(IdUtil.getStringId()) .task_group_id(IdUtil.getStringId())
.point_code1(form.getString("turnout_struct_code")) .point_code1(form.getString("turnout_struct_code"))
.point_code3(form.getString("turnin_struct_code")) .point_code3(form.getString("turnin_struct_code"))

View File

@@ -101,5 +101,9 @@ public class StIvtStructivtHrBcp implements Serializable {
*/ */
private BigDecimal unit_weight; private BigDecimal unit_weight;
/**
* 工序标识
*/
private String workprocedure_id;
} }

View File

@@ -50,6 +50,9 @@
<if test="query.sect_id != null and query.sect_id != ''"> <if test="query.sect_id != null and query.sect_id != ''">
and sa.sect_id = #{query.sect_id} and sa.sect_id = #{query.sect_id}
</if> </if>
<if test="query.sect_code != null and query.sect_code != ''">
and sa.sect_code = #{query.sect_code}
</if>
<if test="query.struct_search != null and query.struct_search != ''"> <if test="query.struct_search != null and query.struct_search != ''">
and (sa.struct_code = #{query.struct_search} OR sa.struct_name = #{query.struct_search}) and (sa.struct_code = #{query.struct_search} OR sa.struct_name = #{query.struct_search})
</if> </if>
@@ -123,7 +126,8 @@
attr.sect_code, attr.sect_code,
attr.sect_name, attr.sect_name,
attr.stor_name, attr.stor_name,
attr.storagevehicle_code attr.storagevehicle_code,
attr.lock_type
FROM FROM
st_ivt_structivt_hr_bcp ivt st_ivt_structivt_hr_bcp ivt
LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id

View File

@@ -16,6 +16,8 @@ public class StructIvtHrBcpQuery extends BaseQuery<StIvtStructivtBcp> {
private String sect_id; private String sect_id;
private String sect_code;
private String struct_search; private String struct_search;
private String material_search; private String material_search;

View File

@@ -51,6 +51,7 @@ public class StIvtStructivtHrBcpServiceImpl extends ServiceImpl<StIvtStructivtHr
@Override @Override
public Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery pageQuery) { public Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery pageQuery) {
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
query.setSect_code("HKQ001");
List<Map> mst_detail = this.baseMapper.getBcpIvt(query, pageQuery); List<Map> mst_detail = this.baseMapper.getBcpIvt(query, pageQuery);
TableDataInfo<Map> build = TableDataInfo.build(mst_detail); TableDataInfo<Map> build = TableDataInfo.build(mst_detail);
build.setTotalElements(page.getTotal()); build.setTotalElements(page.getTotal());

View File

@@ -34,11 +34,12 @@
</encoder> </encoder>
</appender> </appender>
<!--异步到文件--> <!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender"> <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>2</discardingThreshold> <discardingThreshold>2</discardingThreshold>
<queueSize>500</queueSize> <queueSize>500</queueSize>
<appender-ref ref="FILE"/> <appender-ref ref="FILE"/>
</appender> </appender>
<appender name="luceneAppender" class="org.nl.common.lucene.LuceneAppender" > <appender name="luceneAppender" class="org.nl.common.lucene.LuceneAppender" >
<properties> <properties>
<property> <property>
@@ -76,9 +77,10 @@
<queueSize>512</queueSize> <queueSize>512</queueSize>
</appender> </appender>
<!--开发环境:打印控制台-->
<springProfile name="dev"> <springProfile name="dev3">
<root level="debug"> <root level="info">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>
</root> </root>
<logger name="jdbc" level="ERROR" additivity="true"> <logger name="jdbc" level="ERROR" additivity="true">
@@ -106,17 +108,10 @@
<appender-ref ref="asyncFileAppender"/> <appender-ref ref="asyncFileAppender"/>
</logger> </logger>
</springProfile> </springProfile>
<springProfile name="dev3">
<root level="info">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<springProfile name="prod"> <springProfile name="prod">
<root level="info"> <root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncLuceneAppender"/> <appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/>
</root> </root>
<logger name="jdbc" level="ERROR" additivity="true"> <logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/> <appender-ref ref="asyncFileAppender"/>

View File

@@ -151,6 +151,19 @@
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码"/> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称"/> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称"/>
<el-table-column show-overflow-tooltip prop="workprocedure_id" label="所属工序">
<template slot-scope="scope">
<el-select v-model="form.tableData[scope.$index].workprocedure_id"
class="filter-item" placeholder="所属工序" size="small" style="width: 280px">
<el-option
v-for="item in workprocedureList"
:key="item.workprocedure_id"
:label="item.workprocedure_name"
:value="item.workprocedure_id"
/>
</el-select>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格"/> <el-table-column show-overflow-tooltip prop="material_spec" label="物料规格"/>
<el-table-column show-overflow-tooltip prop="plan_qty" label="数量()"> <el-table-column show-overflow-tooltip prop="plan_qty" label="数量()">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -217,6 +230,7 @@ import crudsemiproductIn from '@/views/wms/storage_manage/semiproducthr/semiprod
import MaterDtl from '@/views/wms/pub/MaterDialog' import MaterDtl from '@/views/wms/pub/MaterDialog'
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata' import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
import crudPoint from '@/views/wms/scheduler_manage/point/point' import crudPoint from '@/views/wms/scheduler_manage/point/point'
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
const defaultForm = { const defaultForm = {
bill_code: '', bill_code: '',
@@ -257,6 +271,7 @@ export default {
materType: '01', materType: '01',
storlist: [], storlist: [],
pointList: [], pointList: [],
workprocedureList: [],
billtypelist: [], billtypelist: [],
rules: { rules: {
product_code: [ product_code: [
@@ -283,6 +298,9 @@ export default {
crudStorattr.getStor({'stor_type': '5'}).then(res => { crudStorattr.getStor({'stor_type': '5'}).then(res => {
this.storlist = res.content this.storlist = res.content
}) })
crudWorkProcedure.downSelect({ product_area: 'A3' }).then(res => {
this.workprocedureList = res
})
const area_type = 'A3_BCPRK01' const area_type = 'A3_BCPRK01'
crudPoint.getPoint({ 'area_type': area_type }).then(res => { crudPoint.getPoint({ 'area_type': area_type }).then(res => {
this.pointList = res this.pointList = res

View File

@@ -105,6 +105,11 @@
<el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="workprocedure_id" label="所属工序">
<template slot-scope="scope">
{{ getprocedurename(scope.row) }}
</template>
</el-table-column>
<el-table-column prop="pcsn" label="批次" width="150" align="center" /> <el-table-column prop="pcsn" label="批次" width="150" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量(个)" align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量(个)" align="center" />
<el-table-column prop="qty_unit_name" label="单位" align="center" /> <el-table-column prop="qty_unit_name" label="单位" align="center" />
@@ -124,6 +129,8 @@
import { crud } from '@crud/crud' import { crud } from '@crud/crud'
import crudsemiproductIn from '@/views/wms/storage_manage/semiproducthr/semiproducthrIn/semiproducthrIn' import crudsemiproductIn from '@/views/wms/storage_manage/semiproducthr/semiproducthrIn/semiproducthrIn'
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
export default { export default {
name: 'ViewDialog', name: 'ViewDialog',
@@ -145,6 +152,7 @@ export default {
tableDtl: [], tableDtl: [],
tabledis: [], tabledis: [],
billtypelist: [], billtypelist: [],
workprocedureList: {},
storlist: [], storlist: [],
currentdtl: null, currentdtl: null,
currentDis: {}, currentDis: {},
@@ -164,7 +172,17 @@ export default {
} }
}, },
methods: { methods: {
getprocedurename(row) {
return this.workprocedureList.get(row.workprocedure_id)
},
open() { open() {
crudWorkProcedure.downSelect({ product_area: 'A3' }).then(res => {
var procedures = new Map();
res.forEach(item => {
procedures.set(item.workprocedure_id,item.workprocedure_name)
})
this.workprocedureList = procedures
})
this.queryTableDtl() this.queryTableDtl()
}, },
close() { close() {

View File

@@ -91,9 +91,15 @@
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_name" label="物料名称" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_name" label="物料名称" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
<el-table-column show-overflow-tooltip min-width="120" prop="lock_type" label="锁定类型" />
<el-table-column show-overflow-tooltip min-width="120" prop="workprocedure_id" label="所属工序" >
<template slot-scope="scope">
{{ getprocedurename(scope.row) }}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" /> <el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
<el-table-column show-overflow-tooltip prop="canuse_qty" label="可用数量(个)" :formatter="crud.formatNum3" /> <el-table-column show-overflow-tooltip prop="canuse_qty" label="可用数量(个)" :formatter="crud.formatNum3" />
<!-- <el-table-column show-overflow-tooltip prop="unit_name" label="单位" />--> <!-- <el-table-column show-overflow-tooltip prop="unit_name" label="单位" />-->
<el-table-column show-overflow-tooltip prop="instorage_time" label="入库时间" min-width="150" /> <el-table-column show-overflow-tooltip prop="instorage_time" label="入库时间" min-width="150" />
</el-table> </el-table>
<!--分页组件--> <!--分页组件-->
@@ -111,6 +117,8 @@ import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker/index' import DateRangePicker from '@/components/DateRangePicker/index'
import crudStorattr, { getStor } from '@/views/wms/storage_manage/basedata/basedata' import crudStorattr, { getStor } from '@/views/wms/storage_manage/basedata/basedata'
import semiproductivt from '@/views/wms/storage_manage/semiproducthr/semiproducthrIvt/semiproducthrivt' import semiproductivt from '@/views/wms/storage_manage/semiproducthr/semiproducthrIvt/semiproducthrivt'
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
export default { export default {
name: 'ProductIn', name: 'ProductIn',
@@ -130,6 +138,7 @@ export default {
return { return {
height: document.documentElement.clientHeight - 180 + 'px;', height: document.documentElement.clientHeight - 180 + 'px;',
permission: {}, permission: {},
workprocedureList: {},
storlist: [], storlist: [],
storId: null storId: null
} }
@@ -141,11 +150,21 @@ export default {
} }
}, },
created() { created() {
crudWorkProcedure.downSelect({ product_area: 'A3' }).then(res => {
var procedures = new Map();
res.forEach(item => {
procedures.set(item.workprocedure_id,item.workprocedure_name)
})
this.workprocedureList = procedures
})
crudStorattr.getStor({ 'stor_type': '5' }).then(res => { crudStorattr.getStor({ 'stor_type': '5' }).then(res => {
this.storlist = res.content this.storlist = res.content
}) })
}, },
methods: { methods: {
getprocedurename(row){
return this.workprocedureList.get(row.workprocedure_id)
},
downloadMethod() { downloadMethod() {
semiproductivt.exportFile(this.query).then(res => { semiproductivt.exportFile(this.query).then(res => {
this.crud.notify('导出成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('导出成功', CRUD.NOTIFICATION_TYPE.SUCCESS)

View File

@@ -2,8 +2,8 @@ import request from '@/utils/request'
export function del(ids) { export function del(ids) {
return request({ return request({
url: '/api/pda/hrBcp/order', url: '/api/pda/hrBcp/order/delete',
method: 'delete', method: 'post',
data: ids data: ids
}) })
} }

View File

@@ -13,7 +13,7 @@
<el-form-item label="箱码"> <el-form-item label="箱码">
<label slot="label">箱码:</label> <label slot="label">箱码:</label>
<el-input <el-input
v-model="query.type" v-model="query.bar_code"
clearable clearable
style="width: 180px" style="width: 180px"
placeholder="载具号" placeholder="载具号"
@@ -42,7 +42,18 @@
</div> </div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'--> <!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" /> <crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
icon="el-icon-position"
size="mini"
type="danger"
@click="force(crud.selections)"
>
强制雀润
</el-button>
</crudOperation>
<!--表格渲染--> <!--表格渲染-->
<el-table <el-table
ref="table" ref="table"
@@ -52,6 +63,7 @@
style="width: 100%;" style="width: 100%;"
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
> >
<el-table-column type="selection" width="55"/>
<el-table-column prop="workshop_id" label="车间" min-width="100" show-overflow-tooltip /> <el-table-column prop="workshop_id" label="车间" min-width="100" show-overflow-tooltip />
<el-table-column prop="type" label="出入库类型" min-width="100" show-overflow-tooltip /> <el-table-column prop="type" label="出入库类型" min-width="100" show-overflow-tooltip />
<el-table-column prop="order_id" label="顺序id" min-width="100" show-overflow-tooltip /> <el-table-column prop="order_id" label="顺序id" min-width="100" show-overflow-tooltip />
@@ -142,8 +154,19 @@ export default {
created() { created() {
}, },
methods: { methods: {
force(rows){
if (rows.length > 0){
let ids = []
rows.forEach((item) => {
ids.push(item.order_id)
})
crudHrorder.del(ids).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
}
}
} }
} }
</script> </script>